package com.github.mustachejava; import org.junit.Test; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; import static org.junit.Assert.assertEquals; public class DelimiterTest { @Test public void testMavenDelimiter() throws IOException { DefaultMustacheFactory mf = new NoEncodingMustacheFactory(); Mustache maven = mf.compile(new StringReader("Hello, ${foo}."), "maven", "${", "}"); StringWriter sw = new StringWriter(); maven.execute(sw, new Object() { String foo = "Jason"; }).close(); assertEquals("Hello, Jason.", sw.toString()); } @Test public void testAntDelimiter() throws IOException { DefaultMustacheFactory mf = new NoEncodingMustacheFactory(); Mustache maven = mf.compile(new StringReader("Hello, @foo@."), "maven", "@", "@"); StringWriter sw = new StringWriter(); maven.execute(sw, new Object() { String foo = "Jason"; }).close(); assertEquals("Hello, Jason.", sw.toString()); } @Test public void testWithTemplateFunction() throws IOException { DefaultMustacheFactory mf = new DefaultMustacheFactory(); Mustache maven = mf.compile(new StringReader("Hello, ${#f}${foo}${/f}."), "maven", "${", "}"); StringWriter sw = new StringWriter(); maven.execute(sw, new Object() { TemplateFunction f = (s) -> s; String foo = "Jason"; }).close(); assertEquals("Hello, Jason.", sw.toString()); } @Test public void testWithTemplateFunction2() throws IOException { DefaultMustacheFactory mf = new DefaultMustacheFactory(); Mustache maven = mf.compile(new StringReader("Hello, ${foo}."), "maven", "${", "}"); StringWriter sw = new StringWriter(); maven.execute(sw, new Object() { TemplateFunction foo = (s) -> "${name}"; String name = "Jason"; }).close(); assertEquals("Hello, ${name}.", sw.toString()); } @Test public void testStrSubstitutor() throws IOException { DefaultMustacheFactory mf = new DefaultMustacheFactory(); Mustache maven = mf.compile(new StringReader("Hello, $<foo>."), "maven", "$<", ">"); StringWriter sw = new StringWriter(); maven.execute(sw, new Object() { String foo = "Jason"; }).close(); assertEquals("Hello, Jason.", sw.toString()); } @Test public void testStrSubstitutor2() throws IOException { DefaultMustacheFactory mf = new DefaultMustacheFactory(); Mustache maven = mf.compile(new StringReader("{{=$< >=}}Hello, $<foo>."), "maven"); StringWriter sw = new StringWriter(); maven.execute(sw, new Object() { String foo = "Jason"; }).close(); assertEquals("Hello, Jason.", sw.toString()); } private static class NoEncodingMustacheFactory extends DefaultMustacheFactory { @Override public void encode(String value, Writer writer) { // TODO: encoding rules try { writer.write(value); } catch (IOException e) { throw new MustacheException(e); } } } }