/** * Ensure at least one conversion provider is available.<p> * Hint: ignore all TCK test providers, only count up productive providers. */ @Test(description = "4.3.1 Ensure at least one conversion provider is available, TestRateProvider must be present.") @SpecAssertion(id = "431-A1", section = "4.3.1") public void testProvidersAvailable() { int providerCount = 0; for (String providername : MonetaryConversions.getConversionProviderNames()) { if (!"TestRateProvider".equals(providername)) { providerCount++; } } AssertJUnit.assertTrue("At least one conversion provider must be available/registered.", providerCount > 0); }
/** * Bad case: try accessing rates with inconsistent/invalid data.<p> * Hint: this assertion will require multiple tests to be written! */ @Test(description = "4.3.3 Bad case: try accessing exchange rates with null ConversionQuery.") @SpecAssertion(id = "433-A3", section = "4.3.3") public void testInvalidUsage_InvalidSourceCurrencyAndContext() { for (String providerID : MonetaryConversions.getConversionProviderNames()) { if ("TestRateProvider".equals(providerID)) { continue; } ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider(providerID); try { prov.getExchangeRate(null); Assert.fail("ExchangeRateProvider should throw NPE when an null ConversionQuery " + "is passed to getExchangeRate(ConversionQuery), provider: " + providerID); } catch (NullPointerException e) { // OK } } }
/** * Bad case: try accessing rates with inconsistent/invalid data.<p> * Hint: this assertion will require multiple tests to be written! */ @Test(description = "4.3.3 Bad case: try accessing exchange rates with invalid base currency code.") @SpecAssertion(id = "433-A3", section = "4.3.3") public void testInvalidUsage_InvalidSourceCurrency() { for (String providerID : MonetaryConversions.getConversionProviderNames()) { if ("TestRateProvider".equals(providerID)) { continue; } ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider(providerID); try { prov.getExchangeRate("dhdjbdjd", "CHF"); Assert.fail( "ExchangeRateProvider should throw UnknownCurrencyException when an invalid source currency " + "is passed to getExchangeRate(String,String), provider: " + providerID); } catch (UnknownCurrencyException e) { // OK } } }
/** * Bad case: try accessing rates with inconsistent/invalid data.<p> * Hint: this assertion will require multiple tests to be written! */ @Test(description = "4.3.3 Bad case: try accessing exchange rates with null base currency code.") @SpecAssertion(id = "433-A3", section = "4.3.3") public void testInvalidUsage_NullSourceCurrency() { for (String providerID : MonetaryConversions.getConversionProviderNames()) { if ("TestRateProvider".equals(providerID)) { continue; } ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider(providerID); try { prov.getExchangeRate(null, "CHF"); Assert.fail("ExchangeRateProvider should throw NullPointerException when an null source currency " + "is passed to getExchangeRate(String,String), provider: " + providerID); } catch (NullPointerException e) { // OK } } }
/** * Bad case: try accessing rates with inconsistent/invalid data.<p> * Hint: this assertion will require multiple tests to be written! */ @Test(description = "4.3.3 Bad case: try accessing exchange rates with null term currency code.") @SpecAssertion(id = "433-A3", section = "4.3.3") public void testInvalidUsage_NullTargetCurrency() { for (String providerID : MonetaryConversions.getConversionProviderNames()) { if ("TestRateProvider".equals(providerID)) { continue; } ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider(providerID); try { prov.getExchangeRate("CHF", null); Assert.fail("ExchangeRateProvider should throw NullPointerException when an null target currency " + "is passed to getExchangeRate(String,String), provider: " + providerID); } catch (NullPointerException e) { // OK } } }
/** * Bad case: try accessing rates with inconsistent/invalid data.<p> * Hint: this assertion will require multiple tests to be written! */ @Test(description = "4.3.3 Bad case: try accessing exchange rates with invalid term currency code.") @SpecAssertion(id = "433-A3", section = "4.3.3") public void testInvalidUsage_InvalidTargetCurrency() { for (String providerID : MonetaryConversions.getConversionProviderNames()) { if ("TestRateProvider".equals(providerID)) { continue; } ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider(providerID); try { prov.getExchangeRate("CHF", "dhdjbdjd"); Assert.fail( "ExchangeRateProvider should throw UnknownCurrencyException when an invalid target currency " + "is passed to getExchangeRate(String,String), provider: " + providerID); } catch (UnknownCurrencyException e) { // OK } } }
/** * Test availability of providers defined by the TCK.<p> * Hint do not use non TCK provider for this test, it will make results undeterministic. */ @Test(description = "4.3.4 Test availability of TCK provided providers.") @SpecAssertion(id = "434-A3", section = "4.3.4") public void testTCKRateChainAvailability() { Collection<String> provNames = MonetaryConversions.getConversionProviderNames(); AssertJUnit.assertTrue("TCK ExchangeRateProvider is not registered: TestRateProvider", provNames.contains("TestRateProvider")); AssertJUnit.assertTrue("TCK ExchangeRateProvider is not registered:TestRateProvider1", provNames.contains("TestRateProvider1")); AssertJUnit.assertTrue("TCK ExchangeRateProvider is not registered: TestRateProvider2", provNames.contains("TestRateProvider2")); AssertJUnit.assertTrue("TCK ExchangeRateProvider is not registered: TestRateProvider3", provNames.contains("TestRateProvider3")); AssertJUnit.assertTrue("TCK ExchangeRateProvider is not registered: TestRateProvider02", provNames.contains("TestRateProvider02")); }
/** * Bad case: try accessing rates with inconsistent/invalid data.<p> * Hint: this assertion will require multiple tests to be written! */ @Test(description = "4.3.3 Bad case: try accessing exchange rates with null base CurrencyUnit.") @SpecAssertion(id = "433-A3", section = "4.3.3") public void testInvalidUsage_NullSourceCurrencyUnit() { for (String providerID : MonetaryConversions.getConversionProviderNames()) { ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider(providerID); try { prov.getExchangeRate(null, Monetary.getCurrency("CHF")); Assert.fail("ExchangeRateProvider should throw NullPointerException when an null source currency " + "is passed to getExchangeRate(CurrencyUnit,CurrencyUnit), provider: " + providerID); } catch (NullPointerException e) { // OK } } }
/** * Bad case: try accessing rates with inconsistent/invalid data.<p> * Hint: this assertion will require multiple tests to be written! */ @Test(description = "4.3.3 Bad case: try accessing exchange rates with null term CurrencyUnit.") @SpecAssertion(id = "433-A3", section = "4.3.3") public void testInvalidUsage_NullTargetCurrencyUnit() { for (String providerID : MonetaryConversions.getConversionProviderNames()) { ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider(providerID); try { prov.getExchangeRate(Monetary.getCurrency("CHF"), null); Assert.fail("ExchangeRateProvider should throw NullPointerException when an invalid target currency " + "is passed to getExchangeRate(CurrencyUnit,CurrencyUnit), provider: " + providerID); } catch (NullPointerException e) { // OK } } }
/** * Test if all providers returns valid meta data. * * @see javax.money.convert.ProviderContext */ @Test(description = "4.3.1 Test if all ExchangeRateProvider instances returns valid ProviderContext.") @SpecAssertion(id = "431-A3", section = "4.3.1") public void testProviderMetadata() { for (String providerName : MonetaryConversions.getConversionProviderNames()) { ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider(providerName); AssertJUnit.assertNotNull("Provider mot accessible: " + providerName, prov); ProviderContext ctx = prov.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.getRateTypes()); AssertJUnit.assertFalse( "ExchangeProvider's ProviderContext declares empty RateTypes to be returned: " + providerName, ctx.getRateTypes().isEmpty()); } }
/** * 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()); } } }
@SpecAssertion(id = "431-A2", section = "4.3.1") public void testConversionsAreAvailable() { for (String providerName : MonetaryConversions.getConversionProviderNames()) { try { if (MonetaryConversions.isConversionAvailable("XXX", providerName)) {
/** * 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()); } } }
/** * 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()); } } }
/** * 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()); } } }
@SpecAssertion(id = "431-A2", section = "4.3.1") public void testConversionsAreAvailableWithQuery() { for (String providerName : MonetaryConversions.getConversionProviderNames()) { ConversionQuery query = ConversionQueryBuilder.of().setTermCurrency("XXX").setProviderNames(providerName).build();