package org.watertemplate; import org.junit.Assert; import org.junit.Test; import org.watertemplate.Template; import org.watertemplate.TemplateMap; public class LazySubtemplatesTest { @Test public void lazySubTemplates() { class LazySubTemplate extends Template { int timesRendered = 0; @Override protected void addSubTemplates(TemplateMap.SubTemplates subTemplates) { // each time the renderer renders a template this method is called once. timesRendered++; } @Override protected String getFilePath() { return "lazy_sub_templates/sub_template.html"; } } class LazyTemplate extends Template { final LazySubTemplate subTemplate = new LazySubTemplate(); LazyTemplate(Boolean renderSubTemplate) { add("render_sub_templates", renderSubTemplate); } @Override protected void addSubTemplates(TemplateMap.SubTemplates subTemplates) { subTemplates.add("sub_template", subTemplate); } @Override protected String getFilePath() { return "lazy_sub_templates/template.html"; } } LazyTemplate lazyTemplate = new LazyTemplate(false); Assert.assertEquals("", lazyTemplate.render()); Assert.assertEquals(0, lazyTemplate.subTemplate.timesRendered); lazyTemplate = new LazyTemplate(true); Assert.assertEquals("\nrendered\n", lazyTemplate.render()); Assert.assertEquals(1, lazyTemplate.subTemplate.timesRendered); Assert.assertEquals("\nrendered\n", lazyTemplate.render()); Assert.assertEquals(2, lazyTemplate.subTemplate.timesRendered); } }