task3/solution02/test/org/apidesign/apifest08/currency/CompositeConvertorTest.java
1 package org.apidesign.apifest08.currency;
3 import static junit.framework.Assert.assertEquals;
4 import static junit.framework.Assert.assertFalse;
5 import static junit.framework.Assert.assertTrue;
6 import static junit.framework.Assert.fail;
7 import static org.apidesign.apifest08.test.Task1Test.CZK;
8 import static org.apidesign.apifest08.test.Task1Test.SKK;
9 import static org.apidesign.apifest08.test.Task1Test.USD;
11 import org.junit.Test;
13 public class CompositeConvertorTest {
14 private static final ExtendedConvertor USD_CZK_CONVERTOR = ConvertorFactory.createConvertor(new MoneyImpl(1,USD), new MoneyImpl(17,CZK));
15 private static final ExtendedConvertor SKK_CZK_CONVERTOR = ConvertorFactory.createConvertor(new MoneyImpl(100,SKK), new MoneyImpl(80,CZK));
18 public void testCompose()
20 ExtendedConvertor convertor = new CompositeConvertor(USD_CZK_CONVERTOR, SKK_CZK_CONVERTOR);
21 assertTrue(convertor.isConversionSupported(CZK, SKK));
22 assertTrue(convertor.isConversionSupported(CZK, USD));
23 assertFalse(convertor.isConversionSupported(SKK, USD));
24 assertEquals(new MoneyImpl(10,SKK), convertor.convert(new MoneyImpl(8,CZK), SKK));
25 assertEquals(new MoneyImpl(2,USD), convertor.convert(new MoneyImpl(34,CZK), USD));
28 convertor.convert(new MoneyImpl(34,SKK), USD);
29 fail("Exception expected");
31 catch(IllegalArgumentException e)
33 assertTrue("Ok", true);
37 public void testEmpty()
39 ExtendedConvertor convertor = new CompositeConvertor();
40 assertFalse(convertor.isConversionSupported(SKK, USD));
43 convertor.convert(new MoneyImpl(34,SKK), USD);
44 fail("Exception expected");
46 catch(IllegalArgumentException e)
48 assertTrue("Ok", true);
51 @Test(expected=NullPointerException.class)
52 public void testCreateNull()
54 new CompositeConvertor(USD_CZK_CONVERTOR, null);