public void testConvert() throws Exception { expect(mockExchangeDas.findExchange(ENTITY_ID, 200)) .andReturn(_mockCurrencyExchangeDTO("0.98")) .once(); expect(mockExchangeDas.findExchange(ENTITY_ID, 201)) .andReturn(_mockCurrencyExchangeDTO("1.20")) .once(); replay(mockCurrencyDas, mockExchangeDas); // convert $20.00 CAD to AUD - approximated conversion rates ;) CurrencyBL bl = new CurrencyBL(mockCurrencyDas, mockExchangeDas); BigDecimal amount = bl.convert(200, 201, new BigDecimal("20.00"), ENTITY_ID); verify(mockCurrencyDas, mockExchangeDas); assertEquals(new BigDecimal("24.48979"), amount); }
public void testConvertRepeatingDecimal() throws Exception { expect(mockExchangeDas.findExchange(ENTITY_ID, 200)) .andReturn(_mockCurrencyExchangeDTO("3.00")) .once(); expect(mockExchangeDas.findExchange(ENTITY_ID, 201)) .andReturn(_mockCurrencyExchangeDTO("1.00")) .once(); replay(mockCurrencyDas, mockExchangeDas); /* Pivot calculation will result in a value of 3.333333~ repeating, which will cause an ArithmeticException if not handled correctly. 10.00 / 3.00 = 3.333333~ */ CurrencyBL bl = new CurrencyBL(mockCurrencyDas, mockExchangeDas); BigDecimal amount = bl.convert(200, 201, new BigDecimal("10.00"), ENTITY_ID); verify(mockCurrencyDas, mockExchangeDas); assertEquals(new BigDecimal("3.33"), amount); }