@SuppressWarnings("boxing") private void cipEqu(Number actual, Number expected, int flags) { Number res = OverloadedNumberUtil.addFallbackType(actual, flags); assertEquals(expected.getClass(), res.getClass()); assertEquals(expected, res); // Some number types wrap the number with multiple types and equals() only compares one of them. // So we try to // catch any inconsistency: assertEquals(expected.byteValue(), res.byteValue()); assertEquals(expected.shortValue(), res.shortValue()); assertEquals(expected.intValue(), res.intValue()); assertEquals(expected.longValue(), res.longValue()); assertEquals(expected.floatValue(), res.floatValue()); assertEquals(expected.doubleValue(), res.doubleValue()); }
public void testGetArgumentConversionPrice() { // Unknown number types: assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice(RationalNumber.class, Integer.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, RationalNumber.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice(RationalNumber.class, Float.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice(Float.class, RationalNumber.class)); assertEquals( 0, OverloadedNumberUtil.getArgumentConversionPrice( RationalNumber.class, RationalNumber.class)); // Fully check some rows (not all of them; the code is generated anyways): assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Byte.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Short.class)); assertEquals(0, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Integer.class)); assertEquals(10004, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Long.class)); assertEquals( 10005, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, BigInteger.class)); assertEquals( 30006, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Float.class)); assertEquals( 20007, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Double.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, BigDecimal.class)); assertEquals( 45001, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Byte.class)); assertEquals( 44002, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Short.class)); assertEquals( 41003, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Integer.class)); assertEquals( 41004, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Long.class)); assertEquals( 40005, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, BigInteger.class)); assertEquals( 33006, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Float.class)); assertEquals( 32007, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Double.class)); assertEquals( 0, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, BigDecimal.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, Byte.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, Short.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, Integer.class)); assertEquals( 21004, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, Long.class)); assertEquals( 21005, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, BigInteger.class)); assertEquals( 40006, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, Float.class)); assertEquals( 0, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, Double.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, BigDecimal.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, Byte.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, Short.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, Integer.class)); assertEquals( Integer.MAX_VALUE, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, Long.class)); assertEquals( 0, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, BigInteger.class)); assertEquals( 40006, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, Float.class)); assertEquals( 20007, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, Double.class)); assertEquals( 10008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, BigDecimal.class)); // Check if all fromC is present: assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice(Byte.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice(Short.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice(Long.class, BigDecimal.class)); assertEquals( 10008, OverloadedNumberUtil.getArgumentConversionPrice(BigInteger.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice(Float.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice(Double.class, BigDecimal.class)); assertEquals( 0, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, BigDecimal.class)); assertEquals( 0, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.IntegerBigDecimal.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrFloat.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.FloatOrByte.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrShort.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.FloatOrByte.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.FloatOrShort.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.FloatOrInteger.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrByte.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrIntegerOrFloat.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrInteger.class, BigDecimal.class)); assertEquals( 20008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.DoubleOrLong.class, BigDecimal.class)); assertEquals( 10008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrByte.class, BigDecimal.class)); assertEquals( 10008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrShort.class, BigDecimal.class)); assertEquals( 10008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrInteger.class, BigDecimal.class)); assertEquals( 10008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrLong.class, BigDecimal.class)); assertEquals( 10008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrFloat.class, BigDecimal.class)); assertEquals( 10008, OverloadedNumberUtil.getArgumentConversionPrice( OverloadedNumberUtil.BigIntegerOrDouble.class, BigDecimal.class)); }