package er.neo4jadaptor.ersatz.lucene;
import junit.framework.TestCase;
public class StorableTypesTest extends TestCase {
private static void assertOrderIsKept(long val1, long val2) {
String rep1 = StorableTypes.LONG.encode(val1);
String rep2 = StorableTypes.LONG.encode(val2);
int result = rep1.compareTo(rep2);
if (val1 < val2) {
assertTrue(result < 0);
} else if (val1 > val2) {
assertTrue(result > 0);
} else {
assertTrue(result == 0);
}
}
private static void assertOrderIsKept(double val1, double val2) {
String rep1 = StorableTypes.DOUBLE.encode(val1);
String rep2 = StorableTypes.DOUBLE.encode(val2);
String msg = rep1 + " vs. " + rep2;
int result = rep1.compareTo(rep2);
if (val1 < val2) {
assertTrue(msg, result < 0);
} else if (val1 > val2) {
assertTrue(msg, result > 0);
} else {
assertTrue(msg, result == 0);
}
}
public void test1_longSimpleValues() {
assertOrderIsKept(1, 3);
assertOrderIsKept(3, 1);
assertOrderIsKept(0, 0);
}
public void test2_longNegativeValues() {
assertOrderIsKept(-1, 3);
assertOrderIsKept(0, -0);
}
public void test3_longEdgeValues() {
assertOrderIsKept(Long.MAX_VALUE, 0);
assertOrderIsKept(Long.MIN_VALUE, 0);
assertOrderIsKept(Long.MAX_VALUE, Long.MIN_VALUE);
assertOrderIsKept(Long.MIN_VALUE, -1);
assertOrderIsKept(-1, Long.MIN_VALUE);
assertOrderIsKept(Long.MAX_VALUE, Long.MAX_VALUE-1);
}
public void test4_doubleSimpleValues() {
assertOrderIsKept(0.0000001, Math.PI);
assertOrderIsKept(Math.PI, 0.00001);
assertOrderIsKept(0.0000000000000000000000000000001, 0.000000000000000000000000000099);
assertOrderIsKept(1.0000000000000000000000000000001, 0.000000000000000000000000000099);
}
}