package word.w2004; import junit.framework.Assert; import org.junit.Test; import word.api.interfaces.IElement; import word.utils.TestUtils; import word.w2004.elements.Paragraph; import word.w2004.elements.Paragraph.TabAlign; import word.w2004.elements.ParagraphPiece; import word.w2004.style.Font; import word.w2004.style.ParagraphStyle; import word.w2004.style.ParagraphStyle.Align; public class ParagraphTest extends Assert { @Test public void sanityTest() { IElement par = Paragraph.with(""); assertEquals(par.getContent(), ""); } @Test public void sanityTest02() { IElement par = new Paragraph(ParagraphPiece.with("").create()); assertEquals(par.getContent(), ""); } @Test public void sanityTest03() { IElement par = Paragraph.withPieces(ParagraphPiece.with(null)).create(); assertEquals(par.getContent(), ""); } @Test public void sanityTestFluent() { IElement par = Paragraph.with("par01").withStyle().align(Align.CENTER).create(); basicParagraphCheckings(par, "par01", "center"); } @Test public void testWithStyleBgColor() { IElement p01 = Paragraph.with("par01").withStyle().bgColor("FFFF00").create(); assertEquals(1, TestUtils.regexCount(p01.getContent(), "FFFF00")); //Background Color basicParagraphCheckings(p01, "par01", "left"); } @Test public void testWithStyle() { IElement p01 = Paragraph.with("").withStyle().create(); assertEquals(p01.getContent(), ""); } @Test public void goodParagraphTest() { IElement p01 = Paragraph.with("This is my paragraph"); basicParagraphCheckings(p01, "This is my paragraph", null); } @Test public void testPiecesOne() { Paragraph p01 = Paragraph.with("Piece01"); //or new Paragraph("xxxx"); basicParagraphCheckings(p01, "Piece01", null); } @Test public void testParagraphOneWithStyle() { Paragraph p01 = (Paragraph) Paragraph.with("111").withStyle().align(ParagraphStyle.Align.CENTER).create(); basicParagraphCheckings(p01, "111", "center"); } @Test public void testParagraphIndentStyle() { Paragraph p01 = (Paragraph) Paragraph.with("111").withStyle().indent(ParagraphStyle.Indent.ONE).create(); assertEquals(1, TestUtils.regexCount(p01.getContent(), "w:left=\"540\"")); } @Test public void testPiecesOneWithStyle() { ParagraphPiece piece01 = ParagraphPiece.with("Piece01").withStyle().bold().italic().underline().create(); Paragraph p01 = new Paragraph(piece01); assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:b/>")); //bold assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:i/>")); //italic assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:u w:val=\"single\"/>")); //underline basicParagraphCheckings(p01, "Piece01", null); } @Test public void testPiecesMany() { ParagraphPiece piece01 = ParagraphPiece.with("Piece11111"); ParagraphPiece piece02 = ParagraphPiece.with("Piece22222").withStyle().bold().italic().create(); Paragraph p01 = Paragraph.withPieces(piece01, piece02); assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:t>Piece11111</w:t>")); assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:t>Piece22222</w:t>")); assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:p wsp:rsidR=")); assertEquals(4, TestUtils.regexCount(p01.getContent(), "<*w:r>")); assertEquals(1, TestUtils.regexCount(p01.getContent(), "</w:p>")); assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:b/>")); assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:i/>")); } @Test public void testEmptyPiecesEtc() { ParagraphPiece piece01 = ParagraphPiece.with(""); ParagraphPiece piece02 = ParagraphPiece.with(""); Paragraph p01 = new Paragraph(piece01, piece02); assertEquals("", p01.getContent()); } @Test public void testEmptyPiecesEtc02() { ParagraphPiece piece01 = ParagraphPiece.with(null); ParagraphPiece piece02 = ParagraphPiece.with("Piece222"); Paragraph p01 = new Paragraph(piece01, piece02); //assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:t>Piece222</w:t>")); basicParagraphCheckings(p01, "Piece222", null); } @Test public void testFluent(){ Paragraph p01 = (Paragraph) Paragraph.with("111").withStyle().align(ParagraphStyle.Align.CENTER).create(); basicParagraphCheckings(p01, "111", "center"); } @Test public void testFluentPiece(){ ParagraphPiece pieces = ParagraphPiece.with("111"); Paragraph p01 = Paragraph.withPieces(pieces); basicParagraphCheckings(p01, "111", null); } @Test public void testBidiNoValue(){ ParagraphPiece pieces = ParagraphPiece.with("111"); Paragraph p01 = Paragraph.withPieces(pieces); basicParagraphCheckings(p01, "111", null); assertEquals(0, TestUtils.regexCount(p01.getContent(), "<w:lang w:bidi=\".*\" />")); } @Test public void testBidi(){ ParagraphPiece pieces = ParagraphPiece.with("111"); Paragraph p01 = (Paragraph) Paragraph.withPieces(pieces).withStyle().bidi("HE").create(); basicParagraphCheckings(p01, "111", null); assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:lang w:bidi=\"HE\" />")); } @Test public void testTab(){ Paragraph p01 = Paragraph.withPieces( ParagraphPiece.with("Bloc 1 Price :").withStyle().font(Font.CALIBRI).fontSize(Integer.toString(2*11)).create(), ParagraphPiece.with(" \t 3 200,00 $").withStyle().font(Font.CALIBRI).fontSize(Integer.toString(2*11)).create() ).addTab(TabAlign.RIGHT, 8931).create(); assertEquals(2, TestUtils.regexCount(p01.getContent(), "<w:pPr>")); assertEquals(1, TestUtils.regexCount(p01.getContent(), "<w:tabs>")); assertEquals(1, TestUtils.regexCount(p01.getContent(), "</w:tabs>")); assertEquals(2, TestUtils.regexCount(p01.getContent(), "</w:pPr>")); } /*** * Verifies, for ONE paragraphPiece, basec values present * TODO: Add verification params for: bold, italic, bgcolor, underline * @param par the actual paragraph object * @param parValue the expected text deiplayed in the paragraph * @param align the expected align */ private void basicParagraphCheckings(IElement par, String parValue, String align){ if(align == null || "".equals(align)){ align = "left"; //the default } assertEquals(1, TestUtils.regexCount(par.getContent(), "<w:t>" + parValue + "</w:t>")); assertEquals(1, TestUtils.regexCount(par.getContent(), "<w:p wsp:rsidR=")); assertEquals(2, TestUtils.regexCount(par.getContent(), "<*w:r>")); assertEquals(1, TestUtils.regexCount(par.getContent(), "</w:p>")); assertEquals(1, TestUtils.regexCount(par.getContent(), "<w:jc w:val=\"" + align + "\"/>")); assertEquals(2, TestUtils.regexCount(par.getContent(), "<*w:pPr>")); } }