/** * Bad case: try converting from/to a null currency, ensure NullPointerException is thrown. */ @Test(expectedExceptions = NullPointerException.class, description = "4.3.2 Bad case: Access CurrencyConversion " + "with a CurrencyUnit==null, ensure NullPointerException is thrown.") @SpecAssertion(id = "432-A4", section = "4.3.2") public void testNullConversion1() { MonetaryConversions.getConversion((CurrencyUnit) null); }
/** * Test if all providers returns valid meta data. * * @see javax.money.convert.ProviderContext */ @Test(description = "4.3.1 Test if all CurrencyConversion instances returns valid ConversionContext, accessed by " + "currency code.") @SpecAssertion(id = "431-A3", section = "4.3.1") public void testProviderMetadata2() { for (String providerName : MonetaryConversions.getConversionProviderNames()) { if (MonetaryConversions.isConversionAvailable("XXX", providerName)) { CurrencyConversion conv = MonetaryConversions.getConversion("XXX", providerName); ConversionContext ctx = conv.getContext(); AssertJUnit.assertNotNull( "ExchangeProvider must return a valid ProviderContext, but returned null: " + providerName, ctx); AssertJUnit.assertEquals("ExchangeProvider's ProviderContext returns invalid name: " + providerName, providerName, ctx.getProviderName()); AssertJUnit.assertNotNull( "ExchangeProvider's ProviderContext declares invalid RateTypes to be returned (null): " + providerName, ctx.getRateType()); } } }
try { if (MonetaryConversions.isConversionAvailable("XXX", providerName)) { CurrencyConversion conv = MonetaryConversions.getConversion("XXX", providerName); AssertJUnit.assertNotNull( "CurrencyConversion returned from MonetaryConversions.getConversion(String, " +
/** * Bad case: try converting from/to a null currency, ensure NullPointerException is thrown. */ @Test(expectedExceptions = NullPointerException.class, description = "4.3.2 Bad case: Access CurrencyConversion with a currency code==null, ensure " + "NullPointerException is thrown.") @SpecAssertion(id = "432-A4", section = "4.3.2") public void testNullConversion2() { MonetaryConversions.getConversion((String) null); }
/** * Test if all providers returns valid meta data. * * @see javax.money.convert.ProviderContext */ @Test(description = "4.3.1 Test if all CurrencyConversion instances returns valid ConversionContext, accessed by " + "CurrencyUnit.") @SpecAssertion(id = "431-A3", section = "4.3.1") public void testProviderMetadata3() { for (String providerName : MonetaryConversions.getConversionProviderNames()) { if (MonetaryConversions.isConversionAvailable(Monetary.getCurrency("XXX"), providerName)) { CurrencyConversion conv = MonetaryConversions.getConversion(Monetary.getCurrency("XXX"), providerName); ConversionContext ctx = conv.getContext(); AssertJUnit.assertNotNull( "ExchangeProvider must return a valid ProviderContext, but returned null: " + providerName, ctx); AssertJUnit.assertEquals("ExchangeProvider's ProviderContext returns invalid name: " + providerName, providerName, ctx.getProviderName()); AssertJUnit.assertNotNull( "ExchangeProvider's ProviderContext declares invalid RateTypes to be returned (null): " + providerName, ctx.getRateType()); } } }
/** * Access an instance of {@link CurrencyConversion} for the given providers. * Use {@link #getConversionProviderNames()}} to check, which are available. * * @param termCurrencyCode the terminating or target currency code, not {@code null} * @param providers Additional providers, for building a provider chain * @return the exchange rate type if this instance. * @throws MonetaryException if no such {@link ExchangeRateProvider} is available or if no {@link CurrencyUnit} was * matching the given currency code. */ public static CurrencyConversion getConversion(String termCurrencyCode, String... providers){ Objects.requireNonNull(termCurrencyCode, "Term currency code may not be null"); return getConversion(Monetary.getCurrency(termCurrencyCode), providers); }
/** * Test if all providers returns valid meta data. * * @see javax.money.convert.ProviderContext */ @Test(description = "4.3.1 Test if all CurrencyConversion instances returns valid ConversionContext, accessed by " + "ConversionQuery/currency code.") @SpecAssertion(id = "431-A3", section = "4.3.1") public void testProviderMetadata2WithContext() { for (String providerName : MonetaryConversions.getConversionProviderNames()) { ConversionQuery query = ConversionQueryBuilder.of(). setTermCurrency("XXX").setProviderNames(providerName).build(); if (MonetaryConversions.isConversionAvailable(query)) { CurrencyConversion conv = MonetaryConversions.getConversion(query); ConversionContext ctx = conv.getContext(); AssertJUnit.assertNotNull( "ExchangeProvider must return a valid ProviderContext, but returned null: " + providerName, ctx); AssertJUnit.assertEquals("ExchangeProvider's ProviderContext returns invalid name: " + providerName, providerName, ctx.getProviderName()); AssertJUnit.assertNotNull( "ExchangeProvider's ProviderContext declares invalid RateTypes to be returned (null): " + providerName, ctx.getRateType()); } } }
/** * Access the default provider chain. Compare with entries from javamoney.properties. The chain must not be empty! */ @Test(description = "4.3.1 Access and test the default conversion provider chain, by accessing a default" + "CurrencyConversion for term currency code CHF.") @SpecAssertion(id = "431-A4", section = "4.3.1") public void testDefaultProviderChainIsDefinedDefault2() { CurrencyConversion conv = MonetaryConversions.getConversion("CHF"); AssertJUnit.assertNotNull("No default CurrencyConversion returned.", conv); // we cannot test more here... }
/** * Test if all providers returns valid meta data. * * @see javax.money.convert.ProviderContext */ @Test(description = "4.3.1 Test if all CurrencyConversion instances returns valid ConversionContext, accessed by " + "ConversionQuery/CurrencyUnit.") @SpecAssertion(id = "431-A3", section = "4.3.1") public void testProviderMetadata3WithContext() { for (String providerName : MonetaryConversions.getConversionProviderNames()) { ConversionQuery query = ConversionQueryBuilder.of(). setTermCurrency(Monetary.getCurrency("XXX")).setProviderName(providerName).build(); if (MonetaryConversions.isConversionAvailable(query)) { CurrencyConversion conv = MonetaryConversions.getConversion(query); ConversionContext ctx = conv.getContext(); AssertJUnit.assertNotNull( "ExchangeProvider must return a valid ProviderContext, but returned null: " + providerName, ctx); AssertJUnit.assertEquals("ExchangeProvider's ProviderContext returns invalid name: " + providerName, providerName, ctx.getProviderName()); AssertJUnit.assertNotNull( "ExchangeProvider's ProviderContext declares invalid RateTypes to be returned (null): " + providerName, ctx.getRateType()); } } }
/** * Access the default provider chain. Compare with entries from javamoney.properties. The chain must not be empty! */ @Test(description = "4.3.1 Access and test the default conversion provider chain, by accessing a default" + "CurrencyConversion for term CurrencyUnit CHF.") @SpecAssertion(id = "431-A4", section = "4.3.1") public void testDefaultProviderChainIsDefinedDefault() { CurrencyConversion conv = MonetaryConversions.getConversion(Monetary.getCurrency("CHF")); AssertJUnit.assertNotNull("No default CurrencyConversion returned.", conv); // we cannot test more here... }
try { if (MonetaryConversions.isConversionAvailable(query)) { CurrencyConversion conv = MonetaryConversions.getConversion(query); AssertJUnit.assertNotNull( "CurrencyConversion returned from MonetaryConversions.getConversion(ConversionQuery) must" +
public static void main(String... args) { String termCurrencyCode = DEFAULT_TERM_CURRENCY_CODE; if (args.length > 0) { termCurrencyCode = args[0]; } final MonetaryAmount amt = Money.of(2000, "EUR"); CurrencyConversion conv= MonetaryConversions.getConversion(termCurrencyCode, "ECB"); System.out.println(MessageFormat.format("2000 EUR (ECB)-> {0} = {1}", termCurrencyCode, amt.with(conv))); conv= MonetaryConversions.getConversion(termCurrencyCode, "IMF"); System.out.println(MessageFormat.format("2000 EUR (IMF)-> {0} = {1}", termCurrencyCode, amt.with(conv))); System.out.println(MessageFormat.format( "2000 EUR (ECB, at 5th Jan 2015)-> {0} = {1}", termCurrencyCode, amt.with(MonetaryConversions .getConversion(ConversionQueryBuilder.of() .setTermCurrency(termCurrencyCode) //.set(LocalDate.of(2015, 01, 05)) .build())))); }
/** * Access the default provider chain. Compare with entries from javamoney.properties. The chain must not be empty! */ @Test(description = "4.3.1 Access and test the default conversion provider chain, by accessing a default" + "CurrencyConversion for ConversionQuery.") @SpecAssertion(id = "431-A4", section = "4.3.1") public void testDefaultProviderChainIsDefinedDefaultWithContext() { ConversionQuery query = ConversionQueryBuilder.of().setTermCurrency(Monetary.getCurrency("CHF")).build(); CurrencyConversion conv = MonetaryConversions.getConversion(query); AssertJUnit.assertNotNull("No default CurrencyConversion returned.", conv); // we cannot test more here... }
/** * Access the conversion using the default conversion chain. */ @Test(description = "4.3.1 Access and test conversion using the default provider chain.") @SpecAssertion(id = "431-A5", section = "4.3.1") public void testDefaultConversion() { ConversionQuery query = ConversionQueryBuilder.of().setTermCurrency(Monetary.getCurrency("USD")).build(); CurrencyConversion conv = MonetaryConversions.getConversion(query); AssertJUnit.assertNotNull("No default CurrencyConversion returned for USD.", conv); query = ConversionQueryBuilder.of().setTermCurrency(Monetary.getCurrency("EUR")).build(); conv = MonetaryConversions.getConversion(query); AssertJUnit.assertNotNull("No default CurrencyConversion returned for EUR.", conv); }
/** * Bad case: try converting from/to an inconvertible (custom) currency, ensure CurrencyConversionException is * thrown. * * @see org.javamoney.tck.tests.internal.TestCurrencyUnit } for creating a custom currency, * with some fancy non-ISO currency code. */ @Test(description = "4.3.2 Bad case: Try CurrencyConversion to an inconvertible (custom) " + "currency (FOOANY), ensure CurrencyConversionException is thrown.") @SpecAssertion(id = "432-A3", section = "4.3.2") public void testUnsupportedConversion() { MonetaryAmount m = Monetary.getDefaultAmountFactory().setNumber(10).setCurrency("CHF").create(); CurrencyUnit cu = new TestCurrencyUnit("FOOANY"); try { CurrencyConversion conv = MonetaryConversions.getConversion(cu); m.with(conv); } catch (CurrencyConversionException e) { // expected } }
/** * Test successful conversion for possible currency pairs.<p> * Hint: you may only check for rate factory, when using a hardcoded ExchangeRateProvider, such a provider * must be also implemented and registered as an SPI. */ @Test(description = "4.3.2 Test successful conversion for CHF -> FOO, using TestRateProvider.") @SpecAssertion(id = "432-A1", section = "4.3.2") public void testConversion() { CurrencyUnit cu = new TestCurrencyUnit("FOO"); CurrencyConversion conv = MonetaryConversions.getConversion(cu, "TestRateProvider"); MonetaryAmount m = Monetary.getDefaultAmountFactory().setNumber(10).setCurrency("CHF").create(); MonetaryAmount m2 = m.with(conv); AssertJUnit.assertEquals(m2.getCurrency().getCurrencyCode(), "FOO"); AssertJUnit.assertEquals(20L, m2.getNumber().longValueExact()); m2 = m.with(conv); AssertJUnit.assertEquals(m2.getCurrency().getCurrencyCode(), "FOO"); AssertJUnit.assertEquals(20L, m2.getNumber().longValueExact()); }