// assert transitivity for a constructed triple (d, b and l)
long m = Long.MAX_VALUE - 1000; // 9223372036854774807
Double d = new Double(m); // 9.2233720368547748E18, (long)d.doubleValue(): 9223372036854774784
BigInteger b = BigInteger.valueOf(m + 1); // 9223372036854774808
Long l = new Long(b.longValue() + 1); // 9223372036854774809
if (NumberUtils.compare(d, b) == -1 && NumberUtils.compare(b, l) == -1)
assertEquals(-1, NumberUtils.compare(d, l));
// this test is used to argue against the usage of the comparison
// operators (<, == and >) when comparing doubles and longs
// (for the values above the assertion fails, since d == l,