@Override public Integer queryFrom(MonetaryAmount amount) { return amount.getNumber().intValue(); } };
AssertJUnit .assertEquals("Section 4.2.3: Number value (int, truncating) returned is not correct for " + num + ", type; " + type.getName(), 0L, result.intValue()); try { result.intValueExact();
/** * Check if a correct double value is returned, truncation is * allowed to be performed. Check should be done for every JDK type * supported. */ @SpecAssertion(section = "4.2.3", id = "423-B9") @Test(description = "4.2.3 Checks if a correct int value is returned, truncation is" + " allowed to be performed. Check should be done for every JDK type.") public void testNumberValueWithTruncationNegative_Integer() { Number[] nums = new Number[]{-1213243544435L, -3234, -3.5f - 1.1, -1.2d, -21323234324324.23}; for (Number num : nums) { for (Class type : Monetary.getAmountTypes()) { if (type.equals(TestAmount.class)) { continue; } MonetaryAmount mAmount1 = Monetary.getAmountFactory(type).setCurrency(DEFAULT_CURRENCY).setNumber(num).create(); NumberValue result = mAmount1.getNumber(); AssertJUnit .assertEquals("Section 4.2.3: Number value (BigDecimal -> byte) returned is not correct for " + type.getName(), (long) new BigDecimal(String.valueOf(num)).intValue(), (long) result.numberValue(Integer.class)); AssertJUnit .assertEquals("Section 4.2.3: Number value (BigDecimal -> byte) returned is not correct for " + type.getName(), (long) new BigDecimal(String.valueOf(num)).intValue(), (long) result.intValue()); } } }
(int) num, result.intValue()); try { result.intValueExact();
/** * Check if a correct integer value is returned, no truncation is * allowed to be performed. */ @SpecAssertion(section = "4.2.3", id = "423-C2") @Test(description = "4.2.3 Check if a correct integer value is returned, no truncation is " + " allowed to be performed.") public void testIntegerZero() { Number[] nums = new Number[]{0, 0.0, -0.0, new BigDecimal("0.000000000000000000000000000001"), new BigDecimal("-0.000000000000000000000000000001"), new BigInteger("0")}; for (Number num : nums) { for (Class type : Monetary.getAmountTypes()) { if (type.equals(TestAmount.class)) { continue; } MonetaryAmount mAmount1; try { mAmount1 = Monetary.getAmountFactory(type).setCurrency(DEFAULT_CURRENCY).setNumber(num) .create(); } catch (MonetaryException | ArithmeticException e) { // It is possible, that our test may exceed the capabilities, so in that case, we just continue continue; } NumberValue result = mAmount1.getNumber(); AssertJUnit .assertEquals("Section 4.2.3: Number value (int, truncating) returned is not correct for " + num + ", type; " + type.getName(), 0, result.intValue()); } } }
/** * Check if a correct integer value is returned, no truncation is * allowed to be performed. */ @SpecAssertion(section = "4.2.3", id = "423-A2") @Test(description = "4.2.3 Ensure NumberValue intValue(), intValueExact() provide correct values.") public void testValidInteger() { int[] nums = new int[]{-3, -1, 0, 1, 3}; for (int num : nums) { for (Class type : Monetary.getAmountTypes()) { if (type.equals(TestAmount.class)) { continue; } MonetaryAmount mAmount1 = Monetary.getAmountFactory(type).setCurrency(DEFAULT_CURRENCY).setNumber(num).create(); NumberValue result = mAmount1.getNumber(); AssertJUnit.assertNotNull("Section 4.2.3: Amount creation failed for " + type, result); AssertJUnit.assertEquals("Section 4.2.3: Number value (int) returned is not correct for " + type.getName(), num, result.intValue()); AssertJUnit.assertEquals("Section 4.2.3: Exact number value (int) returned is not correct for " + type.getName(), num, result.intValueExact()); } } }
} else if (Integer.class.equals(numType)) { AssertJUnit.assertEquals("Section 4.2.3: Truncating conversion to int failed for type " + type.getName(), dec.intValue(), result.intValue()); } else if (Long.class.equals(numType)) { AssertJUnit.assertEquals("Section 4.2.3: Truncating conversion to long failed for type " + type.getName(),
/** * Checks if a correct negative Integer value is returned, no truncation is * allowed to be performed. */ @SpecAssertion(section = "4.2.3", id = "423-B2") @Test(description = "4.2.3 Checks if a correct Integer value is returned, no truncation is" + " allowed to be performed.") public void testIntegerNegative() { int[] nums = new int[]{-1, -3, -11, -123, -12345, -1223345566}; for (long num : nums) { for (Class type : Monetary.getAmountTypes()) { if (type.equals(TestAmount.class)) { continue; } MonetaryAmount mAmount1 = Monetary.getAmountFactory(type).setCurrency(DEFAULT_CURRENCY).setNumber(num).create(); NumberValue result = mAmount1.getNumber(); AssertJUnit.assertNotNull("Section 4.2.3: Amount creation failed for " + type, result); AssertJUnit.assertEquals("Section 4.2.3: Number value (int) returned is not correct for " + type.getName(), num, result.intValue()); AssertJUnit.assertEquals("Section 4.2.3: Exact number (int) returned is not correct for " + type.getName(), num, result.intValueExact()); } } }
MonetaryAmount monetaryAmount = Money.of(123.45, euro); CurrencyUnit currency = monetaryAmount.getCurrency(); NumberValue numberValue = monetaryAmount.getNumber(); int intValue = numberValue.intValue(); // 123 double doubleValue = numberValue.doubleValue(); // 123.45 long fractionDenominator = numberValue.getAmountFractionDenominator(); // 100 long fractionNumerator = numberValue.getAmountFractionNumerator(); // 45 int precision = numberValue.getPrecision(); // 5 // NumberValue extends java.lang.Number. // So we assign numberValue to a variable of type Number Number number = numberValue;
MonetaryAmount monetaryAmount = Money.of(123.45, euro); CurrencyUnit currency = monetaryAmount.getCurrency(); NumberValue numberValue = monetaryAmount.getNumber(); int intValue = numberValue.intValue(); // 123 double doubleValue = numberValue.doubleValue(); // 123.45 long fractionDenominator = numberValue.getAmountFractionDenominator(); // 100 long fractionNumerator = numberValue.getAmountFractionNumerator(); // 45 int precision = numberValue.getPrecision(); // 5 // NumberValue extends java.lang.Number. // So we assign numberValue to a variable of type Number Number number = numberValue;
MonetaryAmount monetaryAmount = Money.of(123.45, euro); CurrencyUnit currency = monetaryAmount.getCurrency(); NumberValue numberValue = monetaryAmount.getNumber(); int intValue = numberValue.intValue(); // 123 double doubleValue = numberValue.doubleValue(); // 123.45 long fractionDenominator = numberValue.getAmountFractionDenominator(); // 100 long fractionNumerator = numberValue.getAmountFractionNumerator(); // 45 int precision = numberValue.getPrecision(); // 5 // NumberValue extends java.lang.Number. // So we assign numberValue to a variable of type Number Number number = numberValue;
/** * Check if a correct integer value is returned, truncation is * allowed to be performed. */ @SpecAssertion(section = "4.2.3", id = "423-B6") @Test(description = "4.2.3 Check if a correct integer value is returned, truncation is" + " allowed to be performed..") public void testIntegerWithTruncationNegative() { double[] nums = new double[]{-1.1, -3.12, -11.123, -123.1234, -12345.12233, -1223345566.2332432}; for (double num : nums) { for (Class type : Monetary.getAmountTypes()) { if (type.equals(TestAmount.class)) { continue; } MonetaryAmount mAmount1; try { mAmount1 = Monetary.getAmountFactory(type).setCurrency(DEFAULT_CURRENCY).setNumber(num) .create(); } catch (ArithmeticException | MonetaryException e) { // can hhappen if number exceeds capabilities continue; } NumberValue result = mAmount1.getNumber(); AssertJUnit.assertEquals("Section 4.2.3: Number value (int) returned is not correct for " + type.getName(), (int) num, result.intValue()); } } }
numbers[i].stripTrailingZeros(), nv.numberValue(BigDecimal.class).stripTrailingZeros()); AssertJUnit.assertEquals("Section 4.2.2: getNumber().intValue() incorrect for " + type.getName(), intNums[i], nv.intValue()); AssertJUnit.assertEquals("Section 4.2.2: getNumber().longValue() incorrect for " + type.getName(), longNums[i], nv.longValue());
(long) num, result.intValue()); try { result.longValueExact();
(long) num, result.intValue()); try { result.longValueExact();
p.getSalary().getNumber().intValue() <= 100000) .map(p -> p.getSalary()) .forEach(salary -> System.out.println(salary));