Пример #1
0
        public void testBaseCurrency()
        {
            Currency EUR = new EURCurrency(), GBP = new GBPCurrency(), USD = new USDCurrency();

            Money m1 = 50000.0 * GBP;
            Money m2 = 100000.0 * EUR;
            Money m3 = 500000.0 * USD;

            ExchangeRateManager.Instance.clear();
            ExchangeRate eur_usd = new ExchangeRate(EUR, USD, 1.2042);
            ExchangeRate eur_gbp = new ExchangeRate(EUR, GBP, 0.6612);

            ExchangeRateManager.Instance.add(eur_usd);
            ExchangeRateManager.Instance.add(eur_gbp);

            Money.conversionType = Money.ConversionType.BaseCurrencyConversion;
            Money.baseCurrency   = EUR;

            Money calculated = m1 * 3.0 + 2.5 * m2 - m3 / 5.0;

            Rounding round = Money.baseCurrency.rounding;
            double   x     = round.Round(m1.value * 3.0 / eur_gbp.rate) + 2.5 * m2.value
                             - round.Round(m3.value / (5.0 * eur_usd.rate));
            Money expected = new Money(x, EUR);

            Money.conversionType = Money.ConversionType.NoConversion;

            if (calculated != expected)
            {
                QAssert.Fail("Wrong result: expected: " + expected + "calculated: " + calculated);
            }
        }
Пример #2
0
        public void testDirect()
        {
            Currency EUR = new EURCurrency(), USD = new USDCurrency();

             ExchangeRate eur_usd = new ExchangeRate(EUR, USD, 1.2042);

             Money m1 = 50000.0 * EUR;
             Money m2 = 100000.0 * USD;

             Money.conversionType = Money.ConversionType.NoConversion;

             Money calculated = eur_usd.exchange(m1);
             Money expected = new Money(m1.value*eur_usd.rate, USD);

             if (!Utils.close(calculated, expected))
             {
               Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             calculated = eur_usd.exchange(m2);
             expected = new Money(m2.value/eur_usd.rate, EUR);

             if (!Utils.close(calculated, expected))
             {
               Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }
        }
Пример #3
0
        public void testAutomated()
        {
            Currency EUR = new EURCurrency(), GBP = new GBPCurrency(), USD = new USDCurrency();

            Money m1 = 50000.0 * GBP;
            Money m2 = 100000.0 * EUR;
            Money m3 = 500000.0 * USD;

            ExchangeRateManager.Instance.clear();
            ExchangeRate eur_usd = new ExchangeRate(EUR, USD, 1.2042);
            ExchangeRate eur_gbp = new ExchangeRate(EUR, GBP, 0.6612);

            ExchangeRateManager.Instance.add(eur_usd);
            ExchangeRateManager.Instance.add(eur_gbp);

            Money.conversionType = Money.ConversionType.AutomatedConversion;

            Money calculated = (m1 * 3.0 + 2.5 * m2) - m3 / 5.0;

            Rounding round = m1.currency.rounding;
            double   x     = m1.value * 3.0 + round.Round(2.5 * m2.value * eur_gbp.rate)
                             - round.Round((m3.value / 5.0) * eur_gbp.rate / eur_usd.rate);
            Money expected = new Money(x, GBP);

            Money.conversionType = Money.ConversionType.NoConversion;

            if (calculated != expected)
            {
                Assert.Fail("Wrong result: " + "expected: " + expected + " calculated: " + calculated);
            }
        }
Пример #4
0
        public void testDirect()
        {
            Currency EUR = new EURCurrency(), USD = new USDCurrency();

            ExchangeRate eur_usd = new ExchangeRate(EUR, USD, 1.2042);

            Money m1 = 50000.0 * EUR;
            Money m2 = 100000.0 * USD;

            Money.conversionType = Money.ConversionType.NoConversion;

            Money calculated = eur_usd.exchange(m1);
            Money expected   = new Money(m1.value * eur_usd.rate, USD);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            calculated = eur_usd.exchange(m2);
            expected   = new Money(m2.value / eur_usd.rate, EUR);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }
        }
