package org.docx4j.model.fields;
import org.docx4j.openpackaging.exceptions.Docx4JException;
public class GeneralStringFormattingSwitchTests extends AbstractFormattingSwitchTest {
public GeneralStringFormattingSwitchTests() {
formattingSwitch = "\\*";
// initUsername();
// initMERGEFIELD();
initDOCPROPERTY();
}
private void initUsername() {
instruction = "USERNAME ";
quads.add(new SwitchTestQuad("\"mary smith\"", "Caps", "Mary Smith"));
quads.add(new SwitchTestQuad("\"marysmith\"", "Caps", "Marysmith"));
quads.add(new SwitchTestQuad("\"mary smith\"", "FirstCap", "Mary smith"));
quads.add(new SwitchTestQuad("\"Mary Smith\"", "Lower", "mary smith"));
quads.add(new SwitchTestQuad("\"Mary Smith\"", "Upper", "MARY SMITH"));
quads.add(new SwitchTestQuad("\"Mary Smith\" Capoop", "Upper", "\"MARY SMITH\""));
quads.add(new SwitchTestQuad("mary smith", "Upper", "MARY")); // but instruction still applied
// Without instruction, you get an error
quads.add(new SwitchTestQuad("\"Mary SmiTH\"", "", "Error! Switch argument not specified."));
// .. but MERGEFORMAT is enough
quads.add(new SwitchTestQuad("\"Mary SmiTH\"", " MERGEFORMAT", "Mary SmiTH"));
}
private void initDOCPROPERTY() {
instruction = "DOCPROPERTY ";
// NB since the value isn't embedded in the field, you don't need to quote it
quads.add(new SwitchTestQuad("mary smith", "Caps", "Mary Smith"));
quads.add(new SwitchTestQuad("mary\"smith", "Caps", "Mary\"Smith"));
// these extra quotes are preserved in the output
quads.add(new SwitchTestQuad("\"mary smith\"", "Caps", "\"Mary Smith\"")); // missed first cap because of the extra quote
quads.add(new SwitchTestQuad("\"marysmith\"", "Caps", "\"Marysmith\""));
quads.add(new SwitchTestQuad("\"mary smith\"", "FirstCap", "\"Mary smith\""));
quads.add(new SwitchTestQuad("\"Mary Smith\"", "Lower", "\"mary smith\""));
quads.add(new SwitchTestQuad("\"Mary Smith\"", "Upper", "\"MARY SMITH\""));
quads.add(new SwitchTestQuad("\"Mary Smith\" Capoop", "Upper", "\"MARY SMITH\" CAPOOP"));
// Without instruction, there is no change
quads.add(new SwitchTestQuad("\"Mary SmiTH\"", "MERGEFORMAT", "\"Mary SmiTH\""));
quads.add(new SwitchTestQuad("\"mary SmiTH\"", "MERGEFORMAT", "\"mary SmiTH\""));
// TODO literals, punctuation characters
// Without quotes..
quads.add(new SwitchTestQuad("mary smith", "Upper", "MARY SMITH")); // no quotes
quads.add(new SwitchTestQuad("Mary SmiTH", "MERGEFORMAT", "Mary SmiTH"));
quads.add(new SwitchTestQuad("\"mary smith\"", "madeupswitch", "Error! Unknown switch argument"));
quads.add(new SwitchTestQuad("01", "MERGEFORMAT", "01")); // do not treat as a number
quads.add(new SwitchTestQuad("0.1", "MERGEFORMAT", "0.1"));
quads.add(new SwitchTestQuad("0.0", "MERGEFORMAT", "0.0")); // FIXME
quads.add(new SwitchTestQuad("0.00", "MERGEFORMAT", "0.00"));
quads.add(new SwitchTestQuad("0.", "MERGEFORMAT", "0.")); // do not treat as a number
quads.add(new SwitchTestQuad("\"0.1 A\"", "MERGEFORMAT", "\"0.1 A\""));
quads.add(new SwitchTestQuad("\"0.1 1\"", "MERGEFORMAT", "\"0.1 1\""));
quads.add(new SwitchTestQuad("\"0.1 .\"", "MERGEFORMAT", "\"0.1 .\""));
quads.add(new SwitchTestQuad("\"0.00 0\"", "MERGEFORMAT", "\"0.00 0\""));
quads.add(new SwitchTestQuad("\"0.00 1\"", "MERGEFORMAT", "\"0.00 1\""));
quads.add(new SwitchTestQuad("\"0.00 A\"", "MERGEFORMAT", "\"0.00 A\""));
// No quotes...
quads.add(new SwitchTestQuad("0.1 A", "MERGEFORMAT", "0.1 A"));
quads.add(new SwitchTestQuad("0.1 1", "MERGEFORMAT", "0.1 1"));
quads.add(new SwitchTestQuad("0.1 .", "MERGEFORMAT", "0.1 ."));
quads.add(new SwitchTestQuad("0.00 0", "MERGEFORMAT", "0.00 0"));
quads.add(new SwitchTestQuad("0.00 1", "MERGEFORMAT", "0.00 1"));
quads.add(new SwitchTestQuad("0.00 A", "MERGEFORMAT", "0.00 A"));
quads.add(new SwitchTestQuad("0000123456", "MERGEFORMAT", "0000123456")); // do not treat as a number
quads.add(new SwitchTestQuad("000012345.006", "MERGEFORMAT", "000012345.006")); // do not treat as a number
quads.add(new SwitchTestQuad("0000123AA456", "MERGEFORMAT", "0000123AA456"));
quads.add(new SwitchTestQuad("0000123AA45.006", "MERGEFORMAT", "0000123AA45.006"));
}
private void initMERGEFIELD() {
instruction = "MERGEFIELD ";
// NB since the value isn't embedded in the field, you don't need to quote it
quads.add(new SwitchTestQuad("mary smith", "Caps", "Mary Smith")); // TODO FIX in simple field code path
// quads.add(new SwitchTestQuad("mary\"smith", "Caps", "\"Mary Smith\"")); // can't use this in a txt mailmerge
// these extra quotes are preserved in the output
quads.add(new SwitchTestQuad("\"mary smith\"", "Caps", "\"Mary Smith\"")); // missed first cap because of the extra quote
quads.add(new SwitchTestQuad("\"marysmith\"", "Caps", "\"Marysmith\""));
quads.add(new SwitchTestQuad("\"mary smith\"", "FirstCap", "\"Mary smith\""));
quads.add(new SwitchTestQuad("\"Mary Smith\"", "Lower", "\"mary smith\""));
quads.add(new SwitchTestQuad("\"Mary Smith\"", "Upper", "\"MARY SMITH\""));
// quads.add(new SwitchTestQuad("\"Mary Smith\" Capoop", "Upper", "\"MARY SMITH\"")); // can't use this in a txt mailmerge
// Without instruction, there is no change
quads.add(new SwitchTestQuad("\"Mary SmiTH\"", "", "\"Mary SmiTH\""));
quads.add(new SwitchTestQuad("\"mary SmiTH\"", "", "\"mary SmiTH\""));
// TODO literals, punctuation characters
// Without quotes..
quads.add(new SwitchTestQuad("mary smith", "Upper", "MARY SMITH")); // no quotes
quads.add(new SwitchTestQuad("Mary SmiTH", "", "Mary SmiTH"));
quads.add(new SwitchTestQuad("\"mary smith\"", "madeupswitch", "Error! Unknown switch argument"));
quads.add(new SwitchTestQuad("01", "", "01")); // do not treat as a number
quads.add(new SwitchTestQuad("0.1", "", "0.1"));
quads.add(new SwitchTestQuad("0.0", "", "0.0")); // FIXME
quads.add(new SwitchTestQuad("0.00", "", "0.00"));
quads.add(new SwitchTestQuad("0.", "", "0.")); // do not treat as a number
quads.add(new SwitchTestQuad("\"0.1 A\"", "", "\"0.1 A\""));
quads.add(new SwitchTestQuad("\"0.1 1\"", "", "\"0.1 1\""));
quads.add(new SwitchTestQuad("\"0.1 .\"", "", "\"0.1 .\""));
quads.add(new SwitchTestQuad("\"0.00 0\"", "", "\"0.00 0\""));
quads.add(new SwitchTestQuad("\"0.00 1\"", "", "\"0.00 1\""));
quads.add(new SwitchTestQuad("\"0.00 A\"", "", "\"0.00 A\""));
// No quotes...
quads.add(new SwitchTestQuad("0.1 A", "", "0.1 A"));
quads.add(new SwitchTestQuad("0.1 1", "", "0.1 1"));
quads.add(new SwitchTestQuad("0.1 .", "", "0.1 ."));
quads.add(new SwitchTestQuad("0.00 0", "", "0.00 0"));
quads.add(new SwitchTestQuad("0.00 1", "", "0.00 1"));
quads.add(new SwitchTestQuad("0.00 A", "", "0.00 A"));
quads.add(new SwitchTestQuad("0000123456", "", "0000123456")); // do not treat as a number
quads.add(new SwitchTestQuad("000012345.006", "", "000012345.006")); // do not treat as a number
quads.add(new SwitchTestQuad("0000123AA456", "", "0000123AA456"));
quads.add(new SwitchTestQuad("0000123AA45.006", "", "0000123AA45.006"));
}
/**
* @param args
* @throws Docx4JException
*/
public static void main(String[] args) throws Docx4JException {
GeneralStringFormattingSwitchTests fst = new GeneralStringFormattingSwitchTests();
// fst.generateJUnitTest();
fst.testFormatting();
if (fst.instruction.equals("DOCPROPERTY ") ) {
fst.generateSampleDocx("test_DOCPROPERTY_GeneralFormatting.docx");
} else if (fst.instruction.equals("MERGEFIELD ") ) {
fst.generateSampleDocx("test_MERGEFIELD_GeneralFormatting.docx");
} else {
fst.generateSampleDocx("test_USERNAME_GeneralFormatting.docx");
}
}
}