public static AnyValue divide( AnyValue lhs, AnyValue rhs ) { if ( lhs instanceof NumberValue && rhs instanceof NumberValue ) { return ((NumberValue) lhs).divideBy( (NumberValue) rhs ); } // Temporal values if ( lhs instanceof DurationValue ) { if ( rhs instanceof NumberValue ) { return ((DurationValue) lhs).div( (NumberValue) rhs ); } } throw new CypherTypeException( String.format( "Cannot divide `%s` by `%s`", lhs.getTypeName(), rhs.getTypeName() ), null ); }
@Test void shouldDivideSimpleIntegers() { NumberValue[] integers = new NumberValue[]{byteValue( (byte) 42 ), shortValue( (short) 42 ), intValue( 42 ), longValue( 42 )}; for ( NumberValue a : integers ) { for ( NumberValue b : integers ) { assertThat( a.divideBy( b ), equalTo( longValue( 1 ) ) ); assertThat( b.divideBy( a ), equalTo( longValue( 1 ) ) ); } } }
@Test void shouldDivideSimpleFloats() { NumberValue[] integers = new NumberValue[]{byteValue( (byte) 42 ), shortValue( (short) 42 ), intValue( 42 ), longValue( 42 )}; NumberValue[] floats = new NumberValue[]{floatValue( 42 ), doubleValue( 42 )}; for ( NumberValue a : integers ) { for ( NumberValue b : floats ) { assertThat( a.divideBy( b ), equalTo( doubleValue( 1.0 ) ) ); assertThat( b.divideBy( a ), equalTo( doubleValue( 1.0 ) ) ); } } }
return ((NumberValue) lhs).divideBy( (NumberValue) rhs );
public static AnyValue divide( AnyValue lhs, AnyValue rhs ) { if ( lhs instanceof NumberValue && rhs instanceof NumberValue ) { return ((NumberValue) lhs).divideBy( (NumberValue) rhs ); } // Temporal values if ( lhs instanceof DurationValue ) { if ( rhs instanceof NumberValue ) { return ((DurationValue) lhs).div( (NumberValue) rhs ); } } throw new CypherTypeException( String.format( "Cannot divide `%s` by `%s`", lhs.getTypeName(), rhs.getTypeName() ), null ); }
return ((NumberValue) lhs).divideBy( (NumberValue) rhs );