Пример #5
0
        public void testBaseCurrency()
        {
            Currency EUR = new EURCurrency(), GBP = new GBPCurrency(), USD = new USDCurrency();

            Money m1 = 50000.0 * GBP;
            Money m2 = 100000.0 * EUR;
            Money m3 = 500000.0 * USD;

            ExchangeRateManager.Instance.clear();
            ExchangeRate eur_usd = new ExchangeRate(EUR, USD, 1.2042);
            ExchangeRate eur_gbp = new ExchangeRate(EUR, GBP, 0.6612);
            ExchangeRateManager.Instance.Add(eur_usd);
            ExchangeRateManager.Instance.Add(eur_gbp);

            Money.conversionType = Money.ConversionType.BaseCurrencyConversion;
            Money.BaseCurrency = EUR;

            Money calculated = m1 * 3.0 + 2.5 * m2 - m3 / 5.0;

            Rounding round = Money.BaseCurrency.rounding;
            double x = round.Round(m1.value * 3.0 / eur_gbp.rate) + 2.5 * m2.value
                    - round.Round(m3.value / (5.0 * eur_usd.rate));
            Money expected = new Money(x, EUR);

            Money.conversionType = Money.ConversionType.NoConversion;

            if (calculated != expected)
            {
                Assert.Fail("Wrong result: expected: " + expected + "calculated: " + calculated);
            }
        }
Пример #6
0
        public void testDerived()
        {
            Currency EUR = new EURCurrency(), USD = new USDCurrency(), GBP = new GBPCurrency();

            ExchangeRate eur_usd = new ExchangeRate(EUR, USD, 1.2042);
            ExchangeRate eur_gbp = new ExchangeRate(EUR, GBP, 0.6612);

            ExchangeRate derived = ExchangeRate.chain(eur_usd, eur_gbp);

            Money m1 = 50000.0 * GBP;
            Money m2 = 100000.0 * USD;

            Money.conversionType = Money.ConversionType.NoConversion;

            Money calculated = derived.exchange(m1);
            Money expected   = new Money(m1.value * eur_usd.rate / eur_gbp.rate, USD);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            calculated = derived.exchange(m2);
            expected   = new Money(m2.value * eur_gbp.rate / eur_usd.rate, GBP);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }
        }
Пример #7
0
        public void testDerived()
        {
            Currency EUR = new EURCurrency(), USD = new USDCurrency(), GBP = new GBPCurrency();

             ExchangeRate eur_usd = new ExchangeRate(EUR, USD, 1.2042);
             ExchangeRate eur_gbp = new ExchangeRate(EUR, GBP, 0.6612);

             ExchangeRate derived = ExchangeRate.chain(eur_usd, eur_gbp);

             Money m1 = 50000.0 * GBP;
             Money m2 = 100000.0 * USD;

             Money.conversionType = Money.ConversionType.NoConversion;

             Money calculated = derived.exchange(m1);
             Money expected = new Money(m1.value*eur_usd.rate/eur_gbp.rate, USD);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             calculated = derived.exchange(m2);
             expected = new Money(m2.value*eur_gbp.rate/eur_usd.rate, GBP);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }
        }
Пример #8
0
        public void testTriangulatedLookup()
        {
            ExchangeRateManager rateManager = ExchangeRateManager.Instance;

            rateManager.clear();

            Currency EUR = new EURCurrency(), USD = new USDCurrency(), ITL = new ITLCurrency();

            ExchangeRate eur_usd1 = new ExchangeRate(EUR, USD, 1.1983);
            ExchangeRate eur_usd2 = new ExchangeRate(EUR, USD, 1.2042);

            rateManager.add(eur_usd1, new Date(4, Month.August, 2004));
            rateManager.add(eur_usd2, new Date(5, Month.August, 2004));

            Money m1 = 50000000.0 * ITL;
            Money m2 = 100000.0 * USD;

            Money.conversionType = Money.ConversionType.NoConversion;

            ExchangeRate itl_usd    = rateManager.lookup(ITL, USD, new Date(4, Month.August, 2004));
            Money        calculated = itl_usd.exchange(m1);
            Money        expected   = new Money(m1.value * eur_usd1.rate / 1936.27, USD);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            itl_usd    = rateManager.lookup(ITL, USD, new Date(5, Month.August, 2004));
            calculated = itl_usd.exchange(m1);
            expected   = new Money(m1.value * eur_usd2.rate / 1936.27, USD);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            ExchangeRate usd_itl = rateManager.lookup(USD, ITL, new Date(4, Month.August, 2004));

            calculated = usd_itl.exchange(m2);
            expected   = new Money(m2.value * 1936.27 / eur_usd1.rate, ITL);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            usd_itl = rateManager.lookup(USD, ITL, new Date(5, Month.August, 2004));

            calculated = usd_itl.exchange(m2);
            expected   = new Money(m2.value * 1936.27 / eur_usd2.rate, ITL);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }
        }
