p = add(create(BIG_DECIMAL_VAL_7), create(BIG_DECIMAL_VAL_7)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.add(BIG_DECIMAL_VAL_7).compareTo(p.getBigDecimal()), 0); p = add(create(BIG_DECIMAL_VAL_7), create(DOUBLE_VAL_5)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.add(BigDecimal.valueOf(DOUBLE_VAL_5)).compareTo(p.getBigDecimal()), 0); p = add(create(DOUBLE_VAL_5), create(BIG_DECIMAL_VAL_7)); assertTrue(p.isBigDecimal()); assertEquals((BigDecimal.valueOf(DOUBLE_VAL_5)).add(BIG_DECIMAL_VAL_7).compareTo(p.getBigDecimal()), 0); p = add(create(BIG_DECIMAL_VAL_7), create(FLOAT_VAL_4)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.add(BigDecimal.valueOf(FLOAT_VAL_4)).compareTo(p.getBigDecimal()), 0); p = add(create(FLOAT_VAL_4), create(BIG_DECIMAL_VAL_7)); assertTrue(p.isBigDecimal()); assertEquals((BigDecimal.valueOf(FLOAT_VAL_4)).add(BIG_DECIMAL_VAL_7).compareTo(p.getBigDecimal()), 0); p = add(create(BIG_DECIMAL_VAL_7), create(LONG_VAL_3)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.add(BigDecimal.valueOf(LONG_VAL_3)).compareTo(p.getBigDecimal()), 0); p = add(create(LONG_VAL_3), create(BIG_DECIMAL_VAL_7)); assertTrue(p.isBigDecimal()); assertEquals((BigDecimal.valueOf(LONG_VAL_3)).add(BIG_DECIMAL_VAL_7).compareTo(p.getBigDecimal()), 0); p = add(create(BIG_DECIMAL_VAL_7), create(INT_VAL_2)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.add(BigDecimal.valueOf(INT_VAL_2)).compareTo(p.getBigDecimal()), 0); p = add(create(INT_VAL_2), create(BIG_DECIMAL_VAL_7));
p = multiply(create(BIG_DECIMAL_VAL_7), create(BIG_DECIMAL_VAL_7)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.multiply(BIG_DECIMAL_VAL_7).compareTo(p.getBigDecimal()), 0); p = multiply(create(BIG_DECIMAL_VAL_7), create(DOUBLE_VAL_5)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.multiply(BigDecimal.valueOf(DOUBLE_VAL_5)).compareTo(p.getBigDecimal()), 0); p = multiply(create(DOUBLE_VAL_5), create(BIG_DECIMAL_VAL_7)); assertTrue(p.isBigDecimal()); assertEquals((BigDecimal.valueOf(DOUBLE_VAL_5)).multiply(BIG_DECIMAL_VAL_7).compareTo(p.getBigDecimal()), 0); p = multiply(create(BIG_DECIMAL_VAL_7), create(FLOAT_VAL_4)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.multiply(BigDecimal.valueOf(FLOAT_VAL_4)).compareTo(p.getBigDecimal()), 0); p = multiply(create(FLOAT_VAL_4), create(BIG_DECIMAL_VAL_7)); assertTrue(p.isBigDecimal()); assertEquals((BigDecimal.valueOf(FLOAT_VAL_4)).multiply(BIG_DECIMAL_VAL_7).compareTo(p.getBigDecimal()), 0); p = multiply(create(BIG_DECIMAL_VAL_7), create(LONG_VAL_3)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.multiply(BigDecimal.valueOf(LONG_VAL_3)).compareTo(p.getBigDecimal()), 0); p = multiply(create(LONG_VAL_3), create(BIG_DECIMAL_VAL_7)); assertTrue(p.isBigDecimal()); assertEquals((BigDecimal.valueOf(LONG_VAL_3)).multiply(BIG_DECIMAL_VAL_7).compareTo(p.getBigDecimal()), 0); p = multiply(create(BIG_DECIMAL_VAL_7), create(INT_VAL_2)); assertTrue(p.isBigDecimal()); assertEquals(BIG_DECIMAL_VAL_7.multiply(BigDecimal.valueOf(INT_VAL_2)).compareTo(p.getBigDecimal()), 0); p = multiply(create(INT_VAL_2), create(BIG_DECIMAL_VAL_7));
int aType = checkNumericalAndGetType(aValue); int bType = checkNumericalAndGetType(bValue); b = bValue.getFloat(); } else { a = aType == FLOAT ? aValue.getFloat() : floatValue(aValue, aType); b = bType == FLOAT ? bValue.getFloat() : floatValue(bValue, bType); b = bValue.getLong(); } else { a = aType == LONG ? aValue.getLong() : longValue(aValue, aType); b = bType == LONG ? bValue.getLong() : longValue(bValue, bType); b = bValue.getDouble(); } else { a = aType == DOUBLE ? aValue.getDouble() : doubleValue(aValue, aType); b = bType == DOUBLE ? bValue.getDouble() : doubleValue(bValue, bType); } else { a = aType == BIG_DECIMAL ? aValue.getBigDecimal() : bigDecimalValue(aValue, aType); b = bType == BIG_DECIMAL ? bValue.getBigDecimal() : bigDecimalValue(bValue, bType);
p = max(create(maxBigDecimal), create(minBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(maxBigDecimal), 0); p = max(create(minBigDecimal), create(maxBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(maxBigDecimal), 0); p = max(create(maxBigDecimal), create(minDouble)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(maxBigDecimal), 0); p = max(create(minDouble), create(maxBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(maxBigDecimal), 0); p = max(create(maxBigDecimal), create(minFloat)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(maxBigDecimal), 0); p = max(create(minFloat), create(maxBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(maxBigDecimal), 0); p = max(create(maxBigDecimal), create(minLong)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(maxBigDecimal), 0); p = max(create(minLong), create(maxBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(maxBigDecimal), 0); p = max(create(maxBigDecimal), create(minInt));
p = min(create(minBigDecimal), create(maxBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(minBigDecimal), 0); p = min(create(maxBigDecimal), create(minBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(minBigDecimal), 0); p = min(create(minBigDecimal), create(maxDouble)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(minBigDecimal), 0); p = min(create(maxDouble), create(minBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(minBigDecimal), 0); p = min(create(minBigDecimal), create(maxFloat)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(minBigDecimal), 0); p = min(create(maxFloat), create(minBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(minBigDecimal), 0); p = min(create(minBigDecimal), create(maxLong)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(minBigDecimal), 0); p = min(create(maxLong), create(minBigDecimal)); assertTrue(p.isBigDecimal()); assertEquals(p.getBigDecimal().compareTo(minBigDecimal), 0); p = min(create(minBigDecimal), create(maxInt));
PropertyValue aValue, PropertyValue bValue) { int aType = checkNumericalAndGetType(aValue); int bType = checkNumericalAndGetType(bValue); int returnType = maxType(aType, bType); b = bValue.getFloat(); } else { a = aType == FLOAT ? aValue.getFloat() : floatValue(aValue, aType); b = bType == FLOAT ? bValue.getFloat() : floatValue(bValue, bType); b = bValue.getLong(); } else { a = aType == LONG ? aValue.getLong() : longValue(aValue, aType); b = bType == LONG ? bValue.getLong() : longValue(bValue, bType); b = bValue.getDouble(); } else { a = aType == DOUBLE ? aValue.getDouble() : doubleValue(aValue, aType); b = bType == DOUBLE ? bValue.getDouble() : doubleValue(bValue, bType); } else { a = aType == BIG_DECIMAL ? aValue.getBigDecimal() : bigDecimalValue(aValue, aType); b = bType == BIG_DECIMAL ? bValue.getBigDecimal() : bigDecimalValue(bValue, bType);
PropertyValue aValue, PropertyValue bValue) { int aType = checkNumericalAndGetType(aValue); int bType = checkNumericalAndGetType(bValue); int returnType = maxType(aType, bType); b = bValue.getFloat(); } else { a = aType == FLOAT ? aValue.getFloat() : floatValue(aValue, aType); b = bType == FLOAT ? bValue.getFloat() : floatValue(bValue, bType); b = bValue.getLong(); } else { a = aType == LONG ? aValue.getLong() : longValue(aValue, aType); b = bType == LONG ? bValue.getLong() : longValue(bValue, bType); b = bValue.getDouble(); } else { a = aType == DOUBLE ? aValue.getDouble() : doubleValue(aValue, aType); b = bType == DOUBLE ? bValue.getDouble() : doubleValue(bValue, bType); } else { a = aType == BIG_DECIMAL ? aValue.getBigDecimal() : bigDecimalValue(aValue, aType); b = bType == BIG_DECIMAL ? bValue.getBigDecimal() : bigDecimalValue(bValue, bType);
PropertyValue aValue, PropertyValue bValue) { int aType = checkNumericalAndGetType(aValue); int bType = checkNumericalAndGetType(bValue); int returnType = maxType(aType, bType); b = bValue.getFloat(); } else { a = aType == FLOAT ? aValue.getFloat() : floatValue(aValue, aType); b = bType == FLOAT ? bValue.getFloat() : floatValue(bValue, bType); b = bValue.getLong(); } else { a = aType == LONG ? aValue.getLong() : longValue(aValue, aType); b = bType == LONG ? bValue.getLong() : longValue(bValue, bType); b = bValue.getDouble(); } else { a = aType == DOUBLE ? aValue.getDouble() : doubleValue(aValue, aType); b = bType == DOUBLE ? bValue.getDouble() : doubleValue(bValue, bType); } else { a = aType == BIG_DECIMAL ? aValue.getBigDecimal() : bigDecimalValue(aValue, aType); b = bType == BIG_DECIMAL ? bValue.getBigDecimal() : bigDecimalValue(bValue, bType);
p = multiply(create(DOUBLE_VAL_5), create(DOUBLE_VAL_5)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 * DOUBLE_VAL_5, p.getDouble(), 0); p = multiply(create(DOUBLE_VAL_5), create(FLOAT_VAL_4)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 * FLOAT_VAL_4, p.getDouble(), 0); p = multiply(create(FLOAT_VAL_4), create(DOUBLE_VAL_5)); assertTrue(p.isDouble()); assertEquals(FLOAT_VAL_4 * DOUBLE_VAL_5, p.getDouble(), 0); p = multiply(create(DOUBLE_VAL_5), create(LONG_VAL_3)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 * LONG_VAL_3, p.getDouble(), 0); p = multiply(create(LONG_VAL_3), create(DOUBLE_VAL_5)); assertTrue(p.isDouble()); assertEquals(LONG_VAL_3 * DOUBLE_VAL_5, p.getDouble(), 0); p = multiply(create(DOUBLE_VAL_5), create(INT_VAL_2)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 * INT_VAL_2, p.getDouble(), 0); p = multiply(create(INT_VAL_2), create(DOUBLE_VAL_5)); assertTrue(p.isDouble()); assertEquals(INT_VAL_2 * DOUBLE_VAL_5, p.getDouble(), 0); p = multiply(create(DOUBLE_VAL_5), create(SHORT_VAL_e)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 * SHORT_VAL_e, p.getDouble(), 0); p = multiply(create(SHORT_VAL_e), create(DOUBLE_VAL_5));
p = add(create(DOUBLE_VAL_5), create(DOUBLE_VAL_5)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 + DOUBLE_VAL_5, p.getDouble(), 0); p = add(create(DOUBLE_VAL_5), create(FLOAT_VAL_4)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 + FLOAT_VAL_4, p.getDouble(), 0); p = add(create(FLOAT_VAL_4), create(DOUBLE_VAL_5)); assertTrue(p.isDouble()); assertEquals(FLOAT_VAL_4 + DOUBLE_VAL_5, p.getDouble(), 0); p = add(create(DOUBLE_VAL_5), create(LONG_VAL_3)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 + LONG_VAL_3, p.getDouble(), 0); p = add(create(LONG_VAL_3), create(DOUBLE_VAL_5)); assertTrue(p.isDouble()); assertEquals(LONG_VAL_3 + DOUBLE_VAL_5, p.getDouble(), 0); p = add(create(DOUBLE_VAL_5), create(INT_VAL_2)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 + INT_VAL_2, p.getDouble(), 0); p = add(create(INT_VAL_2), create(DOUBLE_VAL_5)); assertTrue(p.isDouble()); assertEquals(INT_VAL_2 + DOUBLE_VAL_5, p.getDouble(), 0); p = add(create(DOUBLE_VAL_5), create(SHORT_VAL_e)); assertTrue(p.isDouble()); assertEquals(DOUBLE_VAL_5 + SHORT_VAL_e, p.getDouble(), 0); p = add(create(SHORT_VAL_e), create(DOUBLE_VAL_5));
@Test public void testMultiplyReturningFloat() { PropertyValue p; // float p = multiply(create(FLOAT_VAL_4), create(FLOAT_VAL_4)); assertTrue(p.isFloat()); assertEquals(FLOAT_VAL_4 * FLOAT_VAL_4, p.getFloat(), 0); // long p = multiply(create(FLOAT_VAL_4), create(LONG_VAL_3)); assertTrue(p.isFloat()); assertEquals(FLOAT_VAL_4 * LONG_VAL_3, p.getFloat(), 0); p = multiply(create(LONG_VAL_3), create(FLOAT_VAL_4)); assertTrue(p.isFloat()); assertEquals(LONG_VAL_3 * FLOAT_VAL_4, p.getFloat(), 0); // int p = multiply(create(FLOAT_VAL_4), create(INT_VAL_2)); assertTrue(p.isFloat()); assertEquals(FLOAT_VAL_4 * INT_VAL_2, p.getFloat(), 0); p = multiply(create(INT_VAL_2), create(FLOAT_VAL_4)); assertTrue(p.isFloat()); assertEquals(INT_VAL_2 * FLOAT_VAL_4, p.getFloat(), 0); // short p = multiply(create(FLOAT_VAL_4), create(SHORT_VAL_e)); assertTrue(p.isFloat()); assertEquals(FLOAT_VAL_4 * SHORT_VAL_e, p.getFloat(), 0); p = multiply(create(SHORT_VAL_e), create(FLOAT_VAL_4)); assertTrue(p.isFloat()); assertEquals(SHORT_VAL_e * FLOAT_VAL_4, p.getFloat(), 0); }
@Override public int compareTo(PropertyValue o) { int result; if (this.isNull() && o.isNull()) { result = 0; } else if (this.isNumber() && o.isNumber()) { result = PropertyValueUtils.Numeric.compare(this, o); } else if (this.isBoolean() && o.isBoolean()) { result = Boolean.compare(this.getBoolean(), o.getBoolean()); } else if (this.isString() && o.isString()) { result = this.getString().compareTo(o.getString()); } else if (this.isGradoopId() && o.isGradoopId()) { result = this.getGradoopId().compareTo(o.getGradoopId()); } else if (this.isDate() && o.isDate()) { result = this.getDate().compareTo(o.getDate()); } else if (this.isTime() && o.isTime()) { result = this.getTime().compareTo(o.getTime()); } else if (this.isDateTime() && o.isDateTime()) { result = this.getDateTime().compareTo(o.getDateTime()); } else if (this.isMap() || o.isMap() || this.isList() || o.isList() || this.isSet() || o.isSet()) { throw new UnsupportedOperationException(String.format( "Method compareTo() is not supported for %s, %s", this.getClass(), o.getClass())); } else { throw new IllegalArgumentException(String.format( "Incompatible types: %s, %s", this.getClass(), o.getClass())); } return result; }
@Test public void testAddReturningFloat() { PropertyValue p; // float p = add(create(FLOAT_VAL_4), create(FLOAT_VAL_4)); assertTrue(p.isFloat()); assertEquals(FLOAT_VAL_4 + FLOAT_VAL_4, p.getFloat(), 0); // long p = add(create(FLOAT_VAL_4), create(LONG_VAL_3)); assertTrue(p.isFloat()); assertEquals(FLOAT_VAL_4 + LONG_VAL_3, p.getFloat(), 0); p = add(create(LONG_VAL_3), create(FLOAT_VAL_4)); assertTrue(p.isFloat()); assertEquals(LONG_VAL_3 + FLOAT_VAL_4, p.getFloat(), 0); // int p = add(create(FLOAT_VAL_4), create(INT_VAL_2)); assertTrue(p.isFloat()); assertEquals(FLOAT_VAL_4 + INT_VAL_2, p.getFloat(), 0); p = add(create(INT_VAL_2), create(FLOAT_VAL_4)); assertTrue(p.isFloat()); assertEquals(INT_VAL_2 + FLOAT_VAL_4, p.getFloat(), 0); // short p = add(create(FLOAT_VAL_4), create(SHORT_VAL_e)); assertTrue(p.isFloat()); assertEquals(FLOAT_VAL_4 + SHORT_VAL_e, p.getFloat(), 0); p = add(create(SHORT_VAL_e), create(FLOAT_VAL_4)); assertTrue(p.isFloat()); assertEquals(SHORT_VAL_e + FLOAT_VAL_4, p.getFloat(), 0); }
@Test public void testMultiplyReturningLong() { PropertyValue p; // long p = multiply(create(LONG_VAL_3), create(LONG_VAL_3)); assertTrue(p.isLong()); assertEquals(LONG_VAL_3 * LONG_VAL_3, p.getLong(), 0); // int p = multiply(create(LONG_VAL_3), create(INT_VAL_2)); assertTrue(p.isLong()); assertEquals(LONG_VAL_3 * INT_VAL_2, p.getLong(), 0); p = multiply(create(INT_VAL_2), create(LONG_VAL_3)); assertTrue(p.isLong()); assertEquals(INT_VAL_2 * LONG_VAL_3, p.getLong(), 0); // short p = multiply(create(LONG_VAL_3), create(SHORT_VAL_e)); assertTrue(p.isLong()); assertEquals(LONG_VAL_3 * SHORT_VAL_e, p.getLong(), 0); p = multiply(create(SHORT_VAL_e), create(LONG_VAL_3)); assertTrue(p.isLong()); assertEquals(SHORT_VAL_e * LONG_VAL_3, p.getLong(), 0); }
@Test public void testAddReturningLong() { PropertyValue p; // long p = add(create(LONG_VAL_3), create(LONG_VAL_3)); assertTrue(p.isLong()); assertEquals(LONG_VAL_3 + LONG_VAL_3, p.getLong(), 0); // int p = add(create(LONG_VAL_3), create(INT_VAL_2)); assertTrue(p.isLong()); assertEquals(LONG_VAL_3 + INT_VAL_2, p.getLong(), 0); p = add(create(INT_VAL_2), create(LONG_VAL_3)); assertTrue(p.isLong()); assertEquals(INT_VAL_2 + LONG_VAL_3, p.getLong(), 0); // short p = add(create(LONG_VAL_3), create(SHORT_VAL_e)); assertTrue(p.isLong()); assertEquals(LONG_VAL_3 + SHORT_VAL_e, p.getLong(), 0); p = add(create(SHORT_VAL_e), create(LONG_VAL_3)); assertTrue(p.isLong()); assertEquals(SHORT_VAL_e + LONG_VAL_3, p.getLong(), 0); }
@Test public void testMultiplyReturningInteger() { PropertyValue p; // int p = multiply(create(INT_VAL_2), create(INT_VAL_2)); assertTrue(p.isInt()); assertEquals(INT_VAL_2 * INT_VAL_2, p.getInt(), 0); // short p = multiply(create(INT_VAL_2), create(SHORT_VAL_e)); assertTrue(p.isInt()); assertEquals(INT_VAL_2 * SHORT_VAL_e, p.getInt(), 0); p = multiply(create(SHORT_VAL_e), create(INT_VAL_2)); assertTrue(p.isInt()); assertEquals(SHORT_VAL_e * INT_VAL_2, p.getInt(), 0); p = multiply(create(SHORT_VAL_e), create(SHORT_VAL_e)); assertTrue(p.isInt()); assertEquals(SHORT_VAL_e * SHORT_VAL_e, p.getInt(), 0); }
@Test public void testAddReturningInteger() { PropertyValue p; // int p = add(create(INT_VAL_2), create(INT_VAL_2)); assertTrue(p.isInt()); assertEquals(INT_VAL_2 + INT_VAL_2, p.getInt(), 0); // short p = add(create(INT_VAL_2), create(SHORT_VAL_e)); assertTrue(p.isInt()); assertEquals(INT_VAL_2 + SHORT_VAL_e, p.getInt(), 0); p = add(create(SHORT_VAL_e), create(INT_VAL_2)); assertTrue(p.isInt()); assertEquals(SHORT_VAL_e + INT_VAL_2, p.getInt(), 0); p = add(create(SHORT_VAL_e), create(SHORT_VAL_e)); assertTrue(p.isInt()); assertEquals(SHORT_VAL_e + SHORT_VAL_e, p.getInt(), 0); }
@Override public PropertyValue getIncrement(Element vertex) { PropertyValue increment; if (vertex.hasProperty(REVENUE_KEY)) { increment = vertex.getPropertyValue(REVENUE_KEY); } else if (vertex.hasProperty(EXPENSE_KEY)) { PropertyValue expense = vertex.getPropertyValue(EXPENSE_KEY); increment = PropertyValueUtils.Numeric.multiply(expense, PropertyValue.create(-1)); } else { increment = PropertyValue.create(0); } return increment; }
@Override default PropertyValue aggregate(PropertyValue aggregate, PropertyValue increment) { return PropertyValueUtils.Numeric.add(aggregate, increment); } }
@Override default PropertyValue aggregate(PropertyValue aggregate, PropertyValue increment) { return PropertyValueUtils.Numeric.add(aggregate, increment); } }