package humanize.measure;
import humanize.Humanize;
import humanize.spi.MessageFormat;
import humanize.text.FormatFactory;
import java.text.Format;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.measure.Measure;
import javax.measure.MeasureFormat;
import javax.measure.unit.NonSI;
import javax.measure.unit.SI;
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestHumanizeIntegration
{
@Test
public void testExplicitRegistration()
{
Map<String, FormatFactory> registry = new HashMap<String, FormatFactory>();
registry.put("measure", new FormatFactory()
{
@Override
public Format getFormat(String name, String args, Locale locale)
{
return MeasureFormat.getInstance();
}
});
MessageFormat mf = new MessageFormat("measure: {0, measure}", Locale.ENGLISH, registry);
Assert.assertEquals(mf.render(Measure.valueOf(100, SI.GRAM.times(1000))), "measure: 100 kg");
Assert.assertEquals(mf.render(Measure.valueOf(100, SI.KILOGRAM.times(1000))), "measure: 100 t");
Assert.assertEquals(mf.render(Measure.valueOf(100, NonSI.MILES_PER_HOUR)), "measure: 100 mph");
}
@Test
public void testRegistration()
{
MessageFormat mf = new MessageFormat("{1,number} weight: {0, measure}", Locale.ENGLISH);
Assert.assertEquals(mf.render(Measure.valueOf(1000, SI.GRAM.times(1000)), 1), "1 weight: 1,000 kg");
Assert.assertEquals(mf.render(Measure.valueOf(100, SI.KILOGRAM.times(1000)), 1), "1 weight: 100 t");
Assert.assertEquals(Humanize.format("{0, measure}", Measure.valueOf(100, SI.GRAM.times(1000))), "100 kg");
Assert.assertEquals(Humanize.format("{0, measure, standard}", Measure.valueOf(100, SI.GRAM.times(1000))),
"100 kg");
MessageFormat esFormat = Humanize.messageFormat("{0, measure}", new Locale("es"));
Assert.assertEquals(esFormat.render(Measure.valueOf(1000, SI.GRAM.times(1000))), "1.000 kg");
Assert.assertEquals(esFormat.render(Measure.valueOf(1000, NonSI.DAY_SIDEREAL)), "1.000 day_sidereal");
}
}