Пример #9
0
        public void testDirectLookup()
        {
            ExchangeRateManager rateManager = ExchangeRateManager.Instance;

            rateManager.clear();

            Currency EUR = new EURCurrency(), USD = new USDCurrency();

            ExchangeRate eur_usd1 = new ExchangeRate(EUR, USD, 1.1983);
            ExchangeRate eur_usd2 = new ExchangeRate(USD, EUR, 1.0 / 1.2042);

            rateManager.add(eur_usd1, new Date(4, Month.August, 2004));
            rateManager.add(eur_usd2, new Date(5, Month.August, 2004));

            Money m1 = 50000.0 * EUR;
            Money m2 = 100000.0 * USD;

            Money.conversionType = Money.ConversionType.NoConversion;

            ExchangeRate eur_usd    = rateManager.lookup(EUR, USD, new Date(4, Month.August, 2004), ExchangeRate.Type.Direct);
            Money        calculated = eur_usd.exchange(m1);
            Money        expected   = new Money(m1.value * eur_usd1.rate, USD);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            eur_usd    = rateManager.lookup(EUR, USD, new Date(5, Month.August, 2004), ExchangeRate.Type.Direct);
            calculated = eur_usd.exchange(m1);
            expected   = new Money(m1.value / eur_usd2.rate, USD);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            ExchangeRate usd_eur = rateManager.lookup(USD, EUR, new Date(4, Month.August, 2004), ExchangeRate.Type.Direct);

            calculated = usd_eur.exchange(m2);
            expected   = new Money(m2.value / eur_usd1.rate, EUR);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            usd_eur = rateManager.lookup(USD, EUR, new Date(5, Month.August, 2004), ExchangeRate.Type.Direct);

            calculated = usd_eur.exchange(m2);
            expected   = new Money(m2.value * eur_usd2.rate, EUR);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }
        }
Пример #10
0
        public void Test_Input_Line_Valid_Input_Result_EUR()
        {
            Transaction     t    = new Transaction("61.12,900");
            IRegionCurrency test = new EURCurrency();

            t.GenerateChange(test, null, true);
            string expected = "1 five hundred, 1 two hundred, 1 hundred, 1 twenty, 1 ten, 1 five, 1 two, 1 one, 1 50c, 1 20c, 1 10c, 1 5c, 1 2c, 1 1c";

            Assert.AreEqual(expected, t.ToString());
        }
Пример #11
0
        public void testNone()
        {
            Currency EUR = new EURCurrency();

            Money m1 = 50000.0 * EUR;
            Money m2 = 100000.0 * EUR;
            Money m3 = 500000.0 * EUR;

            Money.conversionType = Money.ConversionType.NoConversion;

            Money  calculated = m1 * 3.0 + 2.5 * m2 - m3 / 5.0;
            double x          = m1.value * 3.0 + 2.5 * m2.value - m3.value / 5.0;
            Money  expected   = new Money(x, EUR);

            if (calculated != expected)
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }
        }
Пример #12
0
        public void testCurrencies()
        {
            CHFCurrency chf  = new CHFCurrency();
            EURCurrency euro = new EURCurrency();
            CHFCurrency chf2 = new CHFCurrency();

            Assert.IsTrue(chf.Name == "Swiss franc");
            Assert.IsTrue(chf.code == "CHF");
            Assert.AreEqual(chf.numericCode, 756);
            Assert.AreEqual(chf.symbol, "SwF");
            Assert.AreEqual(chf.fractionSymbol, string.Empty);
            Assert.AreEqual(chf.fractionsPerUnit, 100);
            Assert.AreEqual(chf.rounding.getType, Rounding.Type.None);
            Assert.IsInstanceOfType(chf.triangulationCurrency, typeof(Currency));
            Assert.IsTrue(chf.triangulationCurrency.IsEmpty);
            Assert.IsFalse(euro == chf);
            Assert.IsTrue(euro != chf);
            Assert.IsFalse(chf2 != chf);
            Assert.IsTrue(chf2 == chf);
        }
