/** * 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)); } }
/** * For each MonetaryAmountFactory: Check if capabilities of default MonetaryContext are less, or equal * than Max * MonetaryContext. */ @Test(description = "4.2.6 Ensure MonetaryAmountFactory instances accessible for all amount types under test return " + "correct min/max MonetaryContext.") @SpecAssertion(section = "4.2.6", id = "426-A3") public void testMonetaryAmountFactoryMinMaxCapabilities() { for (Class type : Monetary.getAmountTypes()) { MonetaryAmountFactory<?> f = Monetary.getAmountFactory(type); MonetaryContext defCtx = f.getDefaultMonetaryContext(); MonetaryContext maxCts = f.getMaximalMonetaryContext(); assertTrue("Section 4.2.6: MonetaryAmountFactory default/max declares invalid precisions for " + type.getName(), maxCts.getPrecision() == 0 || defCtx.getPrecision() <= maxCts.getPrecision()); assertTrue( "Section 4.2.6: MonetaryAmountFactory default/max declares invalid scales for " + type.getName(), maxCts.getMaxScale() == -1 || defCtx.getMaxScale() <= maxCts.getMaxScale()); } }
MonetaryContext ctx = f.getMaximalMonetaryContext(); if (ctx.getMaxScale() >= 0) { BigDecimal num = TestUtils.createNumberWithScale(ctx.getMaxScale() + 5); MonetaryContext ctx = f.getMaximalMonetaryContext(); if (ctx.getPrecision() > 0) { BigDecimal num = TestUtils.createNumberWithPrecision(ctx.getPrecision() + 5);
MonetaryContext maxCtx = f.getMaximalMonetaryContext(); MonetaryAmount m = null; if (maxCtx.getPrecision() > 0) { f.setCurrency("CHF"); MonetaryAmount mAmount1 = f.setNumber(0).create(); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); MonetaryAmount m = null; if (maxCtx.getMaxScale() >= 0) {
MonetaryContext ctx = f.getMaximalMonetaryContext(); if (ctx.getPrecision() != 0) { try {
MonetaryAmountFactory<?> f = Monetary.getAmountFactory(type); MonetaryContext defCtx = f.getDefaultMonetaryContext(); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (f.getDefaultMonetaryContext().getMaxScale() > -1) { assertTrue( "(maxScale default/max=" + f.getDefaultMonetaryContext().getMaxScale() + '/' + f.getMaximalMonetaryContext().getMaxScale() + " for " + type.getName(), maxCtx.getMaxScale() == -1 || defCtx.getMaxScale() <= maxCtx.getMaxScale()); "(maxScale default/max=" + f.getDefaultMonetaryContext().getMaxScale() + '/' + f.getMaximalMonetaryContext().getMaxScale() + " for " + type.getName(), maxCtx.getMaxScale() == -1); "(precision default/max=" + f.getDefaultMonetaryContext().getPrecision() + '/' + f.getMaximalMonetaryContext().getPrecision() + " for " + type.getName(), maxCtx.getPrecision() == 0 || defCtx.getPrecision() <= maxCtx.getPrecision()); "(precision default/max=" + f.getDefaultMonetaryContext().getPrecision() + '/' + f.getMaximalMonetaryContext().getPrecision() + " for " + type.getName(), maxCtx.getPrecision() == 0);
/** * 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)); } }
MonetaryContext ctx = f.getMaximalMonetaryContext(); if (ctx.getPrecision() != 0) { try {
try { f.setCurrency("USD"); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { f.setContext(MonetaryContextBuilder.of(MonetaryAmount.class).setPrecision(maxCtx.getPrecision() + 1)
MonetaryContext mc = f.getMaximalMonetaryContext(); try { MonetaryContextBuilder b = mc.toBuilder();
MonetaryContext mc = f.getMaximalMonetaryContext(); try { MonetaryContextBuilder b = mc.toBuilder();
f.setCurrency("CHF"); MonetaryContext defCtx = f.getDefaultMonetaryContext(); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); MonetaryContext mc = f.setNumber(1).create().getContext(); AssertJUnit.assertEquals("Section 4.2.2: Invalid MonetaryContext(amountType) for " + type.getName(),
f.setCurrency("GBP"); f.setNumber(11.2); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) {
f.setCurrency("GBP"); f.setNumber(0.0d); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) {
f.setCurrency("GBP"); f.setNumber(BigDecimal.ZERO); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) {
f.setCurrency("GBP"); f.setNumber(1.0d); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) {
f.setCurrency("GBP"); f.setNumber(1); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) {
f.setCurrency("GBP"); f.setNumber(0); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) {
f.setCurrency("GBP"); f.setNumber(1); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) {
f.setCurrency("GBP"); f.setNumber(BigDecimal.TEN); MonetaryContext maxCtx = f.getMaximalMonetaryContext(); if (maxCtx.getPrecision() != 0) { for (int p = maxCtx.getPrecision(); p > 0; p--) {