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
jaroslav@63
     1
/*
jaroslav@63
     2
 * To change this template, choose Tools | Templates
jaroslav@63
     3
 * and open the template in the editor.
jaroslav@63
     4
 */
jaroslav@63
     5
jaroslav@63
     6
package org.apidesign.apifest08.test;
jaroslav@63
     7
jaroslav@63
     8
import java.math.BigDecimal;
jaroslav@63
     9
import java.text.SimpleDateFormat;
jaroslav@63
    10
import junit.framework.TestCase;
jaroslav@63
    11
import org.apidesign.apifest08.currency.ConversionResult;
jaroslav@63
    12
import org.apidesign.apifest08.currency.Convertor;
jaroslav@63
    13
import org.apidesign.apifest08.currency.ConvertorCurrency;
jaroslav@63
    14
import org.apidesign.apifest08.currency.ExchangeRateProvider;
jaroslav@63
    15
jaroslav@63
    16
/**
jaroslav@63
    17
 *
jaroslav@63
    18
 * @author arnostvalicek
jaroslav@63
    19
 */
jaroslav@63
    20
public class RemainderTest extends TestCase {
jaroslav@63
    21
    private static ConvertorCurrency CZK = ConvertorCurrency.getInstance("CZK");
jaroslav@63
    22
    private static ConvertorCurrency SKK = ConvertorCurrency.getInstance("SKK");
jaroslav@63
    23
    private static ConvertorCurrency USD = ConvertorCurrency.getInstance("USD");
jaroslav@63
    24
    private SimpleDateFormat df;
jaroslav@63
    25
    
jaroslav@63
    26
    @Override
jaroslav@63
    27
    protected void setUp() throws Exception {
jaroslav@63
    28
        super.setUp();
jaroslav@63
    29
        df = new SimpleDateFormat("yyyy-MM-dd HH:mm zzzz");
jaroslav@63
    30
        
jaroslav@63
    31
    }
jaroslav@63
    32
jaroslav@63
    33
    @Override
jaroslav@63
    34
    protected void tearDown() throws Exception {
jaroslav@63
    35
        super.tearDown();
jaroslav@63
    36
    }
jaroslav@63
    37
    
jaroslav@63
    38
    public void testRemainder1() {
jaroslav@63
    39
        Convertor c = Task2Test.createUsdToSkkConvertor();
jaroslav@63
    40
        {
jaroslav@63
    41
            final BigDecimal convertedValue = new BigDecimal("12.34");
jaroslav@63
    42
            ConversionResult result = c.convertWithReversibleRates(SKK,USD,convertedValue);
jaroslav@63
    43
            //System.out.println("Result = "+result);
jaroslav@63
    44
            assertEquals("Converted", new BigDecimal("0.61"),result.getConverted());
jaroslav@63
    45
            assertEquals("Remainder", new BigDecimal("0.14"),result.getRemainder());
jaroslav@63
    46
            
jaroslav@63
    47
            ConversionResult resultBack = c.convertWithReversibleRates(USD, SKK, result.getConverted());
jaroslav@63
    48
            assertEquals("Conversion back", convertedValue, resultBack.getConverted().add(result.getRemainder()));
jaroslav@63
    49
            
jaroslav@63
    50
        }
jaroslav@63
    51
        {
jaroslav@63
    52
            ConversionResult result = c.convertWithReversibleRates(SKK,USD,new BigDecimal("20.00"));
jaroslav@63
    53
            //System.out.println("Result = "+result);
jaroslav@63
    54
        }
jaroslav@63
    55
    
jaroslav@63
    56
        {
jaroslav@63
    57
            ConversionResult result = c.convertWithReversibleRates(USD,SKK,new BigDecimal("1.00"));
jaroslav@63
    58
            //System.out.println("Result = "+result);
jaroslav@63
    59
        }
jaroslav@63
    60
        
jaroslav@63
    61
    }
jaroslav@63
    62
    
jaroslav@63
    63
    public void testRemainderStripCents() {
jaroslav@63
    64
        ConvertorCurrency CZK_cents=ConvertorCurrency.getInstance("CZK", 2);
jaroslav@63
    65
        ConvertorCurrency CZK_nocents=ConvertorCurrency.getInstance("CZK", 0);
jaroslav@63
    66
        
jaroslav@63
    67
        
jaroslav@63
    68
        ExchangeRateProvider exchangeRateProvider = ExchangeRateProvider.createExchangeRateProvider();
jaroslav@63
    69
        exchangeRateProvider.addFixedCurencyRate(CZK_cents, new BigDecimal(1), CZK_nocents, new BigDecimal(1));
jaroslav@63
    70
        
jaroslav@63
    71
        Convertor c = Convertor.createConvertor(exchangeRateProvider);
jaroslav@63
    72
        
jaroslav@63
    73
        ConversionResult result = c.convertWithReversibleRates(CZK_cents, CZK_nocents, new BigDecimal("2.34"));
jaroslav@63
    74
        assertEquals("Converted",new BigDecimal("2"),result.getConverted());
jaroslav@63
    75
        assertEquals("Remainder",new BigDecimal("0.34"),result.getRemainder());
jaroslav@63
    76
    }
jaroslav@63
    77
    
jaroslav@63
    78
    
jaroslav@63
    79
jaroslav@63
    80
}