Пример #13
0
        public void testCurrencies()
        {
            CHFCurrency chf = new CHFCurrency();
            EURCurrency euro = new EURCurrency();
            CHFCurrency chf2 = new CHFCurrency();

            Assert.IsTrue(chf.Name == "Swiss franc");
            Assert.IsTrue(chf.code == "CHF");
            Assert.AreEqual(chf.numericCode, 756);
            Assert.AreEqual(chf.symbol, "SwF");
            Assert.AreEqual(chf.fractionSymbol, string.Empty);
            Assert.AreEqual(chf.fractionsPerUnit, 100);
            Assert.AreEqual(chf.rounding.getType, Rounding.Type.None);
            Assert.IsInstanceOfType(chf.triangulationCurrency, typeof(Currency));
            Assert.IsTrue(chf.triangulationCurrency.IsEmpty);
            Assert.IsFalse(euro == chf);
            Assert.IsTrue(euro != chf);
            Assert.IsFalse(chf2 != chf);
            Assert.IsTrue(chf2 == chf);
        }
Пример #14
0
        public void ConversionBreadth()
        {
            decimal      result;
            decimal      amount;
            BaseCurrency fromCur;
            BaseCurrency toCur;

            amount  = 100.0M;
            fromCur = new USDCurrency();
            toCur   = new USDCurrency();
            result  = ConvertibleCurrency.CurrencyConvert(amount, fromCur, toCur);
            Assert.AreEqual(100.0M, result, "USD to USD should be no change");

            fromCur = new PENCurrency();
            toCur   = new PENCurrency();
            result  = ConvertibleCurrency.CurrencyConvert(amount, fromCur, toCur);
            Assert.AreEqual(100.0M, result, "PEN to PEN should be no change");

            fromCur = new EURCurrency();
            toCur   = new EURCurrency();
            result  = ConvertibleCurrency.CurrencyConvert(amount, fromCur, toCur);
            Assert.AreEqual(100.0M, result, "EUR to EUR should be no change");

            decimal expected;

            fromCur  = new USDCurrency();
            toCur    = new EURCurrency();
            result   = ConvertibleCurrency.CurrencyConvert(amount, fromCur, toCur);
            expected = amount * 0.85M;
            Assert.AreEqual(expected, result, "USD to EUR is incorrect");

            fromCur  = new PENCurrency();
            toCur    = new EURCurrency();
            result   = ConvertibleCurrency.CurrencyConvert(amount, fromCur, toCur);
            expected = amount / 3.53M * 0.85M;
            Assert.AreEqual(expected, result, "PEN to EUR is incorrect");
        }
Пример #15
0
        public void testNone()
        {
            Currency EUR = new EURCurrency();

            Money m1 = 50000.0 * EUR;
            Money m2 = 100000.0 * EUR;
            Money m3 = 500000.0 * EUR;

            Money.conversionType = Money.ConversionType.NoConversion;

            Money calculated = m1 * 3.0 + 2.5 * m2 - m3 / 5.0;
            double x = m1.value * 3.0 + 2.5 * m2.value - m3.value / 5.0;
            Money expected = new Money(x, EUR);

            if (calculated != expected)
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }
        }
