task4/solution13/test/org/apidesign/apifest08/test/RemainderTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 25 Oct 2008 20:53:00 +0200
changeset 84 2ae6e4aa7aef
permissions -rw-r--r--
Solutions by Petr Smid
     1 /*
     2  * To change this template, choose Tools | Templates
     3  * and open the template in the editor.
     4  */
     5 
     6 package org.apidesign.apifest08.test;
     7 
     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;
    15 
    16 /**
    17  *
    18  * @author arnostvalicek
    19  */
    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;
    25     
    26     @Override
    27     protected void setUp() throws Exception {
    28         super.setUp();
    29         df = new SimpleDateFormat("yyyy-MM-dd HH:mm zzzz");
    30         
    31     }
    32 
    33     @Override
    34     protected void tearDown() throws Exception {
    35         super.tearDown();
    36     }
    37     
    38     public void testRemainder1() {
    39         Convertor c = Task2Test.createUsdToSkkConvertor();
    40         {
    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());
    46             
    47             ConversionResult resultBack = c.convertWithReversibleRates(USD, SKK, result.getConverted());
    48             assertEquals("Conversion back", convertedValue, resultBack.getConverted().add(result.getRemainder()));
    49             
    50         }
    51         {
    52             ConversionResult result = c.convertWithReversibleRates(SKK,USD,new BigDecimal("20.00"));
    53             //System.out.println("Result = "+result);
    54         }
    55     
    56         {
    57             ConversionResult result = c.convertWithReversibleRates(USD,SKK,new BigDecimal("1.00"));
    58             //System.out.println("Result = "+result);
    59         }
    60         
    61     }
    62     
    63     public void testRemainderStripCents() {
    64         ConvertorCurrency CZK_cents=ConvertorCurrency.getInstance("CZK", 2);
    65         ConvertorCurrency CZK_nocents=ConvertorCurrency.getInstance("CZK", 0);
    66         
    67         
    68         ExchangeRateProvider exchangeRateProvider = ExchangeRateProvider.createExchangeRateProvider();
    69         exchangeRateProvider.addFixedCurencyRate(CZK_cents, new BigDecimal(1), CZK_nocents, new BigDecimal(1));
    70         
    71         Convertor c = Convertor.createConvertor(exchangeRateProvider);
    72         
    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());
    76     }
    77     
    78     
    79 
    80 }