/** * Copyright (c) 2012, 2016, Anatole Tresch, Werner Keil and others by the @author tag. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.javamoney.examples.test; import static org.junit.Assert.*; import java.util.Collection; import javax.money.Monetary; import javax.money.MonetaryAmount; import javax.money.convert.CurrencyConversion; import javax.money.convert.ExchangeRate; import javax.money.convert.ExchangeRateProvider; import javax.money.convert.MonetaryConversions; import org.javamoney.moneta.Money; import org.javamoney.moneta.internal.convert.ECBCurrentRateProvider; import org.javamoney.moneta.spi.CompoundRateProvider; import org.junit.Test; public class MonetaryConversionTest { @Test public void testGetExchangeRateDefault() { ExchangeRateProvider prov = MonetaryConversions .getExchangeRateProvider(); assertTrue(prov != null); ExchangeRate rate = prov.getExchangeRate("CHF", "EUR"); assertNotNull(rate); } @Test public void testGetExchangeRateProvider() { ExchangeRateProvider prov = MonetaryConversions .getExchangeRateProvider("ECB"); assertTrue(prov != null); assertEquals(ECBCurrentRateProvider.class, prov.getClass()); } @Test public void testGetExchangeRateProvider_Chained() throws InterruptedException { ExchangeRateProvider prov = MonetaryConversions .getExchangeRateProvider("ECB", "IMF"); assertTrue(prov != null); assertEquals(CompoundRateProvider.class, prov.getClass()); // Test rate provided by IMF (derived) Thread.sleep(5000L); // wait for provider to load... ExchangeRate r = prov.getExchangeRate(Monetary.getCurrency("USD"), Monetary.getCurrency("INR")); assertTrue(r != null); assertTrue(r.isDerived()); // Test rate provided by ECB r = prov.getExchangeRate(Monetary.getCurrency("EUR"), Monetary.getCurrency("CHF")); assertTrue(r != null); assertFalse(r.isDerived()); } @Test public void testGetSupportedProviderContexts() { Collection<String> types = MonetaryConversions .getConversionProviderNames(); assertNotNull(types); assertTrue(types.size() >= 1); assertTrue(types.contains("IMF")); assertTrue(types.contains("ECB")); } @Test public void testMonetaryConversionsECB() { final MonetaryAmount amt = Money.of(2000, "EUR"); CurrencyConversion conv= MonetaryConversions.getConversion("CHF", "ECB"); MonetaryAmount converted = amt.with(conv); assertNotNull(converted); } @Test public void testMonetaryConversionsIMF() { final MonetaryAmount amt = Money.of(2000, "EUR"); CurrencyConversion conv= MonetaryConversions.getConversion("CHF", "IMF"); MonetaryAmount converted = amt.with(conv); assertNotNull(converted); } }