Пример #16
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(EURCurrency obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
Пример #17
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(EURCurrency obj) {
   return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
 }
Пример #18
0
        public void testSmartLookup()
        {
            Currency EUR = new EURCurrency(), USD = new USDCurrency(), GBP = new GBPCurrency(),
                     CHF = new CHFCurrency(), SEK = new SEKCurrency(), JPY = new JPYCurrency();

            ExchangeRateManager rateManager = ExchangeRateManager.Instance;

            rateManager.clear();

            ExchangeRate eur_usd1           = new ExchangeRate(EUR, USD, 1.1983);
            ExchangeRate eur_usd2           = new ExchangeRate(USD, EUR, 1.0 / 1.2042);

            rateManager.add(eur_usd1, new Date(4, Month.August, 2004));
            rateManager.add(eur_usd2, new Date(5, Month.August, 2004));

            ExchangeRate eur_gbp1 = new ExchangeRate(GBP, EUR, 1.0 / 0.6596);
            ExchangeRate eur_gbp2 = new ExchangeRate(EUR, GBP, 0.6612);

            rateManager.add(eur_gbp1, new Date(4, Month.August, 2004));
            rateManager.add(eur_gbp2, new Date(5, Month.August, 2004));

            ExchangeRate usd_chf1 = new ExchangeRate(USD, CHF, 1.2847);
            ExchangeRate usd_chf2 = new ExchangeRate(CHF, USD, 1.0 / 1.2774);

            rateManager.add(usd_chf1, new Date(4, Month.August, 2004));
            rateManager.add(usd_chf2, new Date(5, Month.August, 2004));

            ExchangeRate chf_sek1 = new ExchangeRate(SEK, CHF, 0.1674);
            ExchangeRate chf_sek2 = new ExchangeRate(CHF, SEK, 1.0 / 0.1677);

            rateManager.add(chf_sek1, new Date(4, Month.August, 2004));
            rateManager.add(chf_sek2, new Date(5, Month.August, 2004));

            ExchangeRate jpy_sek1 = new ExchangeRate(SEK, JPY, 14.5450);
            ExchangeRate jpy_sek2 = new ExchangeRate(JPY, SEK, 1.0 / 14.6110);

            rateManager.add(jpy_sek1, new Date(4, Month.August, 2004));
            rateManager.add(jpy_sek2, new Date(5, Month.August, 2004));

            Money m1 = 100000.0 * USD;
            Money m2 = 100000.0 * EUR;
            Money m3 = 100000.0 * GBP;
            Money m4 = 100000.0 * CHF;
            Money m5 = 100000.0 * SEK;
            Money m6 = 100000.0 * JPY;

            Money.conversionType = Money.ConversionType.NoConversion;

            // two-rate chain

            ExchangeRate usd_sek    = rateManager.lookup(USD, SEK, new Date(4, Month.August, 2004));
            Money        calculated = usd_sek.exchange(m1);
            Money        expected   = new Money(m1.value * usd_chf1.rate / chf_sek1.rate, SEK);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            usd_sek    = rateManager.lookup(SEK, USD, new Date(5, Month.August, 2004));
            calculated = usd_sek.exchange(m5);
            expected   = new Money(m5.value * usd_chf2.rate / chf_sek2.rate, USD);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            // three-rate chain

            ExchangeRate eur_sek = rateManager.lookup(EUR, SEK, new Date(4, Month.August, 2004));

            calculated = eur_sek.exchange(m2);
            expected   = new Money(m2.value * eur_usd1.rate * usd_chf1.rate / chf_sek1.rate, SEK);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            eur_sek    = rateManager.lookup(SEK, EUR, new Date(5, Month.August, 2004));
            calculated = eur_sek.exchange(m5);
            expected   = new Money(m5.value * eur_usd2.rate * usd_chf2.rate / chf_sek2.rate, EUR);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            // four-rate chain

            ExchangeRate eur_jpy = rateManager.lookup(EUR, JPY, new Date(4, Month.August, 2004));

            calculated = eur_jpy.exchange(m2);
            expected   = new Money(m2.value * eur_usd1.rate * usd_chf1.rate * jpy_sek1.rate / chf_sek1.rate, JPY);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            eur_jpy    = rateManager.lookup(JPY, EUR, new Date(5, Month.August, 2004));
            calculated = eur_jpy.exchange(m6);
            expected   = new Money(m6.value * jpy_sek2.rate * eur_usd2.rate * usd_chf2.rate / chf_sek2.rate, EUR);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            // five-rate chain

            ExchangeRate gbp_jpy = rateManager.lookup(GBP, JPY, new Date(4, Month.August, 2004));

            calculated = gbp_jpy.exchange(m3);
            expected   = new Money(m3.value * eur_gbp1.rate * eur_usd1.rate * usd_chf1.rate * jpy_sek1.rate / chf_sek1.rate, JPY);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }

            gbp_jpy    = rateManager.lookup(JPY, GBP, new Date(5, Month.August, 2004));
            calculated = gbp_jpy.exchange(m6);
            expected   = new Money(m6.value * jpy_sek2.rate * eur_usd2.rate * usd_chf2.rate * eur_gbp2.rate / chf_sek2.rate, GBP);

            if (!Utils.close(calculated, expected))
            {
                Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
            }
        }
