/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestTemplate.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.template; import com.uwyn.rife.site.ConstrainedProperty; import com.uwyn.rife.template.exceptions.BlockUnknownException; import com.uwyn.rife.template.exceptions.TemplateException; import com.uwyn.rife.template.exceptions.ValueUnknownException; import com.uwyn.rife.tools.ExceptionUtils; import java.util.ArrayList; import java.util.Collection; public class TestTemplate extends TemplateTestCase { public TestTemplate(String name) { super(name); } public void setUp() { } public void testInstantiation() { Template template = TemplateFactory.HTML.get("empty"); assertNotNull(template); assertTrue(template.getModificationTime() <= System.currentTimeMillis()); assertEquals("", template.getContent()); assertEquals("empty", template.getName()); assertEquals("empty", template.getFullName()); try { template.getBlock("TEST"); fail(); } catch (BlockUnknownException e) { assertEquals("TEST", e.getId()); } try { template.getValue("TEST"); fail(); } catch (ValueUnknownException e) { assertEquals("TEST", e.getId()); } assertEquals(template.countValues(), 0); assertEquals(template.getAvailableValueIds().length, 0); assertEquals(template.getFilteredValues("empty").size(), 0); assertEquals(template.getUnsetValueIds().size(), 0); } public void testClone() { Template template1 = TemplateFactory.HTML.get("values"); assertEquals("values", template1.getName()); assertEquals("values", template1.getFullName()); String value1 = "aaab"; String value2 = "bbbc"; String value3 = "ccccd"; try { template1.setValue("VALUE1", value1); template1.setValue("VALUE2", value2); template1.setValue("VALUE3", value3); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } Template template2 = (Template)template1.clone(); assertNotNull(template2); assertNotSame(template1, template2); assertEquals(template1.getContent(), template2.getContent()); } public void testSetValues() { Template template = TemplateFactory.HTML.get("values"); assertNull(template.getValue("VALUE1")); assertNull(template.getValue("VALUE2")); assertNull(template.getValue("VALUE3")); assertEquals(template.countValues(), 0); try { template.getValue("VALUE4"); fail(); } catch (ValueUnknownException e) { assertEquals("VALUE4", e.getId()); } String value1 = "aaab"; String value2 = "bbbc"; String value3 = "ccccd"; try { template.setValue("VALUE1", value1); assertEquals(template.countValues(), 1); template.setValue("VALUE2", value2); assertEquals(template.countValues(), 2); template.setValue("VALUE3", value3); assertEquals(template.countValues(), 3); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(template.getValue("VALUE1"), value1); assertEquals(template.getValue("VALUE2"), value2); assertEquals(template.getValue("VALUE3"), value3); } public void testSetValuesTyped() { Template template = TemplateFactory.HTML.get("values_typed"); String value_string = "abcde"; boolean value_boolean = false; char value_char = 'k'; char[] value_chararray = "abcdefgh".toCharArray(); double value_double = 7483.343d; float value_float = 233.45f; int value_int = 34878; long value_long = 938649837L; Object value_object = new Boolean(true); Template value_template = TemplateFactory.HTML.get("values"); value_template.setValue("VALUE1", "thevalue1"); value_template.setValue("VALUE3", "thevalue3"); try { template.setValue("STRING", value_string); assertEquals(template.countValues(), 1); template.setValue("BOOLEAN", value_boolean); assertEquals(template.countValues(), 2); template.setValue("CHAR", value_char); assertEquals(template.countValues(), 3); template.setValue("CHAR[]", value_chararray, 3, 2); assertEquals(template.countValues(), 4); template.setValue("DOUBLE", value_double); assertEquals(template.countValues(), 5); template.setValue("FLOAT", value_float); assertEquals(template.countValues(), 6); template.setValue("INT", value_int); assertEquals(template.countValues(), 7); template.setValue("LONG", value_long); assertEquals(template.countValues(), 8); template.setValue("OBJECT", value_object); assertEquals(template.countValues(), 9); template.setValue("TEMPLATE", value_template); assertEquals(template.countValues(), 10); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(template.getValue("STRING"), value_string); assertEquals(template.getValue("BOOLEAN"), ""+value_boolean); assertEquals(template.getValue("CHAR"), ""+value_char); assertEquals(template.getValue("CHAR[]").toString(), "de"); assertEquals(template.getValue("DOUBLE"), ""+value_double); assertEquals(template.getValue("FLOAT"), ""+value_float); assertEquals(template.getValue("INT"), ""+value_int); assertEquals(template.getValue("LONG"), ""+value_long); assertEquals(template.getValue("OBJECT"), ""+value_object); assertEquals(template.getValue("TEMPLATE"), "thevalue1<!--V VALUE2/-->thevalue3\n"); } public void testAppendValuesTyped() { Template template = TemplateFactory.HTML.get("values_typed"); String value_string = "abcde"; boolean value_boolean = false; char value_char = 'k'; char[] value_chararray = "abcdefgh".toCharArray(); double value_double = 7483.343d; float value_float = 233.45f; int value_int = 34878; long value_long = 938649837L; Object value_object = new Boolean(true); try { template.appendValue("VALUE", value_string); template.appendValue("VALUE", value_boolean); template.appendValue("VALUE", value_char); template.appendValue("VALUE", value_chararray, 3, 2); template.appendValue("VALUE", value_double); template.appendValue("VALUE", value_float); template.appendValue("VALUE", value_int); template.appendValue("VALUE", value_long); template.appendValue("VALUE", value_object); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertEquals(template.getValue("VALUE"), value_string+ value_boolean+ value_char+ "de"+ value_double+ value_float+ value_int+ value_long+ value_object); } public void testRemoveValues() { Template template = TemplateFactory.HTML.get("values"); String value1 = "aaab"; String value2 = "bbbc"; String value3 = "ccccd"; try { template.setValue("VALUE1", value1); template.setValue("VALUE2", value2); template.setValue("VALUE3", value3); assertEquals(template.countValues(), 3); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } template.removeValue("VALUE1"); assertEquals(template.countValues(), 2); template.removeValue("VALUE2"); assertEquals(template.countValues(), 1); template.removeValue("VALUE3"); assertEquals(template.countValues(), 0); try { template.removeValue("VALUE4"); fail(); } catch (ValueUnknownException e) { assertEquals("VALUE4", e.getId()); } } public void testBlankValues() { Template template = TemplateFactory.HTML.get("values"); String value1 = "aaab"; String value2 = "bbbc"; String value3 = "ccccd"; try { template.setValue("VALUE1", value1); template.setValue("VALUE2", value2); template.setValue("VALUE3", value3); assertEquals(template.countValues(), 3); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertFalse(template.getValue("VALUE1").equals("")); assertFalse(template.getValue("VALUE2").equals("")); assertFalse(template.getValue("VALUE3").equals("")); template.blankValue("VALUE1"); template.blankValue("VALUE2"); template.blankValue("VALUE3"); assertEquals(template.countValues(), 3); assertEquals(template.getValue("VALUE1"), ""); assertEquals(template.getValue("VALUE2"), ""); assertEquals(template.getValue("VALUE3"), ""); try { template.blankValue("VALUE4"); fail(); } catch (ValueUnknownException e) { assertEquals("VALUE4", e.getId()); } } public void testClearValues() { Template template = TemplateFactory.HTML.get("values"); String value1 = "aaab"; String value2 = "bbbc"; String value3 = "ccccd"; try { template.setValue("VALUE1", value1); template.setValue("VALUE2", value2); template.setValue("VALUE3", value3); assertEquals(template.countValues(), 3); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } template.clear(); assertEquals(template.countValues(), 0); } public void testDefaultValues() { Template template = TemplateFactory.HTML.get("values_default"); String defaultvalue1 = "azerty"; assertTrue(template.hasDefaultValue("DEFAULTVALUE")); assertEquals(template.getDefaultValue("DEFAULTVALUE"), defaultvalue1); assertEquals(template.getValue("DEFAULTVALUE"), defaultvalue1); String value1 = "hdijjk"; try { template.setValue("DEFAULTVALUE", value1); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertTrue(template.hasDefaultValue("DEFAULTVALUE")); assertEquals(template.getDefaultValue("DEFAULTVALUE"), defaultvalue1); assertEquals(template.getValue("DEFAULTVALUE"), value1); template.removeValue("DEFAULTVALUE"); assertTrue(template.hasDefaultValue("DEFAULTVALUE")); assertEquals(template.getDefaultValue("DEFAULTVALUE"), defaultvalue1); assertEquals(template.getValue("DEFAULTVALUE"), defaultvalue1); } public void testUnsetValues() { Template template = null; Collection<String> unset_valueids = null; try { template = TemplateFactory.HTML.get("values_short_in"); unset_valueids = template.getUnsetValueIds(); assertNotNull(unset_valueids); assertEquals(unset_valueids.size(), 7); assertTrue(unset_valueids.contains("VALUE1")); assertTrue(unset_valueids.contains("VALUE2")); assertTrue(unset_valueids.contains("VALUE3")); assertTrue(unset_valueids.contains("VALUE4")); assertTrue(unset_valueids.contains("VALUE5")); assertTrue(unset_valueids.contains("VALUE6")); assertTrue(unset_valueids.contains("VALUE7")); template.setValue("VALUE1", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 6); assertTrue(!unset_valueids.contains("VALUE1")); assertTrue(unset_valueids.contains("VALUE2")); assertTrue(unset_valueids.contains("VALUE3")); assertTrue(unset_valueids.contains("VALUE4")); assertTrue(unset_valueids.contains("VALUE5")); assertTrue(unset_valueids.contains("VALUE6")); assertTrue(unset_valueids.contains("VALUE7")); template.setValue("VALUE2", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 5); assertTrue(!unset_valueids.contains("VALUE1")); assertTrue(!unset_valueids.contains("VALUE2")); assertTrue(unset_valueids.contains("VALUE3")); assertTrue(unset_valueids.contains("VALUE4")); assertTrue(unset_valueids.contains("VALUE5")); assertTrue(unset_valueids.contains("VALUE6")); assertTrue(unset_valueids.contains("VALUE7")); template.setValue("VALUE3", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 4); assertTrue(!unset_valueids.contains("VALUE1")); assertTrue(!unset_valueids.contains("VALUE2")); assertTrue(!unset_valueids.contains("VALUE3")); assertTrue(unset_valueids.contains("VALUE4")); assertTrue(unset_valueids.contains("VALUE5")); assertTrue(unset_valueids.contains("VALUE6")); assertTrue(unset_valueids.contains("VALUE7")); template.setValue("VALUE4", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 3); assertTrue(!unset_valueids.contains("VALUE1")); assertTrue(!unset_valueids.contains("VALUE2")); assertTrue(!unset_valueids.contains("VALUE3")); assertTrue(!unset_valueids.contains("VALUE4")); assertTrue(unset_valueids.contains("VALUE5")); assertTrue(unset_valueids.contains("VALUE6")); assertTrue(unset_valueids.contains("VALUE7")); template.setValue("VALUE5", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 2); assertTrue(!unset_valueids.contains("VALUE1")); assertTrue(!unset_valueids.contains("VALUE2")); assertTrue(!unset_valueids.contains("VALUE3")); assertTrue(!unset_valueids.contains("VALUE4")); assertTrue(!unset_valueids.contains("VALUE5")); assertTrue(unset_valueids.contains("VALUE6")); assertTrue(unset_valueids.contains("VALUE7")); template.setValue("VALUE6", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 1); assertTrue(!unset_valueids.contains("VALUE1")); assertTrue(!unset_valueids.contains("VALUE2")); assertTrue(!unset_valueids.contains("VALUE3")); assertTrue(!unset_valueids.contains("VALUE4")); assertTrue(!unset_valueids.contains("VALUE5")); assertTrue(!unset_valueids.contains("VALUE6")); assertTrue(unset_valueids.contains("VALUE7")); template.setValue("VALUE7", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 0); assertTrue(!unset_valueids.contains("VALUE1")); assertTrue(!unset_valueids.contains("VALUE2")); assertTrue(!unset_valueids.contains("VALUE3")); assertTrue(!unset_valueids.contains("VALUE4")); assertTrue(!unset_valueids.contains("VALUE5")); assertTrue(!unset_valueids.contains("VALUE6")); assertTrue(!unset_valueids.contains("VALUE7")); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testUnsetValuesDefaults() { Template template = null; Collection<String> unset_valueids = null; try { template = TemplateFactory.HTML.get("values_long_in"); unset_valueids = template.getUnsetValueIds(); assertNotNull(unset_valueids); assertEquals(unset_valueids.size(), 0); template.setValue("VALUE1", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 0); template.setValue("VALUE2", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 0); template.setValue("VALUE3", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 0); template.setValue("VALUE4", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 0); template.setValue("VALUE5", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 0); template.setValue("VALUE6", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 0); template.setValue("VALUE7", "value"); unset_valueids = template.getUnsetValueIds(); assertEquals(unset_valueids.size(), 0); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConditionalBlockRetrieval() { Template template = null; try { template = TemplateFactory.TXT.get("construction_simple_in"); assertTrue(template.hasBlock("BLOCK1")); assertFalse(template.hasBlock("BLOCK1b")); try { template.getBlock("BLOCK1b"); fail(); } catch (BlockUnknownException e) { assertTrue(true); } } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConstructionSimple() { Template template = null; try { template = TemplateFactory.TXT.get("construction_simple_in"); template.appendBlock("CONTENT", "BLOCK1"); template.appendBlock("CONTENT", "BLOCK3"); template.appendBlock("CONTENT", "BLOCK2"); template.appendBlock("CONTENT", "BLOCK4"); template.appendBlock("CONTENT", "BLOCK1"); template.setValue("VALUE3", "value 3 early"); // will be overridden template.appendBlock("CONTENT", "BLOCK3"); template.appendBlock("CONTENT", "BLOCK2"); template.setValue("VALUE4", "value 4 early"); // will be removed template.appendBlock("CONTENT", "BLOCK4"); template.removeValue("VALUE4"); template.setValue("VALUE1", "value 1 late"); // late setting template.setValue("VALUE3", "value 3 late"); // late setting assertEquals(template.getContent(), getTemplateContent("construction_simple_out", TemplateFactory.TXT.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConstructionRepeated() { Template template = null; try { template = TemplateFactory.TXT.get("construction_repeated_in"); template.setBlock("VALUE2", "BLOCK1"); template.setBlock("VALUE3", "BLOCK2"); template.setBlock("VALUE4", "BLOCK3"); template.setBlock("CONTENT", "BLOCK4"); template.setValue("VALUE1", "value 1 late"); template.setValue("VALUE2", "value 2 late"); // has no influence template.setValue("VALUE3", "value 3 late"); // has no influence template.setValue("VALUE4", "value 4 late"); // has no influence assertEquals(template.getContent(), getTemplateContent("construction_repeated_out", TemplateFactory.TXT.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConstructionOverriding() { Template template = null; try { template = TemplateFactory.TXT.get("construction_overriding_in"); assertTrue(!template.isValueSet("VALUE2")); template.setValue("VALUE2", "value2"); assertTrue(template.isValueSet("VALUE2")); template.setBlock("VALUE2", "BLOCK1"); assertTrue(template.isValueSet("VALUE2")); template.setValue("VALUE1", "value1"); assertEquals(template.getBlock("BLOCK2"), getTemplateContent("construction_overriding_out_1", TemplateFactory.TXT.getParser())); template.clear(); assertTrue(!template.isValueSet("VALUE2")); template.setBlock("VALUE2", "BLOCK1"); assertTrue(template.isValueSet("VALUE2")); template.setValue("VALUE2", "value2"); assertTrue(template.isValueSet("VALUE2")); template.setValue("VALUE1", "value1"); assertEquals(template.getBlock("BLOCK2"), getTemplateContent("construction_overriding_out_2", TemplateFactory.TXT.getParser())); template.clear(); assertTrue(!template.isValueSet("VALUE2")); template.setValue("VALUE2", "value2 "); assertTrue(template.isValueSet("VALUE2")); template.appendBlock("VALUE2", "BLOCK1"); assertTrue(template.isValueSet("VALUE2")); template.setValue("VALUE1", "value1"); assertEquals(template.getBlock("BLOCK2"), getTemplateContent("construction_overriding_out_3", TemplateFactory.TXT.getParser())); template.clear(); assertTrue(!template.isValueSet("VALUE2")); template.setBlock("VALUE2", "BLOCK1"); assertTrue(template.isValueSet("VALUE2")); template.appendValue("VALUE2", " value2"); assertTrue(template.isValueSet("VALUE2")); template.setValue("VALUE1", "value1"); assertEquals(template.getBlock("BLOCK2"), getTemplateContent("construction_overriding_out_4", TemplateFactory.TXT.getParser())); template.clear(); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConstructionDefaultValue() { Template template = null; try { template = TemplateFactory.TXT.get("construction_defaultvalue_in"); template.setValue("VALUE1", "value1"); assertEquals(template.getBlock("BLOCK2"), getTemplateContent("construction_defaultvalue_out", TemplateFactory.TXT.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConstructionEmbedded() { Template template = null; try { template = TemplateFactory.TXT.get("contruction_embedded_in"); template.setValue("member_value1", 1); template.appendBlock("rows", "row_first"); template.setValue("member_value1", 2); template.appendBlock("rows", "row_second"); template.setValue("member_value1", 3); template.appendBlock("rows", "row_first"); template.setValue("member_value1", 4); template.appendBlock("rows", "row_second"); template.appendBlock("rows", "row_first"); template.setValue("member_value2", 5); assertEquals(template.getContent(), getTemplateContent("contruction_embedded_out", TemplateFactory.TXT.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConstructionInternalValues() { Template template = null; try { template = TemplateFactory.TXT.get("contruction_internalvalues_in"); TreeNode tree = new TreeNode(template); TreeNode node1 = new TreeNode(tree, "node1"); TreeNode node2 = new TreeNode(tree, "node2"); TreeNode node3 = new TreeNode(tree, "node3"); new TreeNode(node1, "node1a"); new TreeNode(node1, "node1b"); new TreeNode(node1, "node1c"); TreeNode node2a = new TreeNode(node2, "node2a"); new TreeNode(node2, "node2b"); new TreeNode(node3, "node3a"); new TreeNode(node3, "node3b"); new TreeNode(node2a, "node2a1"); new TreeNode(node2a, "node2a2"); tree.output(); assertEquals(template.getContent(), getTemplateContent("contruction_internalvalues_out", TemplateFactory.TXT.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConstructionInternalBlocksNameHashcodeConflicts() { try { assertTrue("DMn0".hashCode() == "Cln0".hashCode()); assertTrue("DMn0".hashCode() == "DNNO".hashCode()); assertTrue("FMmO".hashCode() == "EmMn".hashCode()); assertTrue("DMn0".hashCode() != "FMmO".hashCode()); assertTrue("DMn0".hashCode() != "HNMn".hashCode()); assertTrue("FMmO".hashCode() != "HNMn".hashCode()); Template template = TemplateFactory.HTML.get("blocks_stringconflicts_in"); InternalValue internal = template.createInternalValue(); internal.appendBlock("DMn0"); internal.appendBlock("Cln0"); internal.appendBlock("DNNO"); internal.appendBlock("FMmO"); internal.appendBlock("EmMn"); internal.appendBlock("HNMn"); template.setValue("result", internal); assertEquals(template.getValue("result"), "1 : the first block"+ "1 : the second block"+ "1 : the third block"+ "2 : the first block"+ "2 : the second block"+ "3 : the first block"); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } class TreeNode { private Template mTemplate = null; private String mText = null; private ArrayList<TreeNode> mChildren = new ArrayList<TreeNode>(); private TreeNode mParent = null; public TreeNode(Template template) { mTemplate = template; } public TreeNode(TreeNode parent, String text) { if (null == text) throw new IllegalArgumentException("title can't be null."); parent.addChild(this); mText = text; mTemplate = parent.mTemplate; } public void output() { if (0 == mChildren.size()) { mTemplate.setValue("level", ""); } else { InternalValue nodes = mTemplate.createInternalValue(); InternalValue text = null; int depth = 0; int counter = 0; for (TreeNode child : mChildren) { child.output(); depth = child.getDepth(); mTemplate.removeValue("indent"); if (1 == depth) { mTemplate.setValue("indent", ""); } else { for (int i = 1; i < depth; i++) { mTemplate.appendBlock("indent", "indent"); } } mTemplate.setValue("depth", depth); text = mTemplate.createInternalValue(); text.appendValue(++counter); text.appendValue("-"); text.appendValue(child.getText()); mTemplate.setValue("text", text); nodes.appendBlock("node"); } mTemplate.setValue("nodes", nodes); mTemplate.setBlock("level", "level"); } } private void addChild(TreeNode child) { child.mParent = this; mChildren.add(child); } public String getText() { return mText; } public TreeNode getParent() { return mParent; } public int getDepth() { TreeNode parent = getParent(); int depth = 0; while (parent != null) { parent = parent.getParent(); depth++; } return depth; } } public void testHasValues() { Template template = null; try { template = TemplateFactory.HTML.get("defaultvalues_in"); assertTrue(template.hasValueId("VALUE1")); assertTrue(template.hasValueId("VALUE2")); assertTrue(template.hasValueId("VALUE3")); assertTrue(false == template.hasValueId("VALUE4")); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testUnsetValuesOutput() { Template template = TemplateFactory.HTML.get("unsetvalues_output_in"); assertTrue(template.hasValueId("VALUE1")); assertTrue(template.hasValueId("VALUE2")); assertTrue(template.hasValueId("VALUE3")); assertTrue(template.hasValueId("VALUE4")); assertTrue(template.hasValueId("VALUE5")); assertTrue(template.hasValueId("VALUE6")); assertTrue(template.hasValueId("VALUE7")); assertEquals(template.getContent(), getTemplateContent("unsetvalues_output_in", TemplateFactory.HTML.getParser())); } public void testSetBeanValues() { try { Template template = TemplateFactory.HTML.get("values_bean_in"); BeanImpl bean = new BeanImpl(); template.setBean(bean); assertEquals(template.getContent(), getTemplateContent("values_bean_out", TemplateFactory.HTML.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testRemoveBeanValues() { try { Template template = TemplateFactory.HTML.get("values_bean_in"); BeanImpl bean = new BeanImpl(); template.setBean(bean); assertEquals(template.getContent(), getTemplateContent("values_bean_out", TemplateFactory.HTML.getParser())); template.removeBean(bean); assertEquals(template.getContent(), getTemplateContent("values_bean_in", TemplateFactory.HTML.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testSetBeanValuesPrefix() { try { Template template = TemplateFactory.HTML.get("values_bean_prefix_in"); BeanImpl bean = new BeanImpl(); template.setBean(bean, "PREFIX:"); assertEquals(template.getContent(), getTemplateContent("values_bean_prefix_out", TemplateFactory.HTML.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testRemoveBeanValuesPrefix() { try { Template template = TemplateFactory.HTML.get("values_bean_prefix_in"); BeanImpl bean = new BeanImpl(); template.setBean(bean, "PREFIX:"); assertEquals(template.getContent(), getTemplateContent("values_bean_prefix_out", TemplateFactory.HTML.getParser())); template.removeBean(bean, "WRONGPREFIX:"); assertEquals(template.getContent(), getTemplateContent("values_bean_prefix_out", TemplateFactory.HTML.getParser())); template.removeBean(bean, "PREFIX:"); assertEquals(template.getContent(), getTemplateContent("values_bean_prefix_in", TemplateFactory.HTML.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testSetBeanValuesHtml() { try { Template template = null; HtmlBeanImpl bean = new HtmlBeanImpl(); template = TemplateFactory.HTML.get("values_bean_html_in"); template.setBean(bean, "PARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_emptyproperty", TemplateFactory.HTML.getParser())); bean = new HtmlBeanImpl(); bean.setColors(new String[] {"red", "blue", "yellow"}); bean.setWantsupdates(true); bean.setFirstname("Geert"); bean.setLastname("Bevin"); template = TemplateFactory.HTML.get("values_bean_html_in"); template.setBean(bean, "PARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_content1", TemplateFactory.HTML.getParser())); bean = new HtmlBeanImpl(); bean.setColors(new String[] {"red", "orange", "white"}); bean.setWantsupdates(false); bean.setFirstname("Nathalie"); bean.setLastname("&<>"); template = TemplateFactory.HTML.get("values_bean_html_in"); template.setBean(bean, "PARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_content2", TemplateFactory.HTML.getParser())); bean.addConstraint(new ConstrainedProperty("lastname").displayedRaw(true)); template = TemplateFactory.HTML.get("values_bean_html_in"); template.setBean(bean, "PARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_content3", TemplateFactory.HTML.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testRemoveBeanValuesHtml() { try { Template template = null; HtmlBeanImpl bean = new HtmlBeanImpl(); bean = new HtmlBeanImpl(); bean.setColors(new String[] {"red", "blue", "yellow"}); bean.setWantsupdates(true); bean.setFirstname("Geert"); bean.setLastname("Bevin"); template = TemplateFactory.HTML.get("values_bean_html_in"); template.setBean(bean, "PARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_content1", TemplateFactory.HTML.getParser())); template.removeBean(bean, "WRONGPARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_content1", TemplateFactory.HTML.getParser())); template.removeBean(bean, "PARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_empty", TemplateFactory.HTML.getParser())); bean = new HtmlBeanImpl(); bean.setColors(new String[] {"red", "orange", "white"}); bean.setWantsupdates(false); bean.setFirstname("Nathalie"); bean.setLastname("&<>"); template = TemplateFactory.HTML.get("values_bean_html_in"); template.setBean(bean, "PARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_content2", TemplateFactory.HTML.getParser())); template.removeBean(bean, "WRONGPARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_content2", TemplateFactory.HTML.getParser())); template.removeBean(bean, "PARAM:"); assertEquals(template.getContent(), getTemplateContent("values_bean_html_out_empty", TemplateFactory.HTML.getParser())); } catch (TemplateException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } }