📄 templatetestcase.java
字号:
else if (testName.equals("beans")) {
dataModel.put("array", new String[] { "array-0", "array-1"});
dataModel.put("list", Arrays.asList(new String[] { "list-0", "list-1", "list-2"}));
Map tmap = new HashMap();
tmap.put("key", "value");
Object objKey = new Object();
tmap.put(objKey, "objValue");
dataModel.put("map", tmap);
dataModel.put("objKey", objKey);
dataModel.put("obj", new freemarker.testcase.models.BeanTestClass());
dataModel.put("resourceBundle", new ResourceBundleModel(ResourceBundle.getBundle("freemarker.testcase.models.BeansTestResources"), BeansWrapper.getDefaultInstance()));
dataModel.put("date", new GregorianCalendar(1974, 10, 14).getTime());
dataModel.put("statics", BeansWrapper.getDefaultInstance().getStaticModels());
}
else if (testName.equals("boolean")) {
dataModel.put( "boolean1", TemplateBooleanModel.FALSE);
dataModel.put( "boolean2", TemplateBooleanModel.TRUE);
dataModel.put( "boolean3", TemplateBooleanModel.TRUE);
dataModel.put( "boolean4", TemplateBooleanModel.TRUE);
dataModel.put( "boolean5", TemplateBooleanModel.FALSE);
dataModel.put( "list1", new BooleanList1() );
dataModel.put( "list2", new BooleanList2() );
dataModel.put( "hash1", new BooleanHash1() );
dataModel.put( "hash2", new BooleanHash2() );
}
else if (testName.equals("dateformat")) {
GregorianCalendar cal = new GregorianCalendar(2002, 10, 15, 14, 54, 13);
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
dataModel.put("date", new SimpleDate(cal.getTime(), TemplateDateModel.DATETIME));
dataModel.put("unknownDate", new SimpleDate(cal.getTime(), TemplateDateModel.UNKNOWN));
}
else if (testName.equals("default-xmlns")) {
InputSource is = new InputSource(getClass().getResourceAsStream("test-defaultxmlns1.xml"));
NodeModel nm = NodeModel.parse(is);
dataModel.put("doc", nm);
}
else if (testName.equals("multimodels")) {
dataModel.put("test", "selftest");
dataModel.put("self", "self");
dataModel.put("zero", new Integer(0));
dataModel.put("data", new MultiModel1());
}
else if (testName.equals("nodelistmodel")) {
org.jdom.Document doc = new SAXBuilder().build(new InputSource(getClass().getResourceAsStream("test-xml.xml")));
dataModel.put("doc", new NodeListModel(doc));
}
else if (testName.equals("string-builtins3")) {
dataModel.put("multi", new TestBoolean());
}
else if (testName.equals("type-builtins")) {
dataModel.put("testmethod", new TestMethod());
dataModel.put("testnode", new TestNode());
dataModel.put("testcollection", new SimpleCollection(new ArrayList()));
}
else if (testName.equals("var-layers")) {
dataModel.put("x", new Integer(4));
dataModel.put("z", new Integer(4));
conf.setSharedVariable("y", new Integer(7));
}
else if (testName.equals("xml-fragment")) {
DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
f.setNamespaceAware(true);
DocumentBuilder db = f.newDocumentBuilder();
org.w3c.dom.Document doc = db.parse(new InputSource(getClass().getResourceAsStream("test-xmlfragment.xml")));
dataModel.put("node", NodeModel.wrap(doc.getDocumentElement().getFirstChild().getFirstChild()));
}
else if (testName.equals("xmlns1")) {
InputSource is = new InputSource(getClass().getResourceAsStream("test-xmlns.xml"));
NodeModel nm = NodeModel.parse(is);
dataModel.put("doc", nm);
}
else if (testName.equals("xmlns2")) {
InputSource is = new InputSource(getClass().getResourceAsStream("test-xmlns2.xml"));
NodeModel nm = NodeModel.parse(is);
dataModel.put("doc", nm);
}
else if (testName.equals("xmlns3") || testName.equals("xmlns4")) {
InputSource is = new InputSource(getClass().getResourceAsStream("test-xmlns3.xml"));
NodeModel nm = NodeModel.parse(is);
dataModel.put("doc", nm);
}
else if (testName.equals("xmlns5")) {
InputSource is = new InputSource(getClass().getResourceAsStream("test-defaultxmlns1.xml"));
NodeModel nm = NodeModel.parse(is);
dataModel.put("doc", nm);
}
}
public void runTest() {
try {
template = conf.getTemplate(filename);
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
fail("Could not load template " + filename + "\n" + sw.toString());
}
File refFile = new File (outputDir, filename);
File outFile = new File (outputDir, filename+".out");
Writer out = null;
String encoding = conf.getOutputEncoding();
if (encoding == null) encoding = "UTF-8";
try {
out = new OutputStreamWriter(new FileOutputStream(outFile),
encoding);
} catch (IOException ioe) {
fail("Cannot write to file: " + outFile + "\n" + ioe.getMessage());
}
try {
template.process(dataModel, out);
out.close();
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
fail("Could not process template " + filename + "\n" + sw.toString());
}
try {
Reader ref = new InputStreamReader(new FileInputStream(refFile),
encoding);
Reader output = new InputStreamReader(new FileInputStream(outFile),
encoding);
compare(ref, output);
} catch (IOException e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
fail("Error comparing files " + refFile + " and " + outFile + "\n" + sw.toString());
}
outFile.delete();
}
static public void compare(Reader reference, Reader output) throws IOException {
LineNumberReader ref = new LineNumberReader(reference);
LineNumberReader out = new LineNumberReader(output);
String refLine = "", outLine = "";
while (refLine != null || outLine != null) {
if (refLine == null) {
fail("Output text is longer than reference text");
}
if (outLine == null) {
fail("Output text is shorter than reference text");
}
refLine = ref.readLine();
outLine = out.readLine();
if (refLine != null && outLine != null & !refLine.equals(outLine)) {
fail("Difference found on line " + ref.getLineNumber() +
".\nReference text is: " + refLine +
"\nOutput text is: " + outLine);
}
}
}
static class TestBoolean implements TemplateBooleanModel, TemplateScalarModel {
public boolean getAsBoolean() {
return true;
}
public String getAsString() {
return "de";
}
}
static class TestMethod implements TemplateMethodModel {
public Object exec(java.util.List arguments) {
return "x";
}
}
static class TestNode implements TemplateNodeModel {
public String getNodeName() {
return "name";
}
public TemplateNodeModel getParentNode() {
return null;
}
public String getNodeType() {
return "element";
}
public TemplateSequenceModel getChildNodes() {
return null;
}
public String getNodeNamespace() {
return null;
}
}
public Object getTestBean()
{
Map testBean = new TestBean();
testBean.put("name", "Chris");
testBean.put("location", "San Francisco");
testBean.put("age", new Integer(27));
return testBean;
}
public static class TestBean extends HashMap {
public String getName() {
return "Christopher";
}
public int getLuckyNumber() {
return 7;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -