/** * Set the providers to be considered. If not set explicitly the <i>default</i> ISO currencies as * returned by {@link java.util.Currency} is used. * * @param rateTypes the rate types to use, not null. * @return the query for chaining. */ public ConversionQueryBuilder setRateTypes(Set<RateType> rateTypes) { return set(ConversionQuery.KEY_RATE_TYPES, rateTypes); }
/** * Ensure additional ConversionContext is passed correctly to SPIs.<p> * Hint: this assertion will require some custom SPIs to be registered and selected for chain inclusion! */ @Test(description = "4.3.3 Ensure additional ConversionQuery data is passed correctly to SPIs.") @SpecAssertion(id = "433-A2", section = "4.3.3") public void testPassingOverConversionContextToSPIs() { ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider("TestRateProvider"); ConversionQuery ctx = ConversionQueryBuilder.of().set(Locale.CANADA).set("Foo", "bar").setBaseCurrency(FOO_UNIT) .setTermCurrency(Monetary.getCurrency("XXX")).build(); ExchangeRate rate = prov.getExchangeRate(ctx); AssertJUnit.assertNotNull("No test rate returned by getExchangeRate(ConversionQuery), " + "probably TestProvider is not correct registered."); AssertJUnit.assertEquals( "Text parameter Locale.class was not correctly passed to ExchangeRateProvider implementation.", "bar", rate.getContext().getText("Foo")); AssertJUnit.assertEquals( "Object parameter Locale.class was not correctly passed to ExchangeRateProvider implementation.", Locale.CANADA, rate.getContext().get(Locale.class)); }
/** * Test correct rate evaluation for different provider chains, providers defined by the TCK, * with historic rates.<p> * Hint do not use non TCK provider for this test, it will make results undeterministic. */ @Test(description = "4.3.4 Test correct rate evaluation for different conversion provider chains, " + "with historic rates.") @SpecAssertion(id = "434-A2", section = "4.3.4") public void testCorrectRateEvaluationInChainHistoric() { ExchangeRateProvider prov1 = MonetaryConversions .getExchangeRateProvider("TestRateProvider1", "TestRateProvider2", "TestRateProvider3"); ExchangeRate rate = prov1.getExchangeRate("CHF", "EUR"); AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1); rate = prov1.getExchangeRate("EUR", "USD"); AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 2); Calendar cal = GregorianCalendar.getInstance(); cal.setTimeInMillis(0L); rate = prov1.getExchangeRate( ConversionQueryBuilder.of() .set(cal) .setBaseCurrency("EUR") .setTermCurrency("USD") .build()); AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", 2, rate.getFactor().intValueExact()); }
/** * Sets the base currency. * * @param currency the base currency * @return the query for chaining. */ public ConversionQueryBuilder setBaseCurrency(CurrencyUnit currency) { return set(ConversionQuery.KEY_BASE_CURRENCY, currency); }
/** * Sets the term currency. * * @param currency the base currency * @return the query for chaining. */ public ConversionQueryBuilder setTermCurrency(CurrencyUnit currency) { return set(ConversionQuery.KEY_TERM_CURRENCY, currency); }
/** * Set the providers to be considered. If not set explicitly the <i>default</i> ISO currencies as * returned by {@link java.util.Currency} is used. * * @param rateTypes the rate types to use, not null. * @return the query for chaining. */ public ConversionQueryBuilder setRateTypes(RateType... rateTypes) { return set(ConversionQuery.KEY_RATE_TYPES, new HashSet<>(Arrays.asList(rateTypes))); }