2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
6 package org.apidesign.apifest08.test;
8 import java.math.BigDecimal;
9 import java.text.SimpleDateFormat;
10 import junit.framework.TestCase;
11 import org.apidesign.apifest08.currency.ConversionResult;
12 import org.apidesign.apifest08.currency.Convertor;
13 import org.apidesign.apifest08.currency.ConvertorCurrency;
14 import org.apidesign.apifest08.currency.ExchangeRateProvider;
18 * @author arnostvalicek
20 public class RemainderTest extends TestCase {
21 private static ConvertorCurrency CZK = ConvertorCurrency.getInstance("CZK");
22 private static ConvertorCurrency SKK = ConvertorCurrency.getInstance("SKK");
23 private static ConvertorCurrency USD = ConvertorCurrency.getInstance("USD");
24 private SimpleDateFormat df;
27 protected void setUp() throws Exception {
29 df = new SimpleDateFormat("yyyy-MM-dd HH:mm zzzz");
34 protected void tearDown() throws Exception {
38 public void testRemainder1() {
39 Convertor c = Task2Test.createUsdToSkkConvertor();
41 final BigDecimal convertedValue = new BigDecimal("12.34");
42 ConversionResult result = c.convertWithReversibleRates(SKK,USD,convertedValue);
43 //System.out.println("Result = "+result);
44 assertEquals("Converted", new BigDecimal("0.61"),result.getConverted());
45 assertEquals("Remainder", new BigDecimal("0.14"),result.getRemainder());
47 ConversionResult resultBack = c.convertWithReversibleRates(USD, SKK, result.getConverted());
48 assertEquals("Conversion back", convertedValue, resultBack.getConverted().add(result.getRemainder()));
52 ConversionResult result = c.convertWithReversibleRates(SKK,USD,new BigDecimal("20.00"));
53 //System.out.println("Result = "+result);
57 ConversionResult result = c.convertWithReversibleRates(USD,SKK,new BigDecimal("1.00"));
58 //System.out.println("Result = "+result);
63 public void testRemainderStripCents() {
64 ConvertorCurrency CZK_cents=ConvertorCurrency.getInstance("CZK", 2);
65 ConvertorCurrency CZK_nocents=ConvertorCurrency.getInstance("CZK", 0);
68 ExchangeRateProvider exchangeRateProvider = ExchangeRateProvider.createExchangeRateProvider();
69 exchangeRateProvider.addFixedCurencyRate(CZK_cents, new BigDecimal(1), CZK_nocents, new BigDecimal(1));
71 Convertor c = Convertor.createConvertor(exchangeRateProvider);
73 ConversionResult result = c.convertWithReversibleRates(CZK_cents, CZK_nocents, new BigDecimal("2.34"));
74 assertEquals("Converted",new BigDecimal("2"),result.getConverted());
75 assertEquals("Remainder",new BigDecimal("0.34"),result.getRemainder());