package pl.droidsonroids.jspoon; import static org.junit.Assert.assertEquals; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.ParseException; import java.util.Locale; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import pl.droidsonroids.jspoon.annotation.Format; import pl.droidsonroids.jspoon.annotation.Selector; import pl.droidsonroids.jspoon.rule.CustomLocaleRule; public class BigDecimalFormatTest { private Jspoon jspoon; @Rule public CustomLocaleRule customLocaleRule = new CustomLocaleRule(Locale.US); @Before public void setUp() { jspoon = Jspoon.create(); } private static class Money { @Selector(value = "#amount", format = "0,000.00") BigDecimal amount; @Format("0,000.00") @Selector(value = "#amount") BigDecimal amount2; } @Test public void amount() throws ParseException { Money money = createObjectFromHtml(Money.class); DecimalFormat format = new DecimalFormat("0,000.00"); format.setParseBigDecimal(true); BigDecimal expected = (BigDecimal) format.parse("50,000.00"); assertEquals(expected, money.amount); assertEquals(expected, money.amount2); } private <T> T createObjectFromHtml(Class<T> className) { HtmlAdapter<T> htmlAdapter = jspoon.adapter(className); return htmlAdapter.fromHtml("<div>" + "<span id='amount'>50,000.00</span>" + "</div>"); } }