Пример #19
0
        public void testDirectLookup()
        {
            ExchangeRateManager rateManager = ExchangeRateManager.Instance;
             rateManager.clear();

             Currency EUR = new EURCurrency(), USD = new USDCurrency();

             ExchangeRate eur_usd1 = new ExchangeRate(EUR, USD, 1.1983);
             ExchangeRate eur_usd2 = new ExchangeRate(USD, EUR, 1.0/1.2042);
             rateManager.Add(eur_usd1, new Date(4,Month.August,2004));
             rateManager.Add(eur_usd2, new Date(5,Month.August,2004));

             Money m1 = 50000.0 * EUR;
             Money m2 = 100000.0 * USD;

             Money.conversionType = Money.ConversionType.NoConversion;

             ExchangeRate eur_usd = rateManager.lookup(EUR, USD,new Date(4,Month.August,2004),ExchangeRate.Type.Direct);
             Money calculated = eur_usd.exchange(m1);
             Money expected = new Money(m1.value*eur_usd1.rate, USD);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             eur_usd = rateManager.lookup(EUR, USD,new Date(5,Month.August,2004),ExchangeRate.Type.Direct);
             calculated = eur_usd.exchange(m1);
             expected = new Money(m1.value/eur_usd2.rate, USD);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             ExchangeRate usd_eur = rateManager.lookup(USD, EUR,new Date(4,Month.August,2004),ExchangeRate.Type.Direct);

             calculated = usd_eur.exchange(m2);
             expected = new Money(m2.value/eur_usd1.rate, EUR);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             usd_eur = rateManager.lookup(USD, EUR,new Date(5,Month.August,2004),ExchangeRate.Type.Direct);

             calculated = usd_eur.exchange(m2);
             expected = new Money(m2.value*eur_usd2.rate, EUR);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }
        }
Пример #20
0
        public void testSmartLookup()
        {
            Currency EUR = new EURCurrency(), USD = new USDCurrency(), GBP = new GBPCurrency(),
                  CHF = new CHFCurrency(), SEK = new SEKCurrency(), JPY = new JPYCurrency();

             ExchangeRateManager rateManager = ExchangeRateManager.Instance;
             rateManager.clear();

             ExchangeRate eur_usd1 = new ExchangeRate(EUR, USD, 1.1983);
             ExchangeRate eur_usd2 = new ExchangeRate(USD, EUR, 1.0/1.2042);
             rateManager.Add(eur_usd1, new Date(4,Month.August,2004));
             rateManager.Add(eur_usd2, new Date(5,Month.August,2004));

             ExchangeRate eur_gbp1 = new ExchangeRate(GBP, EUR, 1.0 / 0.6596);
             ExchangeRate eur_gbp2 = new ExchangeRate(EUR, GBP, 0.6612);
             rateManager.Add(eur_gbp1, new Date(4,Month.August,2004));
             rateManager.Add(eur_gbp2, new Date(5,Month.August,2004));

             ExchangeRate usd_chf1 = new ExchangeRate(USD, CHF, 1.2847);
             ExchangeRate usd_chf2 = new ExchangeRate(CHF, USD, 1.0 / 1.2774);
             rateManager.Add(usd_chf1, new Date(4,Month.August,2004));
             rateManager.Add(usd_chf2, new Date(5,Month.August,2004));

             ExchangeRate chf_sek1 = new ExchangeRate(SEK, CHF, 0.1674);
             ExchangeRate chf_sek2 = new ExchangeRate(CHF, SEK, 1.0 / 0.1677);
             rateManager.Add(chf_sek1, new Date(4,Month.August,2004));
             rateManager.Add(chf_sek2, new Date(5,Month.August,2004));

             ExchangeRate jpy_sek1 = new ExchangeRate(SEK, JPY, 14.5450);
             ExchangeRate jpy_sek2 = new ExchangeRate(JPY, SEK, 1.0 / 14.6110);
             rateManager.Add(jpy_sek1, new Date(4,Month.August,2004));
             rateManager.Add(jpy_sek2, new Date(5,Month.August,2004));

             Money m1 = 100000.0 * USD;
             Money m2 = 100000.0 * EUR;
             Money m3 = 100000.0 * GBP;
             Money m4 = 100000.0 * CHF;
             Money m5 = 100000.0 * SEK;
             Money m6 = 100000.0 * JPY;

             Money.conversionType = Money.ConversionType.NoConversion;

             // two-rate chain

             ExchangeRate usd_sek = rateManager.lookup(USD, SEK, new Date(4,Month.August,2004));
             Money calculated = usd_sek.exchange(m1);
             Money expected = new Money(m1.value*usd_chf1.rate/chf_sek1.rate, SEK);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             usd_sek = rateManager.lookup(SEK, USD, new Date(5,Month.August,2004));
             calculated = usd_sek.exchange(m5);
             expected = new Money(m5.value*usd_chf2.rate/chf_sek2.rate, USD);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             // three-rate chain

             ExchangeRate eur_sek = rateManager.lookup(EUR, SEK,new Date(4,Month.August,2004));
             calculated = eur_sek.exchange(m2);
             expected = new Money(m2.value*eur_usd1.rate*usd_chf1.rate/chf_sek1.rate, SEK);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             eur_sek = rateManager.lookup(SEK, EUR, new Date(5,Month.August,2004));
             calculated = eur_sek.exchange(m5);
             expected = new Money(m5.value*eur_usd2.rate*usd_chf2.rate/chf_sek2.rate, EUR);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             // four-rate chain

             ExchangeRate eur_jpy = rateManager.lookup(EUR, JPY,new Date(4,Month.August,2004));
             calculated = eur_jpy.exchange(m2);
             expected = new Money(m2.value*eur_usd1.rate*usd_chf1.rate*jpy_sek1.rate/chf_sek1.rate, JPY);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             eur_jpy = rateManager.lookup(JPY, EUR, new Date(5,Month.August,2004));
             calculated = eur_jpy.exchange(m6);
             expected = new Money(m6.value*jpy_sek2.rate*eur_usd2.rate*usd_chf2.rate/chf_sek2.rate, EUR);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             // five-rate chain

             ExchangeRate gbp_jpy = rateManager.lookup(GBP, JPY,new Date(4,Month.August,2004));
             calculated = gbp_jpy.exchange(m3);
             expected = new Money(m3.value*eur_gbp1.rate*eur_usd1.rate*usd_chf1.rate*jpy_sek1.rate/chf_sek1.rate, JPY);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             gbp_jpy = rateManager.lookup(JPY, GBP, new Date(5,Month.August,2004));
             calculated = gbp_jpy.exchange(m6);
             expected = new Money(m6.value*jpy_sek2.rate*eur_usd2.rate*usd_chf2.rate*eur_gbp2.rate/chf_sek2.rate, GBP);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }
        }
