package org.trimou.engine.resolver.i18n;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Locale;
import org.junit.Before;
import org.junit.Test;
import org.trimou.AbstractEngineTest;
import org.trimou.Mustache;
import org.trimou.engine.MustacheEngineBuilder;
import org.trimou.engine.locale.FixedLocaleSupport;
import org.trimou.util.ImmutableMap;
/**
*
* @author Martin Kouba
*/
public class NumberFormatResolverTest extends AbstractEngineTest {
private NumberFormatResolver resolver;
@Override
@Before
public void buildEngine() {
resolver = new NumberFormatResolver();
engine = MustacheEngineBuilder.newBuilder()
.setLocaleSupport(
FixedLocaleSupport.from(new Locale("cs", "CZ")))
.addResolver(resolver).build();
}
@Test
public void testResolution() {
assertNull(resolver.resolve(new Date(), "foo", null));
assertNull(resolver.resolve(5, "foo", null));
assertNotNull(resolver.resolve(5, NumberFormatResolver.NAME_FORMAT,
null));
}
@Test
public void testInterpolation() {
String templateContents = "{{number.format}}|{{number.formatPercent}}|{{number.formatCurrency}}";
Mustache mustache = engine.compileMustache("number", templateContents);
assertEquals("1,5|150%|1,5 Kč", mustache.render(ImmutableMap
.<String, Object> of("number", new BigDecimal("1.5"))));
}
@Test(expected=IllegalStateException.class)
public void testMultipleInit() {
NumberFormatResolver resolver = new NumberFormatResolver();
// Just to init the resolver
MustacheEngineBuilder.newBuilder()
.omitServiceLoaderConfigurationExtensions()
.addResolver(resolver).build();
resolver.init(null);
}
}