/** * Call getFactory(),of a new MonetaryAmount instance with a new monetary context, a * new number and a new currency. The instances must be non equal. */ @SpecAssertion(section = "4.2.2", id = "422-B6") @Test(description = "4.2.2 For each amount class, check new amounts are not equal for different currencies and " + "contexts.") public void testMonetaryAmountFactories_CreateWithMonetaryContextNumberAndCurrency() { for (Class type : Monetary.getAmountTypes()) { if (type.equals(TestAmount.class)) { continue; } MonetaryAmountFactory<MonetaryAmount> f = Monetary.getAmountFactory(type); MonetaryContext mc1 = f.getDefaultMonetaryContext(); MonetaryContext mc2 = f.getMaximalMonetaryContext(); MonetaryAmount m1 = f.setCurrency("CHF").setContext(mc1).setNumber(10).create(); MonetaryAmount m2 = f.setCurrency("USD").setContext(mc2).setNumber(11).create(); AssertJUnit.assertNotSame("Section 4.2.2: Expected not same for " + type.getName(), m1, m2); AssertJUnit.assertTrue("Section 4.2.2: Expected isEqualTo==true for " + type.getName(), m1.isEqualTo(m1)); AssertJUnit.assertTrue("Section 4.2.2: Expected isEqualTo==true for " + type.getName(), m2.isEqualTo(m2)); AssertJUnit.assertTrue("Section 4.2.2: Expected equality for " + type.getName(), m1.equals(m1)); AssertJUnit.assertTrue("Section 4.2.2: Expected equality for " + type.getName(), m2.equals(m2)); } }
/** * Call getFactory(),of a new MonetaryAmount instance * with a new monetary context(if possible-check the max context). The * instances must be non equal and have the same currency and number value. */ @SpecAssertion(section = "4.2.2", id = "422-B5") @Test(description = "4.2.2 For each amount class, check new amounts with explcit MonetaryContext.") public void testMonetaryAmountFactories_CreateWithMonetaryContext() { for (Class type : Monetary.getAmountTypes()) { MonetaryAmountFactory<MonetaryAmount> f = Monetary.getAmountFactory(type); MonetaryContext mc1 = f.getDefaultMonetaryContext(); MonetaryContext mc2 = f.getMaximalMonetaryContext(); MonetaryAmount m1; MonetaryAmount m2; if (mc1.equals(mc2)) { // In this cases both amount must be equals m1 = f.setCurrency("CHF").setContext(mc1).setNumber(10).create(); m2 = f.setCurrency("CHF").setContext(mc2).setNumber(10).create(); AssertJUnit.assertNotSame("Section 4.2.2: Expected non equal instances for " + type.getName(), m1, m2); } else { // In this cases both amount must be non equals m1 = f.setCurrency("CHF").setContext(mc1).setNumber(10).create(); m2 = f.setCurrency("CHF").setContext(mc2).setNumber(10).create(); AssertJUnit.assertNotSame("Section 4.2.2: Expected non equal instances for " + type.getName(), m1, m2); } AssertJUnit.assertTrue("Section 4.2.2: Expected equality for " + type.getName(), m1.equals(m1)); AssertJUnit.assertTrue("Section 4.2.2: Expected equality for " + type.getName(), m2.equals(m2)); } }
/** * Uses an arbitrary {@link MonetaryAmount} to initialize this factory. Properties reused are: * <ul> * <li>CurrencyUnit,</li> * <li>Number value,</li> * <li>MonetaryContext.</li> * </ul> * * @param amount the amount to be used, not {@code null}. * @return this factory instance, for chaining. * @throws MonetaryException when the {@link MonetaryContext} implied by {@code amount.getContext()} * exceeds the capabilities supported by this factory type. */ default MonetaryAmountFactory<T> setAmount(MonetaryAmount amount) { setCurrency(amount.getCurrency()); setNumber(amount.getNumber()); setContext(amount.getContext()); return this; }
factories.forEach(f -> f.setContext(context)); selection.sort(CONTEXT_COMPARATOR); factories.add(selection.get(0).createMonetaryAmountFactory());
MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(maxCtx.getPrecision() + 1) .build()); AssertJUnit.fail("Section 4.2.6: Factory should throw MonetaryException for invalid context " + f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(maxCtx.getMaxScale() + 1) .build()); AssertJUnit.fail("Section 4.2.6: Factory should throw MonetaryException for invalid context " +
m1 = f.setCurrency("CHF").setContext(mc1).setNumber(10).create(); m2 = f.setCurrency("CHF").setContext(mc2).setNumber(10).create(); AssertJUnit.assertEquals("Section 4.2.2: m1.equals(m2) must be true for m1=" + m1 + " and m2=" + m2, m1, m2); m1 = f.setCurrency("CHF").setContext(mc1).setNumber(10.5d).create(); m2 = f.setCurrency("CHF").setContext(mc2).setNumber(10.5d).create(); AssertJUnit.assertEquals("Section 4.2.2: m1.equals(m2) must be true for m1=" + m1 + " and m2=" + m2, m1, m2); m1 = f.setCurrency("CHF").setContext(mc1).setNumber(BigDecimal.TEN).create(); m2 = f.setCurrency("CHF").setContext(mc2).setNumber(BigDecimal.TEN).create(); AssertJUnit.assertEquals("Section 4.2.2: m1.equals(m2) must be true for m1=" + m1 + " and m2=" + m2, m1, m2); } else { m1 = f.setCurrency("CHF").setContext(mc1).setNumber(10).create(); m2 = f.setCurrency("CHF").setContext(mc2).setNumber(10).create(); AssertJUnit .assertNotSame("Section 4.2.2: m1.equals(m2) must be false for m1=" + m1 + " and m2=" + m2, m1, AssertJUnit.assertTrue("Section 4.2.2: m1.isEqualTo(m2) must be true for m1=" + m2 + " and m2=" + m1, m2.isEqualTo(m1)); m1 = f.setCurrency("CHF").setContext(mc1).setNumber(10.5d).create(); m2 = f.setCurrency("CHF").setContext(mc2).setNumber(10.5d).create(); AssertJUnit .assertNotSame("Section 4.2.2: m1.equals(m2) must be false for m1=" + m1 + " and m2=" + m2, m1, AssertJUnit.assertTrue("Section 4.2.2: m1.isEqualTo(m2) must be true for m1=" + m2 + " and m2=" + m1, m2.isEqualTo(m1)); m1 = f.setCurrency("CHF").setContext(mc1).setNumber(BigDecimal.TEN).create();
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(
if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(p).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue( f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setMaxScale(s).build()); MonetaryAmount m = f.create(); assertTrue(