package org.docx4j.model.fields; import static org.junit.Assert.assertTrue; import javax.xml.transform.TransformerException; import org.docx4j.openpackaging.exceptions.Docx4JException; import org.junit.Test; public class FormattingSwitchHelperGeneralTests { @Test public void testStringNotSpecified() throws TransformerException, Docx4JException { // For DOCPROPERTY and MERGEFIELD, = (and presumably all others), \* without arg in Word 2010 sp1 // results in Error! Switch argument not specified, . SwitchTestData triple = new SwitchTestData("\\* ", "mary smith", "Error! Switch argument not specified."); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringCaps() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* Caps", "mary smith", "Mary Smith"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringUpper() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* Upper", "mary smith", "MARY SMITH"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone1() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "Mary SmiTH", "Mary SmiTH"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } // @Test // public void testStringmadeupswitch1() throws TransformerException, Docx4JException { // SwitchTestData triple = new SwitchTestData("\\* madeupswitch", "\"mary smith\"", "Error! Unknown switch argument"); // doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); // } // // @Test // public void testStringmadeupswitch2() throws TransformerException, Docx4JException { // SwitchTestData triple = new SwitchTestData("\\* madeupswitch", "mary smith", "Error! Unknown switch argument"); // doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); // } @Test public void testStringNone2() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "01", "01"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone3() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.1", "0.1"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone4() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.0", "0.0"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone5() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.00", "0.00"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone6() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.", "0."); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone7() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.1 A", "0.1 A"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone8() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.1 1", "0.1 1"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone9() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.1 .", "0.1 ."); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone10() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.00 0", "0.00 0"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone11() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.00 1", "0.00 1"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone12() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0.00 A", "0.00 A"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone13() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0000123456", "0000123456"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone14() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "000012345.006", "000012345.006"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone15() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0000123AA456", "0000123AA456"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone16() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "0000123AA45.006", "0000123AA45.006"); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringCapsQuote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* Caps", "\"mary smith\"", "\"Mary Smith\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringCaps2Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* Caps", "\"marysmith\"", "\"Marysmith\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringFirstCapQuote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* FirstCap", "\"mary smith\"", "\"Mary smith\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringLowerQuote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* Lower", "\"Mary Smith\"", "\"mary smith\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringUpperQuote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* Upper", "\"Mary Smith\"", "\"MARY SMITH\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone1Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "\"Mary SmiTH\"", "\"Mary SmiTH\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone2Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "\"mary SmiTH\"", "\"mary SmiTH\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone3Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "\"0.1 A\"", "\"0.1 A\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone4Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "\"0.1 1\"", "\"0.1 1\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone5Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "\"0.1 .\"", "\"0.1 .\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone6Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "\"0.00 0\"", "\"0.00 0\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone7Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "\"0.00 1\"", "\"0.00 1\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } @Test public void testStringNone8Quote() throws TransformerException, Docx4JException { SwitchTestData triple = new SwitchTestData("\\* MERGEFORMAT", "\"0.00 A\"", "\"0.00 A\""); doit("MERGEFIELD", triple); doit("DOCPROPERTY", triple); } // --------------------------------------------------------------------------------------- private void doit(String fieldname, SwitchTestData triple) throws TransformerException, Docx4JException { String instr = fieldname + " foo " + triple.format; String result = getFormat(instr, triple.val); assertTrue(result.equals(triple.expectedResult)); } private String getFormat(String instr, String val) throws TransformerException, Docx4JException { FldSimpleModel fsm = new FldSimpleModel(); fsm.build(instr); return FormattingSwitchHelper.applyFormattingSwitch(null, fsm, val); } private static class SwitchTestData { String format; String val; String expectedResult; public SwitchTestData(String format, String val, String expectedResult) { this.format = format; this.val = val; this.expectedResult = expectedResult; } } }