You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2015/09/03 19:51:56 UTC
[29/50] [abbrv] incubator-tinkerpop git commit: TINKERPOP3-750: Test
large number comparison
TINKERPOP3-750: Test large number comparison
Repro for comparisons that are sensitive to loss of precision when converting Number to double.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/e1917173
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/e1917173
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/e1917173
Branch: refs/heads/blvp
Commit: e1917173d8a44b97799ecffb405948e0549af6d6
Parents: a20d060
Author: mhfrantz <mf...@redsealnetworks.com>
Authored: Mon Aug 31 11:42:35 2015 -0700
Committer: mhfrantz <mf...@redsealnetworks.com>
Committed: Mon Aug 31 13:26:05 2015 -0700
----------------------------------------------------------------------
.../gremlin/process/traversal/CompareTest.java | 49 ++++++++++++++++----
1 file changed, 40 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e1917173/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/CompareTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/CompareTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/CompareTest.java
index 6184c94..a7d8e1b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/CompareTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/CompareTest.java
@@ -32,13 +32,13 @@ import static org.junit.Assert.assertEquals;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Matt Frantz (http://github.com/mhfrantz)
*/
@RunWith(Parameterized.class)
public class CompareTest {
@Parameterized.Parameters(name = "{0}.test({1},{2}) = {3}")
public static Iterable<Object[]> data() {
- final List<Object> one = Arrays.asList(1, 1l, 1d, 1f, BigDecimal.ONE, BigInteger.ONE);
final List<Object[]> testCases = new ArrayList<>(Arrays.asList(new Object[][]{
{Compare.eq, null, null, true},
{Compare.eq, null, 1, false},
@@ -89,16 +89,47 @@ public class CompareTest {
{Compare.lte, "z", "a", false},
{Compare.lte, "a", "z", true}
}));
- for (int i = 0; i < one.size(); i++) {
- for (int j = 0; j < one.size(); j++) {
- testCases.add(new Object[]{Compare.eq, one.get(i), one.get(j), true});
- testCases.add(new Object[]{Compare.neq, one.get(i), one.get(j), false});
- testCases.add(new Object[]{Compare.gt, one.get(i), one.get(j), false});
- testCases.add(new Object[]{Compare.lt, one.get(i), one.get(j), false});
- testCases.add(new Object[]{Compare.gte, one.get(i), one.get(j), true});
- testCases.add(new Object[]{Compare.lte, one.get(i), one.get(j), true});
+ // Compare Numbers of mixed types.
+ final List<Object> one = Arrays.asList(1, 1l, 1d, 1f, BigDecimal.ONE, BigInteger.ONE);
+ for (Object i : one) {
+ for (Object j : one) {
+ testCases.addAll(Arrays.asList(new Object[][]{
+ {Compare.eq, i, j, true},
+ {Compare.neq, i, j, false},
+ {Compare.gt, i, j, false},
+ {Compare.lt, i, j, false},
+ {Compare.gte, i, j, true},
+ {Compare.lte, i, j, true},
+ }));
}
}
+ // Compare large numbers of different types that cannot convert to doubles losslessly.
+ final BigInteger big1 = new BigInteger("123456789012345678901234567890");
+ final BigDecimal big1d = new BigDecimal("123456789012345678901234567890");
+ final BigDecimal big2 = new BigDecimal(big1.add(BigInteger.ONE));
+ testCases.addAll(Arrays.asList(new Object[][]{
+ // big1 == big1d
+ {Compare.eq, big1, big1d, true},
+ {Compare.neq, big1, big1d, false},
+ {Compare.gt, big1, big1d, false},
+ {Compare.lt, big1, big1d, false},
+ {Compare.gte, big1, big1d, true},
+ {Compare.lte, big1, big1d, true},
+ // big1 < big2
+ {Compare.eq, big1, big2, false},
+ {Compare.neq, big1, big2, true},
+ {Compare.gt, big1, big2, false},
+ {Compare.lt, big1, big2, true},
+ {Compare.gte, big1, big2, false},
+ {Compare.lte, big1, big2, true},
+ // Reverse the operands for symmetric test coverage (big2 > big1)
+ {Compare.eq, big2, big1, false},
+ {Compare.neq, big2, big1, true},
+ {Compare.gt, big2, big1, true},
+ {Compare.lt, big2, big1, false},
+ {Compare.gte, big2, big1, true},
+ {Compare.lte, big2, big1, false},
+ }));
return testCases;
}