package org.trimou.engine.config; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.junit.Test; import org.trimou.AbstractTest; import org.trimou.engine.MustacheEngine; import org.trimou.engine.MustacheEngineBuilder; import org.trimou.engine.listener.AbstractMustacheListener; import org.trimou.engine.resolver.AbstractResolver; import org.trimou.engine.resolver.ResolutionContext; import org.trimou.engine.resolver.Resolver; import org.trimou.engine.validation.Validateable; /** * * @author Martin Kouba */ public class ValidateableComponentsTest extends AbstractTest { @Test public void testValidateableResolver() { MustacheEngine engine = MustacheEngineBuilder.newBuilder() .addResolver(new TestResolver(10, false)) .addResolver(new TestResolver(11, true)).build(); for (Resolver resolver : engine.getConfiguration().getResolvers()) { if (resolver instanceof TestResolver) { if (resolver.getPriority() != 11) { fail(); } } } } @Test public void testValidateableListener() { MustacheEngine engine = MustacheEngineBuilder.newBuilder() .addMustacheListener(new TestListener(false)) .addMustacheListener(new TestListener(true)).build(); assertEquals(1, engine.getConfiguration().getMustacheListeners().size()); assertTrue(engine.getConfiguration().getMustacheListeners().get(0) instanceof TestListener); } private class TestResolver extends AbstractResolver implements Validateable { private final boolean isValid; public TestResolver(int priority, boolean isValid) { super(priority); this.isValid = isValid; } @Override public Object resolve(Object contextObject, String name, ResolutionContext context) { return null; } @Override public boolean isValid() { return isValid; } } private class TestListener extends AbstractMustacheListener implements Validateable { private final boolean isValid; public TestListener(boolean isValid) { this.isValid = isValid; } @Override public boolean isValid() { return isValid; } } }