@Override public String titleStringWithMask(final Object value, final String usingMask) { if (value == null) { return ""; } final Money money = (Money) value; return new DecimalFormat(usingMask).format(money.doubleValue()); }
@Override protected String doEncode(final Object object) { final Money money = (Money) object; final String value = String.valueOf(money.doubleValue()) + " " + money.getCurrency(); return value; }
@Override public String titleString(final Object object, final Localization localization) { if (object == null) { return ""; } final Money money = (Money) object; final boolean localCurrency = LOCAL_CURRENCY_CODE.equals(money.getCurrency()); if (localCurrency) { return DEFAULT_CURRENCY_FORMAT.format(money.doubleValue()); } else { return DEFAULT_NUMBER_FORMAT.format(money.doubleValue()) + " " + money.getCurrency(); } }
@Override protected Object preparedStatementObject(final int index, final Object o) { if (o instanceof Money) { if (index == 0) { return ((Money) o).doubleValue(); } else { return ((Money) o).getCurrency(); } } else { throw new PersistFailedException("Invalid object type " + o.getClass().getCanonicalName() + " for MoneyValueMapper"); } }
@Test public void testDouble() { final Money m1 = new Money(100, "pds"); assertEquals(100.0, m1.doubleValue(), 0.0); }
@Test public void testDoubleRoundingDown() { final Money m1 = new Money(100.154, "pds"); assertEquals(100.15, m1.doubleValue(), 0.0); }
@Test public void testDoubleConstructor() { final Money m1 = new Money(100.15, "pds"); assertEquals(100.15, m1.doubleValue(), 0.0); }
@Test public void testDoubleRoundingUp() { final Money m1 = new Money(100.156, "pds"); assertEquals(100.16, m1.doubleValue(), 0.0); }
@Test public void testCreateFromDouble() { final Money m1 = new Money(100.50, "pds"); assertEquals("100.50", m1.getAmount().toString()); assertEquals(100.50, m1.doubleValue(), 0.0); }
@Test public void testAdd() { final Money m1 = new Money(110, "pds"); final Money m2 = new Money(220, "pds"); final Money m3 = m1.add(m2); assertEquals(330.0, m3.doubleValue(), 0.0); }
@Test public void testAddWithCents() { final Money m1 = new Money(110.10, "pds"); final Money m2 = new Money(220.50, "pds"); final Money m3 = m1.add(m2); assertEquals(330.60, m3.doubleValue(), 0.0); }
@Test public void testSubtract() { final Money m1 = new Money(300, "pds"); final Money m2 = new Money(100, "pds"); final Money m3 = m1.subtract(m2); assertEquals(200.0, m3.doubleValue(), 0.0); }