package word.w2004;
import junit.framework.Assert;
import org.junit.Test;
import word.api.interfaces.IElement;
import word.utils.TestUtils;
import word.w2004.elements.Heading1;
import word.w2004.elements.Heading2;
import word.w2004.elements.Heading3;
import word.w2004.style.HeadingStyle;
public class HeadingTest extends Assert{
@Test
public void testH1Style(){
Heading1 h1 = (Heading1) Heading1.with("222222").withStyle().bold().italic().create();
assertEquals(2, TestUtils.regexCount(h1.getContent(), "<*w:rPr>"));
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:jc w:val=\"left\" />")); //default is left
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:b/>"));
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:i/>"));
}
@Test
public void testH1(){
Heading1 h1 = Heading1.with("h1");
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:p wsp:rsidR*"));
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:t>h1</w:t>"));
assertEquals(1, TestUtils.regexCount(h1.getContent(), "</w:p>"));
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:pStyle w:val=\"Heading1\" />"));
}
@Test
public void testH1fluent(){
Heading1 h1 = Heading1.with("h1").create();
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:p wsp:rsidR*"));
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:t>h1</w:t>"));
assertEquals(1, TestUtils.regexCount(h1.getContent(), "</w:p>"));
assertEquals(1, TestUtils.regexCount(h1.getContent(), "<w:pStyle w:val=\"Heading1\" />"));
}
@Test
public void testH2(){
Heading2 h2 = Heading2.with("h2");
assertEquals(1, TestUtils.regexCount(h2.getContent(), "<w:p wsp:rsidR*"));
assertEquals(1, TestUtils.regexCount(h2.getContent(), "<w:t>h2</w:t>"));
assertEquals(1, TestUtils.regexCount(h2.getContent(), "</w:p>"));
assertEquals(1, TestUtils.regexCount(h2.getContent(), "<w:pStyle w:val=\"Heading2\" />"));
}
@Test
public void testH2Fluent(){
Heading2 h2 = Heading2.with("h2").create();
assertEquals(1, TestUtils.regexCount(h2.getContent(), "<w:p wsp:rsidR*"));
assertEquals(1, TestUtils.regexCount(h2.getContent(), "<w:t>h2</w:t>"));
assertEquals(1, TestUtils.regexCount(h2.getContent(), "</w:p>"));
assertEquals(1, TestUtils.regexCount(h2.getContent(), "<w:pStyle w:val=\"Heading2\" />"));
}
@Test
public void testH3(){
Heading3 h3 = Heading3.with("h3");
assertEquals(1, TestUtils.regexCount(h3.getContent(), "<w:p wsp:rsidR*"));
assertEquals(1, TestUtils.regexCount(h3.getContent(), "<w:t>h3</w:t>"));
assertEquals(1, TestUtils.regexCount(h3.getContent(), "</w:p>"));
assertEquals(1, TestUtils.regexCount(h3.getContent(), "<w:pStyle w:val=\"Heading3\" />"));
}
@Test
public void testH3Fluent(){
Heading3 h3 = Heading3.with("h3").create();
assertEquals(1, TestUtils.regexCount(h3.getContent(), "<w:p wsp:rsidR*"));
assertEquals(1, TestUtils.regexCount(h3.getContent(), "<w:t>h3</w:t>"));
assertEquals(1, TestUtils.regexCount(h3.getContent(), "</w:p>"));
assertEquals(1, TestUtils.regexCount(h3.getContent(), "<w:pStyle w:val=\"Heading3\" />"));
}
@Test
public void testEmpty(){
Heading1 h1 = Heading1.with("");
assertEquals("", h1.getContent());
Heading2 h2 = Heading2.with("");
assertEquals("", h2.getContent());
Heading3 h3 = Heading3.with("");
assertEquals("", h3.getContent());
}
@Test
public void testFluent(){
Heading1 h1 = (Heading1) Heading1.with("h111").withStyle().bold().italic().align(HeadingStyle.Align.CENTER).create();
Heading2 h2 = (Heading2) Heading2.with("h222").withStyle().bold().italic().align(HeadingStyle.Align.CENTER).create();
Heading3 h3 = (Heading3) Heading3.with("h222").withStyle().bold().italic().align(HeadingStyle.Align.CENTER).create();
verifyStyles(h1);
verifyStyles(h2);
verifyStyles(h3);
}
private void verifyStyles(IElement e) {
assertEquals(2, TestUtils.regexCount(e.getContent(), "<*w:rPr>"));
assertEquals(1, TestUtils.regexCount(e.getContent(), "<w:jc w:val=\"center\" />")); //default is left
assertEquals(1, TestUtils.regexCount(e.getContent(), "<w:b/>"));
assertEquals(1, TestUtils.regexCount(e.getContent(), "<w:i/>"));
}
}