Пример #21
0
        public void testTriangulatedLookup()
        {
            ExchangeRateManager rateManager = ExchangeRateManager.Instance;
             rateManager.clear();

             Currency EUR = new EURCurrency(), USD = new USDCurrency(), ITL = new ITLCurrency();

             ExchangeRate eur_usd1 = new ExchangeRate(EUR, USD, 1.1983);
             ExchangeRate eur_usd2 = new ExchangeRate(EUR, USD, 1.2042);
             rateManager.Add(eur_usd1, new Date(4,Month.August,2004));
             rateManager.Add(eur_usd2, new Date(5,Month.August,2004));

             Money m1 = 50000000.0 * ITL;
             Money m2 = 100000.0 * USD;

             Money.conversionType = Money.ConversionType.NoConversion;

             ExchangeRate itl_usd = rateManager.lookup(ITL, USD,new Date(4,Month.August,2004));
             Money calculated = itl_usd.exchange(m1);
             Money expected = new Money(m1.value*eur_usd1.rate/1936.27, USD);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             itl_usd = rateManager.lookup(ITL, USD,new Date(5,Month.August,2004));
             calculated = itl_usd.exchange(m1);
             expected = new Money(m1.value*eur_usd2.rate/1936.27, USD);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             ExchangeRate usd_itl = rateManager.lookup(USD, ITL, new Date(4, Month.August, 2004));

             calculated = usd_itl.exchange(m2);
             expected = new Money(m2.value*1936.27/eur_usd1.rate, ITL);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }

             usd_itl = rateManager.lookup(USD, ITL, new Date(5, Month.August, 2004));

             calculated = usd_itl.exchange(m2);
             expected = new Money(m2.value*1936.27/eur_usd2.rate, ITL);

             if (!Utils.close(calculated, expected))
             {
            Assert.Fail("Wrong result: expected: " + expected + " calculated: " + calculated);
             }
        }