package org.trimou.engine.convert;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.trimou.AbstractTest;
import org.trimou.engine.MustacheEngine;
import org.trimou.engine.MustacheEngineBuilder;
/**
*
* @author Martin Kouba
*/
public class ValueConverterTest extends AbstractTest {
@Test
public void testValueConverter() {
MustacheEngine engine = MustacheEngineBuilder.newBuilder()
.addValueConverter((v) -> v.toString().toUpperCase()).build();
assertEquals("FOO", engine
.compileMustache("value_converter", "{{this}}").render("Foo"));
}
@Test
public void testInvalidValueConverter() {
MustacheEngine engine = MustacheEngineBuilder.newBuilder()
.addValueConverter(new ValueConverter() {
@Override
public String convert(Object from) {
return from.toString().toUpperCase();
}
@Override
public boolean isValid() {
return false;
}
}).build();
assertEquals("Foo",
engine.compileMustache("value_converter_invalid", "{{this}}")
.render("Foo"));
}
@Test
public void testValueConverterOrdering() {
MustacheEngine engine = MustacheEngineBuilder.newBuilder()
.addValueConverter(new ValueConverter() {
@Override
public String convert(Object from) {
return from.toString().toUpperCase();
}
@Override
public int getPriority() {
return 1;
}
}).addValueConverter(new ValueConverter() {
@Override
public String convert(Object from) {
return from.toString().toLowerCase();
}
@Override
public int getPriority() {
return 2;
}
}).build();
assertEquals("foo",
engine.compileMustache("value_converter_ordering", "{{this}}")
.render("Foo"));
}
}