blob: 05795913073ab05a797f83639c5f7d6f5100d562 [file] [log] [blame]
@test
operation testCompareIntegers() {
assertEquals(1>2, false);
assertEquals(2>1, true);
assertEquals(3<1, false);
assertEquals(1<3, true);
assertEquals(1 >= 2, false);
assertEquals(1 >= 1, true);
assertEquals(2147483648l == 2147483648l, true);
assertEquals(2147483648 == 2147483648, true);
assertEquals(2147483647 == 2147483648, false);
assertEquals(-2147483649l == -2147483649l, true);
assertEquals(-2147483649 == -2147483649, true);
assertEquals(-2147483649 == -2147483648, false);
assertEquals(9223372036854775807 == 9223372036854775807, true);
assertEquals(9223372036854775807l == 9223372036854775807l, true);
assertEquals(9223372036854775807l == 9223372036854775806l, false);
}
@test
operation testCompareDoubles() {
assertEquals(0.1f, 0.1f);
assertEquals(0.1d, 0.1d);
// Not *exactly* equal, due to floating-point precision
assertNotEquals("Floating point precision should make 0.3 and 10 * 0.03 different", 0.3f, 0.03f * 10);
assertNotEquals(0.3d, 0.1d + 0.1d + 0.1d);
// Normally, you should use approximate equality. "ulps" seems to be
// a very good way to compare IEEE 754 floating point numbers, as it
// takes into account the fact that the precision changes with the
// magnitude of the number. 4 or 5 ulps seems to be OK most of the time.
assertEquals(0.3f, 0.03f * 10, 4);
assertEquals("0.3d and 0.01d+0.01d+.01d should be approximately equal", 0.3d, 0.1d+0.1d+0.1d, 4);
}