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/10/22 20:02:13 UTC
[1/9] incubator-tinkerpop git commit: added mixed type tests (failing
for now)
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master 436dbd99b -> 53dd9aad7
added mixed type tests (failing for now)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/66a765e5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/66a765e5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/66a765e5
Branch: refs/heads/master
Commit: 66a765e593985edc96268115b3d0bc2450c65b90
Parents: 4fa22d8
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Oct 21 02:02:03 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Oct 21 02:02:03 2015 +0200
----------------------------------------------------------------------
.../gremlin/process/traversal/OperatorTest.java | 38 +++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/66a765e5/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
index dbcbd7d..b57f5ce 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
@@ -39,6 +39,12 @@ public class OperatorTest {
{Operator.div, 10l, 2l, 5l},
{Operator.div, 10f, 2f, 5f},
{Operator.div, 10d, 2d, 5d},
+ {Operator.div, 10, 2d, 5d},
+ {Operator.div, 10, 2f, 5f},
+ {Operator.div, 10d, 2, 5d},
+ {Operator.div, 10f, 2d, 5d},
+ {Operator.div, 10f, 2l, 5d},
+ {Operator.div, 10f, 2, 5f},
{Operator.max, 10, 2, 10},
{Operator.max, 10l, 2l, 10l},
{Operator.max, 10f, 2f, 10f},
@@ -47,6 +53,12 @@ public class OperatorTest {
{Operator.max, 2l, 10l, 10l},
{Operator.max, 2f, 10f, 10f},
{Operator.max, 2d, 10d, 10d},
+ {Operator.max, 10, 2d, 10d},
+ {Operator.max, 10, 2f, 10f},
+ {Operator.max, 10d, 2, 10d},
+ {Operator.max, 10f, 2d, 10d},
+ {Operator.max, 10f, 2l, 10d},
+ {Operator.max, 10f, 2, 10f},
{Operator.min, 10, 2, 2},
{Operator.min, 10l, 2l, 2l},
{Operator.min, 10f, 2f, 2f},
@@ -55,18 +67,42 @@ public class OperatorTest {
{Operator.min, 2l, 10l, 2l},
{Operator.min, 2f, 10f, 2f},
{Operator.min, 2d, 10d, 2d},
+ {Operator.min, 10, 2d, 2d},
+ {Operator.min, 10, 2f, 2f},
+ {Operator.min, 10d, 2, 2d},
+ {Operator.min, 10f, 2d, 2d},
+ {Operator.min, 10f, 2l, 2d},
+ {Operator.min, 10f, 2, 2f},
{Operator.minus, 10, 2, 8},
{Operator.minus, 10l, 2l, 8l},
{Operator.minus, 10f, 2f, 8f},
{Operator.minus, 10d, 2d, 8d},
+ {Operator.minus, 10, 2d, 8d},
+ {Operator.minus, 10, 2f, 8f},
+ {Operator.minus, 10d, 2, 8d},
+ {Operator.minus, 10f, 2d, 8d},
+ {Operator.minus, 10f, 2l, 8d},
+ {Operator.minus, 10f, 2, 8f},
{Operator.mult, 5, 4, 20},
{Operator.mult, 5l, 4l, 20l},
{Operator.mult, 5f, 4f, 20f},
{Operator.mult, 5d, 4d, 20d},
+ {Operator.mult, 5, 4d, 20d},
+ {Operator.mult, 5, 4f, 20f},
+ {Operator.mult, 5d, 4, 20d},
+ {Operator.mult, 5f, 4d, 20d},
+ {Operator.mult, 5f, 4l, 20d},
+ {Operator.mult, 5f, 4, 20f},
{Operator.sum, 7, 3, 10},
{Operator.sum, 7l, 3l, 10l},
{Operator.sum, 7f, 3f, 10f},
- {Operator.sum, 7d, 3d, 10d}
+ {Operator.sum, 7d, 3d, 10d},
+ {Operator.sum, 7, 3d, 10d},
+ {Operator.sum, 7, 3f, 10f},
+ {Operator.sum, 7d, 3, 10d},
+ {Operator.sum, 7f, 3d, 10d},
+ {Operator.sum, 7f, 3l, 10d},
+ {Operator.sum, 7f, 3, 10f}
}));
}
[6/9] incubator-tinkerpop git commit: fixed number types in
(Groovy)SackTest
Posted by dk...@apache.org.
fixed number types in (Groovy)SackTest
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/af1f2a82
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/af1f2a82
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/af1f2a82
Branch: refs/heads/master
Commit: af1f2a82d4b6c2f8bff61a98a1efe01b43499697
Parents: 47363c8
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Oct 21 18:12:16 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Oct 21 18:12:16 2015 +0200
----------------------------------------------------------------------
.../step/sideEffect/GroovySackTest.groovy | 4 ++--
.../traversal/step/sideEffect/SackTest.java | 20 +++++++++++---------
2 files changed, 13 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/af1f2a82/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
index 8d7013f..2eab85d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
@@ -40,7 +40,7 @@ public abstract class GroovySackTest {
}
@Override
- public Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack() {
+ public Traversal<Vertex, Double> get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack() {
TraversalScriptHelper.compute("g.withSack(0.0f).V.repeat(__.outE.sack(sum).by('weight').inV).times(2).sack()", g)
}
@@ -50,7 +50,7 @@ public abstract class GroovySackTest {
}
@Override
- public Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
+ public Traversal<Vertex, Double> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
TraversalScriptHelper.compute("g.withSack(0.0f).V.repeat(__.outE.sack(sum, 'weight').inV).times(2).sack", g)
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/af1f2a82/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
index 8e30e5d..c88ea19 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackTest.java
@@ -36,7 +36,9 @@ import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -48,13 +50,13 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum();
- public abstract Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack();
+ public abstract Traversal<Vertex, Double> get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack();
@Deprecated
public abstract Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum();
@Deprecated
- public abstract Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack();
+ public abstract Traversal<Vertex, Double> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack();
public abstract Traversal<Vertex, Map> get_g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack();
@@ -91,18 +93,18 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
public void g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack() {
- final Traversal<Vertex, Float> traversal = get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack();
+ final Traversal<Vertex, Double> traversal = get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack();
printTraversalForm(traversal);
- checkResults(Arrays.asList(2.0f, 1.4f), traversal);
+ checkResults(Arrays.asList(2.0d, 1.4d), traversal);
}
@Test
@LoadGraphWith(MODERN)
@Deprecated
public void g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
- final Traversal<Vertex, Float> traversal = get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack();
+ final Traversal<Vertex, Double> traversal = get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack();
printTraversalForm(traversal);
- checkResults(Arrays.asList(2.0f, 1.4f), traversal);
+ checkResults(Arrays.asList(2.0d, 1.4d), traversal);
}
@Test
@@ -150,7 +152,7 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack() {
+ public Traversal<Vertex, Double> get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack() {
return g.withSack(0.0f).V().repeat(outE().sack(Operator.sum).by("weight").inV()).times(2).sack();
}
@@ -160,7 +162,7 @@ public abstract class SackTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, Float> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
+ public Traversal<Vertex, Double> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
return g.withSack(0.0f).V().repeat(outE().sack(Operator.sum, "weight").inV()).times(2).sack();
}
[8/9] incubator-tinkerpop git commit: updated CHANGELOG and upgrade
docs
Posted by dk...@apache.org.
updated CHANGELOG and upgrade docs
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/cb3c1b7d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/cb3c1b7d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/cb3c1b7d
Branch: refs/heads/master
Commit: cb3c1b7da353eed5151e3ebcfaeeb0c61cdbfbd0
Parents: 6d42525
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Thu Oct 22 15:07:54 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Thu Oct 22 15:07:54 2015 +0200
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
docs/src/upgrade-release-3.1.x-incubating.asciidoc | 5 +++--
2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/cb3c1b7d/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 4d5c8eb..1be7c77 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/incubator-tinkerpop/master/docs/
TinkerPop 3.1.0 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Fixed `Number` handling in `Operator` enums. Prior this change a lot of operations on mixed `Number` types returned a wrong result (wrong data type).
* Fixed a bug in Gremlin Server/Driver serializer where empty buffers were getting returned in certain cases.
* Renamed `ConjunctionX` to `ConnectiveX` because "conjunction" is assumed "and" (disjunction "or"), where "connective" is the parent concept.
* Removed `PathIdentityStep` as it was a hack that is now solved by `Traversal.Admin.addTraverserRequirement()`.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/cb3c1b7d/docs/src/upgrade-release-3.1.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade-release-3.1.x-incubating.asciidoc b/docs/src/upgrade-release-3.1.x-incubating.asciidoc
index c2425a3..efbc15d 100644
--- a/docs/src/upgrade-release-3.1.x-incubating.asciidoc
+++ b/docs/src/upgrade-release-3.1.x-incubating.asciidoc
@@ -35,7 +35,8 @@ Additional upgrade information can be found here:
Important Changes
~~~~~~~~~~~~~~~~~
-* The Gephi Plugin has improved integration with Gephi, where manually inserting {{store}} steps to visualize a running traversal is no longer required.
+* The data type of `Operator` enums will now always be the highest common data type of the two given numbers, rather than the data type of the first number, as it's been before.
+* The Gephi Plugin has improved integration with Gephi, where manually inserting `store` steps to visualize a running traversal is no longer required.
* Entire TinkerGraph instances can be serialized over Gryo.
* Hadoop1 support has been dropped. Hadoop2 is now supported. Giraph 1.1.0 is now supported and Spark of Hadoop2 YARN.
* The implementation and semantics of `GraphTraversal.group()` has changed. The previous model is deprecated and renamed to `groupV3d0()`.
@@ -113,4 +114,4 @@ See link:https://issues.apache.org/jira/browse/TINKERPOP3-805[TINKERPOP3-805] fo
Graph Traversal Updates
+++++++++++++++++++++++
-There were numerous changes to the `GraphTraversal` API. Nearly all changes are backwards compatible with respective "deprecated" annotations. Please review the respective updates specified in the "Graph System Users" section.
\ No newline at end of file
+There were numerous changes to the `GraphTraversal` API. Nearly all changes are backwards compatible with respective "deprecated" annotations. Please review the respective updates specified in the "Graph System Users" section.
[4/9] incubator-tinkerpop git commit: verified,
that Operator/NumberHelper can handle any type that extends the base
class Number
Posted by dk...@apache.org.
verified, that Operator/NumberHelper can handle any type that extends the base class Number
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/78a0e3d5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/78a0e3d5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/78a0e3d5
Branch: refs/heads/master
Commit: 78a0e3d58da45fe5c836845a9e643240f24d369f
Parents: 209ef1a
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Oct 21 03:40:55 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Oct 21 03:40:55 2015 +0200
----------------------------------------------------------------------
.../gremlin/process/traversal/NumberHelper.java | 2 +-
.../traversal/OperatorExceptionTest.java | 39 +++++++++--------
.../gremlin/process/traversal/OperatorTest.java | 44 +++++++++++++++++++-
3 files changed, 63 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/78a0e3d5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
index 3212da9..8dfd113 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
@@ -182,7 +182,7 @@ public class NumberHelper {
} else if (clazz.equals(Double.class)) {
bits = bits < 64 ? 64 : bits;
fp = true;
- } else if (clazz.equals(BigDecimal.class)) {
+ } else /*if (clazz.equals(BigDecimal.class))*/ {
bits = bits < 128 ? 128 : bits;
fp = true;
break; // maxed out, no need to check remaining numbers
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/78a0e3d5/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorExceptionTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorExceptionTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorExceptionTest.java
index 7c8250d..9aa1339 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorExceptionTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorExceptionTest.java
@@ -20,39 +20,38 @@ package org.apache.tinkerpop.gremlin.process.traversal;
import org.junit.Test;
-import java.math.BigInteger;
-
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
public class OperatorExceptionTest {
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowIfValueToDivIsNoExpectedType() {
- Operator.div.apply(new BigInteger("1"), new BigInteger("1"));
+
+ @Test(expected = ClassCastException.class)
+ public void shouldThrowIfValueToDivIsNotNumeric() {
+ Operator.div.apply("1", "1");
}
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowIfValueToMaxIsNoExpectedType() {
- Operator.max.apply(new BigInteger("1"), new BigInteger("1"));
+ @Test(expected = ClassCastException.class)
+ public void shouldThrowIfValueToMaxIsNotNumeric() {
+ Operator.max.apply("1", "1");
}
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowIfValueToMinIsNoExpectedType() {
- Operator.min.apply(new BigInteger("1"), new BigInteger("1"));
+ @Test(expected = ClassCastException.class)
+ public void shouldThrowIfValueToMinIsNotNumeric() {
+ Operator.min.apply("1", "1");
}
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowIfValueToMinusIsNoExpectedType() {
- Operator.minus.apply(new BigInteger("1"), new BigInteger("1"));
+ @Test(expected = ClassCastException.class)
+ public void shouldThrowIfValueToMinusIsNotNumeric() {
+ Operator.minus.apply("1", "1");
}
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowIfValueToMultIsNoExpectedType() {
- Operator.mult.apply(new BigInteger("1"), new BigInteger("1"));
+ @Test(expected = ClassCastException.class)
+ public void shouldThrowIfValueToMultIsNotNumeric() {
+ Operator.mult.apply("1", "1");
}
- @Test(expected = IllegalArgumentException.class)
- public void shouldThrowIfValueToSumIsNoExpectedType() {
- Operator.sum.apply(new BigInteger("1"), new BigInteger("1"));
+ @Test(expected = ClassCastException.class)
+ public void shouldThrowIfValueToSumIsNotNumeric() {
+ Operator.sum.apply("1", "1");
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/78a0e3d5/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
index c325375..38f7742 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
@@ -34,6 +34,42 @@ import static org.junit.Assert.assertEquals;
*/
@RunWith(Parameterized.class)
public class OperatorTest {
+
+ /**
+ * Required to verify that Operator can handle Number type, that it doesn't know explicitly.
+ */
+ static class CustomNumber extends Number {
+
+ public final static CustomNumber ONE = new CustomNumber(1);
+ public final static CustomNumber TEN = new CustomNumber(10);
+
+ private int n;
+
+ private CustomNumber(final int number) {
+ this.n = number;
+ }
+
+ @Override
+ public int intValue() {
+ return n;
+ }
+
+ @Override
+ public long longValue() {
+ return n;
+ }
+
+ @Override
+ public float floatValue() {
+ return n;
+ }
+
+ @Override
+ public double doubleValue() {
+ return n;
+ }
+ }
+
@Parameterized.Parameters(name = "{0}({1},{2}) = {3}")
public static Iterable<Object[]> data() {
return new ArrayList<>(Arrays.asList(new Object[][]{
@@ -50,6 +86,7 @@ public class OperatorTest {
{Operator.div, BigInteger.TEN, 2, BigInteger.valueOf(5l)},
{Operator.div, BigInteger.TEN, 2f, BigDecimal.valueOf(5l)},
{Operator.div, BigDecimal.TEN, 2, BigDecimal.valueOf(5l)},
+ {Operator.div, CustomNumber.TEN, 2, BigDecimal.valueOf(5l)},
{Operator.max, 10, 2, 10},
{Operator.max, 10l, 2l, 10l},
{Operator.max, 10f, 2f, 10f},
@@ -67,6 +104,7 @@ public class OperatorTest {
{Operator.max, BigInteger.TEN, 1, BigInteger.TEN},
{Operator.max, BigInteger.TEN, BigDecimal.ONE, BigDecimal.TEN},
{Operator.max, BigDecimal.TEN, 1, BigDecimal.TEN},
+ {Operator.max, 1, CustomNumber.TEN, BigDecimal.TEN},
{Operator.min, 10, 2, 2},
{Operator.min, 10l, 2l, 2l},
{Operator.min, 10f, 2f, 2f},
@@ -84,6 +122,7 @@ public class OperatorTest {
{Operator.min, BigInteger.TEN, 1, BigInteger.ONE},
{Operator.min, BigInteger.TEN, BigDecimal.ONE, BigDecimal.ONE},
{Operator.min, BigDecimal.TEN, 1, BigDecimal.ONE},
+ {Operator.min, 1, CustomNumber.TEN, BigDecimal.ONE},
{Operator.minus, 10, 2, 8},
{Operator.minus, 10l, 2l, 8l},
{Operator.minus, 10f, 2f, 8f},
@@ -97,6 +136,7 @@ public class OperatorTest {
{Operator.minus, BigInteger.TEN, 2, BigInteger.valueOf(8l)},
{Operator.minus, BigInteger.TEN, 2f, BigDecimal.valueOf(8d)},
{Operator.minus, BigDecimal.TEN, 2, BigDecimal.valueOf(8l)},
+ {Operator.minus, CustomNumber.TEN, 2, BigDecimal.valueOf(8l)},
{Operator.mult, 5, 4, 20},
{Operator.mult, 5l, 4l, 20l},
{Operator.mult, 5f, 4f, 20f},
@@ -110,6 +150,7 @@ public class OperatorTest {
{Operator.mult, BigInteger.valueOf(5l), 4, BigInteger.valueOf(20l)},
{Operator.mult, BigInteger.valueOf(5l), 4f, BigDecimal.valueOf(20d)},
{Operator.mult, BigDecimal.valueOf(5d), 4, BigDecimal.valueOf(20d)},
+ {Operator.mult, CustomNumber.TEN, 2f, BigDecimal.valueOf(20d)},
{Operator.sum, 7, 3, 10},
{Operator.sum, 7l, 3l, 10l},
{Operator.sum, 7f, 3f, 10f},
@@ -122,7 +163,8 @@ public class OperatorTest {
{Operator.sum, 7f, 3, 10f},
{Operator.sum, BigInteger.valueOf(7l), 3, BigInteger.TEN},
{Operator.sum, BigInteger.valueOf(7l), 3f, BigDecimal.valueOf(10d)},
- {Operator.sum, BigDecimal.valueOf(7d), 3, BigDecimal.valueOf(10d)}
+ {Operator.sum, BigDecimal.valueOf(7d), 3, BigDecimal.valueOf(10d)},
+ {Operator.sum, CustomNumber.TEN, CustomNumber.ONE, BigDecimal.valueOf(11l)}
}));
}
[5/9] incubator-tinkerpop git commit: Merge branch 'master' into
TINKERPOP3-861
Posted by dk...@apache.org.
Merge branch 'master' into TINKERPOP3-861
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/47363c88
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/47363c88
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/47363c88
Branch: refs/heads/master
Commit: 47363c88716a40ddc50ccd9df520514c8d2903ca
Parents: 78a0e3d 17d4489
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Oct 21 13:27:16 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Oct 21 13:27:16 2015 +0200
----------------------------------------------------------------------
.../jsr223/GremlinGroovyScriptEngineTimedInterruptTest.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
[2/9] incubator-tinkerpop git commit: implemented NumberHelper and
fixed Number handling in Operator (also added a few more tests for BigInteger
ad BigDecimal)
Posted by dk...@apache.org.
implemented NumberHelper and fixed Number handling in Operator (also added a few more tests for BigInteger ad BigDecimal)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/e25af299
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/e25af299
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/e25af299
Branch: refs/heads/master
Commit: e25af2990b387cf191c1fa3f9cb12a2f4318d5a7
Parents: 66a765e
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Oct 21 02:55:13 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Oct 21 02:55:13 2015 +0200
----------------------------------------------------------------------
.../gremlin/process/traversal/NumberHelper.java | 280 +++++++++++++++++++
.../gremlin/process/traversal/Operator.java | 78 +-----
.../gremlin/process/traversal/OperatorTest.java | 22 +-
3 files changed, 307 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e25af299/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
new file mode 100644
index 0000000..3212da9
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/NumberHelper.java
@@ -0,0 +1,280 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.function.BiFunction;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public class NumberHelper {
+
+ static final NumberHelper BYTE_NUMBER_HELPER = new NumberHelper(
+ (a, b) -> a.byteValue() + b.byteValue(),
+ (a, b) -> a.byteValue() - b.byteValue(),
+ (a, b) -> a.byteValue() * b.byteValue(),
+ (a, b) -> a.byteValue() / b.byteValue(),
+ (a, b) -> {
+ final byte x = a.byteValue(), y = b.byteValue();
+ return x <= y ? x : y;
+ },
+ (a, b) -> {
+ final byte x = a.byteValue(), y = b.byteValue();
+ return x >= y ? x : y;
+ });
+
+ static final NumberHelper SHORT_NUMBER_HELPER = new NumberHelper(
+ (a, b) -> a.shortValue() + b.shortValue(),
+ (a, b) -> a.shortValue() - b.shortValue(),
+ (a, b) -> a.shortValue() * b.shortValue(),
+ (a, b) -> a.shortValue() / b.shortValue(),
+ (a, b) -> {
+ final short x = a.shortValue(), y = b.shortValue();
+ return x <= y ? x : y;
+ },
+ (a, b) -> {
+ final short x = a.shortValue(), y = b.shortValue();
+ return x >= y ? x : y;
+ });
+
+ static final NumberHelper INTEGER_NUMBER_HELPER = new NumberHelper(
+ (a, b) -> a.intValue() + b.intValue(),
+ (a, b) -> a.intValue() - b.intValue(),
+ (a, b) -> a.intValue() * b.intValue(),
+ (a, b) -> a.intValue() / b.intValue(),
+ (a, b) -> {
+ final int x = a.intValue(), y = b.intValue();
+ return x <= y ? x : y;
+ },
+ (a, b) -> {
+ final int x = a.intValue(), y = b.intValue();
+ return x >= y ? x : y;
+ });
+
+ static final NumberHelper LONG_NUMBER_HELPER = new NumberHelper(
+ (a, b) -> a.longValue() + b.longValue(),
+ (a, b) -> a.longValue() - b.longValue(),
+ (a, b) -> a.longValue() * b.longValue(),
+ (a, b) -> a.longValue() / b.longValue(),
+ (a, b) -> {
+ final long x = a.longValue(), y = b.longValue();
+ return x <= y ? x : y;
+ },
+ (a, b) -> {
+ final long x = a.longValue(), y = b.longValue();
+ return x >= y ? x : y;
+ });
+
+ static final NumberHelper BIG_INTEGER_NUMBER_HELPER = new NumberHelper(
+ (a, b) -> bigIntegerValue(a).add(bigIntegerValue(b)),
+ (a, b) -> bigIntegerValue(a).subtract(bigIntegerValue(b)),
+ (a, b) -> bigIntegerValue(a).multiply(bigIntegerValue(b)),
+ (a, b) -> bigIntegerValue(a).divide(bigIntegerValue(b)),
+ (a, b) -> {
+ final BigInteger x = bigIntegerValue(a), y = bigIntegerValue(b);
+ return x.compareTo(y) <= 0 ? x : y;
+ },
+ (a, b) -> {
+ final BigInteger x = bigIntegerValue(a), y = bigIntegerValue(b);
+ return x.compareTo(y) >= 0 ? x : y;
+ });
+
+ static final NumberHelper FLOAT_NUMBER_HELPER = new NumberHelper(
+ (a, b) -> a.floatValue() + b.floatValue(),
+ (a, b) -> a.floatValue() - b.floatValue(),
+ (a, b) -> a.floatValue() * b.floatValue(),
+ (a, b) -> a.floatValue() / b.floatValue(),
+ (a, b) -> {
+ final float x = a.floatValue(), y = b.floatValue();
+ return x <= y ? x : y;
+ },
+ (a, b) -> {
+ final float x = a.floatValue(), y = b.floatValue();
+ return x >= y ? x : y;
+ });
+
+ static final NumberHelper DOUBLE_NUMBER_HELPER = new NumberHelper(
+ (a, b) -> a.doubleValue() + b.doubleValue(),
+ (a, b) -> a.doubleValue() - b.doubleValue(),
+ (a, b) -> a.doubleValue() * b.doubleValue(),
+ (a, b) -> a.doubleValue() / b.doubleValue(),
+ (a, b) -> {
+ final double x = a.doubleValue(), y = b.doubleValue();
+ return x <= y ? x : y;
+ },
+ (a, b) -> {
+ final double x = a.doubleValue(), y = b.doubleValue();
+ return x >= y ? x : y;
+ });
+
+ static final NumberHelper BIG_DECIMAL_NUMBER_HELPER = new NumberHelper(
+ (a, b) -> bigDecimalValue(a).add(bigDecimalValue(b)),
+ (a, b) -> bigDecimalValue(a).subtract(bigDecimalValue(b)),
+ (a, b) -> bigDecimalValue(a).multiply(bigDecimalValue(b)),
+ (a, b) -> bigDecimalValue(a).divide(bigDecimalValue(b)),
+ (a, b) -> {
+ final BigDecimal x = bigDecimalValue(a), y = bigDecimalValue(b);
+ return x.compareTo(y) <= 0 ? x : y;
+ },
+ (a, b) -> {
+ final BigDecimal x = bigDecimalValue(a), y = bigDecimalValue(b);
+ return x.compareTo(y) >= 0 ? x : y;
+ });
+
+ public final BiFunction<Number, Number, Number> add;
+ public final BiFunction<Number, Number, Number> sub;
+ public final BiFunction<Number, Number, Number> mul;
+ public final BiFunction<Number, Number, Number> div;
+ public final BiFunction<Number, Number, Number> min;
+ public final BiFunction<Number, Number, Number> max;
+
+ private NumberHelper(final BiFunction<Number, Number, Number> add,
+ final BiFunction<Number, Number, Number> sub,
+ final BiFunction<Number, Number, Number> mul,
+ final BiFunction<Number, Number, Number> div,
+ final BiFunction<Number, Number, Number> min,
+ final BiFunction<Number, Number, Number> max
+ ) {
+ this.add = add;
+ this.sub = sub;
+ this.mul = mul;
+ this.div = div;
+ this.min = min;
+ this.max = max;
+ }
+
+ public static Class<? extends Number> getHighestCommonNumberClass(final Number... numbers) {
+ int bits = 8;
+ boolean fp = false;
+ for (final Number number : numbers) {
+ if (number == null) continue;
+ final Class<? extends Number> clazz = number.getClass();
+ if (clazz.equals(Byte.class)) continue;
+ if (clazz.equals(Short.class)) {
+ bits = bits < 16 ? 16 : bits;
+ } else if (clazz.equals(Integer.class)) {
+ bits = bits < 32 ? 32 : bits;
+ } else if (clazz.equals(Long.class)) {
+ bits = bits < 64 ? 64 : bits;
+ } else if (clazz.equals(BigInteger.class)) {
+ bits = bits < 128 ? 128 : bits;
+ } else if (clazz.equals(Float.class)) {
+ bits = bits < 32 ? 32 : bits;
+ fp = true;
+ } else if (clazz.equals(Double.class)) {
+ bits = bits < 64 ? 64 : bits;
+ fp = true;
+ } else if (clazz.equals(BigDecimal.class)) {
+ bits = bits < 128 ? 128 : bits;
+ fp = true;
+ break; // maxed out, no need to check remaining numbers
+ }
+ }
+ return determineNumberClass(bits, fp);
+ }
+
+ public static Number add(final Number a, final Number b) {
+ final Class<? extends Number> clazz = getHighestCommonNumberClass(a, b);
+ return getHelper(clazz).add.apply(a, b);
+ }
+
+ public static Number sub(final Number a, final Number b) {
+ final Class<? extends Number> clazz = getHighestCommonNumberClass(a, b);
+ return getHelper(clazz).sub.apply(a, b);
+ }
+
+ public static Number mul(final Number a, final Number b) {
+ final Class<? extends Number> clazz = getHighestCommonNumberClass(a, b);
+ return getHelper(clazz).mul.apply(a, b);
+ }
+
+ public static Number div(final Number a, final Number b) {
+ final Class<? extends Number> clazz = getHighestCommonNumberClass(a, b);
+ return getHelper(clazz).div.apply(a, b);
+ }
+
+ public static Number min(final Number a, final Number b) {
+ final Class<? extends Number> clazz = getHighestCommonNumberClass(a, b);
+ return getHelper(clazz).min.apply(a, b);
+ }
+
+ public static Number max(final Number a, final Number b) {
+ final Class<? extends Number> clazz = getHighestCommonNumberClass(a, b);
+ return getHelper(clazz).max.apply(a, b);
+ }
+
+ private static NumberHelper getHelper(final Class<? extends Number> clazz) {
+ if (clazz.equals(Byte.class)) {
+ return BYTE_NUMBER_HELPER;
+ }
+ if (clazz.equals(Short.class)) {
+ return SHORT_NUMBER_HELPER;
+ }
+ if (clazz.equals(Integer.class)) {
+ return INTEGER_NUMBER_HELPER;
+ }
+ if (clazz.equals(Long.class)) {
+ return LONG_NUMBER_HELPER;
+ }
+ if (clazz.equals(BigInteger.class)) {
+ return BIG_INTEGER_NUMBER_HELPER;
+ }
+ if (clazz.equals(Float.class)) {
+ return FLOAT_NUMBER_HELPER;
+ }
+ if (clazz.equals(Double.class)) {
+ return DOUBLE_NUMBER_HELPER;
+ }
+ if (clazz.equals(BigDecimal.class)) {
+ return BIG_DECIMAL_NUMBER_HELPER;
+ }
+ throw new IllegalArgumentException("Unsupported numeric type: " + clazz);
+ }
+
+ private static BigInteger bigIntegerValue(final Number number) {
+ if (number == null) return null;
+ if (number instanceof BigInteger) return (BigInteger) number;
+ return BigInteger.valueOf(number.longValue());
+ }
+
+ private static BigDecimal bigDecimalValue(final Number number) {
+ if (number == null) return null;
+ if (number instanceof BigDecimal) return (BigDecimal) number;
+ if (number instanceof BigInteger) return new BigDecimal((BigInteger) number);
+ return (number instanceof Double || number instanceof Float)
+ ? BigDecimal.valueOf(number.doubleValue())
+ : BigDecimal.valueOf(number.longValue());
+ }
+
+ private static Class<? extends Number> determineNumberClass(final int bits, final boolean floatingPoint) {
+ if (floatingPoint) {
+ if (bits <= 32) return Float.class;
+ if (bits <= 64) return Double.class;
+ return BigDecimal.class;
+ } else {
+ if (bits <= 8) return Byte.class;
+ if (bits <= 16) return Short.class;
+ if (bits <= 32) return Integer.class;
+ if (bits <= 64) return Long.class;
+ return BigInteger.class;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e25af299/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
index 56a6bd0..31c148c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
@@ -28,98 +28,32 @@ public enum Operator implements BinaryOperator<Object> {
sum {
public Object apply(final Object a, Object b) {
- final Class numberClass = a.getClass();
- if (numberClass.equals(Integer.class)) {
- return ((Number)a).intValue() + ((Number)b).intValue();
- } else if (numberClass.equals(Long.class)) {
- return ((Number)a).longValue() + ((Number)b).longValue();
- } else if (numberClass.equals(Float.class)) {
- return ((Number)a).floatValue() + ((Number)b).floatValue();
- } else if (numberClass.equals(Double.class)) {
- return ((Number)a).doubleValue() + ((Number)b).doubleValue();
- } else {
- throw new IllegalArgumentException("This operator only supports int, long, float, or double: " + numberClass);
- }
+ return NumberHelper.add((Number) a, (Number) b);
}
},
minus {
public Object apply(final Object a, final Object b) {
- final Class numberClass = a.getClass();
- if (numberClass.equals(Integer.class)) {
- return ((Number)a).intValue() - ((Number)b).intValue();
- } else if (numberClass.equals(Long.class)) {
- return ((Number)a).longValue() - ((Number)b).longValue();
- } else if (numberClass.equals(Float.class)) {
- return ((Number)a).floatValue() - ((Number)b).floatValue();
- } else if (numberClass.equals(Double.class)) {
- return ((Number)a).doubleValue() - ((Number)b).doubleValue();
- } else {
- throw new IllegalArgumentException("This operator only supports int, long, float, or double: " + numberClass);
- }
+ return NumberHelper.sub((Number) a, (Number) b);
}
},
mult {
public Object apply(final Object a, final Object b) {
- final Class numberClass = a.getClass();
- if (numberClass.equals(Integer.class)) {
- return ((Number)a).intValue() * ((Number)b).intValue();
- } else if (numberClass.equals(Long.class)) {
- return ((Number)a).longValue() * ((Number)b).longValue();
- } else if (numberClass.equals(Float.class)) {
- return ((Number)a).floatValue() * ((Number)b).floatValue();
- } else if (numberClass.equals(Double.class)) {
- return ((Number)a).doubleValue() * ((Number)b).doubleValue();
- } else {
- throw new IllegalArgumentException("This operator only supports int, long, float, or double: " + numberClass);
- }
+ return NumberHelper.mul((Number) a, (Number) b);
}
},
div {
public Object apply(final Object a, final Object b) {
- final Class numberClass = a.getClass();
- if (numberClass.equals(Integer.class)) {
- return ((Number)a).intValue() / ((Number)b).intValue();
- } else if (numberClass.equals(Long.class)) {
- return ((Number)a).longValue() / ((Number)b).longValue();
- } else if (numberClass.equals(Float.class)) {
- return ((Number)a).floatValue() / ((Number)b).floatValue();
- } else if (numberClass.equals(Double.class)) {
- return ((Number)a).doubleValue() / ((Number)b).doubleValue();
- } else {
- throw new IllegalArgumentException("This operator only supports int, long, float, or double: " + numberClass);
- }
+ return NumberHelper.div((Number) a, (Number) b);
}
},
min {
public Object apply(final Object a, final Object b) {
- final Class numberClass = a.getClass();
- if (numberClass.equals(Integer.class)) {
- return Math.min(((Number)a).intValue(), ((Number)b).intValue());
- } else if (numberClass.equals(Long.class)) {
- return Math.min(((Number)a).longValue(), ((Number)b).longValue());
- } else if (numberClass.equals(Float.class)) {
- return Math.min(((Number)a).floatValue(), ((Number)b).floatValue());
- } else if (numberClass.equals(Double.class)) {
- return Math.min(((Number)a).doubleValue(), ((Number)b).doubleValue());
- } else {
- throw new IllegalArgumentException("This operator only supports int, long, float, or double: " + numberClass);
- }
+ return NumberHelper.min((Number) a, (Number) b);
}
},
max {
public Object apply(final Object a, final Object b) {
- final Class numberClass = a.getClass();
- if (numberClass.equals(Integer.class)) {
- return Math.max(((Number)a).intValue(), ((Number)b).intValue());
- } else if (numberClass.equals(Long.class)) {
- return Math.max(((Number)a).longValue(), ((Number)b).longValue());
- } else if (numberClass.equals(Float.class)) {
- return Math.max(((Number)a).floatValue(), ((Number)b).floatValue());
- } else if (numberClass.equals(Double.class)) {
- return Math.max(((Number)a).doubleValue(), ((Number)b).doubleValue());
- } else {
- throw new IllegalArgumentException("This operator only supports int, long, float, or double: " + numberClass);
- }
+ return NumberHelper.max((Number) a, (Number) b);
}
},
assign {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/e25af299/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
index b57f5ce..c325375 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OperatorTest.java
@@ -22,6 +22,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
@@ -45,6 +47,9 @@ public class OperatorTest {
{Operator.div, 10f, 2d, 5d},
{Operator.div, 10f, 2l, 5d},
{Operator.div, 10f, 2, 5f},
+ {Operator.div, BigInteger.TEN, 2, BigInteger.valueOf(5l)},
+ {Operator.div, BigInteger.TEN, 2f, BigDecimal.valueOf(5l)},
+ {Operator.div, BigDecimal.TEN, 2, BigDecimal.valueOf(5l)},
{Operator.max, 10, 2, 10},
{Operator.max, 10l, 2l, 10l},
{Operator.max, 10f, 2f, 10f},
@@ -59,6 +64,9 @@ public class OperatorTest {
{Operator.max, 10f, 2d, 10d},
{Operator.max, 10f, 2l, 10d},
{Operator.max, 10f, 2, 10f},
+ {Operator.max, BigInteger.TEN, 1, BigInteger.TEN},
+ {Operator.max, BigInteger.TEN, BigDecimal.ONE, BigDecimal.TEN},
+ {Operator.max, BigDecimal.TEN, 1, BigDecimal.TEN},
{Operator.min, 10, 2, 2},
{Operator.min, 10l, 2l, 2l},
{Operator.min, 10f, 2f, 2f},
@@ -73,6 +81,9 @@ public class OperatorTest {
{Operator.min, 10f, 2d, 2d},
{Operator.min, 10f, 2l, 2d},
{Operator.min, 10f, 2, 2f},
+ {Operator.min, BigInteger.TEN, 1, BigInteger.ONE},
+ {Operator.min, BigInteger.TEN, BigDecimal.ONE, BigDecimal.ONE},
+ {Operator.min, BigDecimal.TEN, 1, BigDecimal.ONE},
{Operator.minus, 10, 2, 8},
{Operator.minus, 10l, 2l, 8l},
{Operator.minus, 10f, 2f, 8f},
@@ -83,6 +94,9 @@ public class OperatorTest {
{Operator.minus, 10f, 2d, 8d},
{Operator.minus, 10f, 2l, 8d},
{Operator.minus, 10f, 2, 8f},
+ {Operator.minus, BigInteger.TEN, 2, BigInteger.valueOf(8l)},
+ {Operator.minus, BigInteger.TEN, 2f, BigDecimal.valueOf(8d)},
+ {Operator.minus, BigDecimal.TEN, 2, BigDecimal.valueOf(8l)},
{Operator.mult, 5, 4, 20},
{Operator.mult, 5l, 4l, 20l},
{Operator.mult, 5f, 4f, 20f},
@@ -93,6 +107,9 @@ public class OperatorTest {
{Operator.mult, 5f, 4d, 20d},
{Operator.mult, 5f, 4l, 20d},
{Operator.mult, 5f, 4, 20f},
+ {Operator.mult, BigInteger.valueOf(5l), 4, BigInteger.valueOf(20l)},
+ {Operator.mult, BigInteger.valueOf(5l), 4f, BigDecimal.valueOf(20d)},
+ {Operator.mult, BigDecimal.valueOf(5d), 4, BigDecimal.valueOf(20d)},
{Operator.sum, 7, 3, 10},
{Operator.sum, 7l, 3l, 10l},
{Operator.sum, 7f, 3f, 10f},
@@ -102,7 +119,10 @@ public class OperatorTest {
{Operator.sum, 7d, 3, 10d},
{Operator.sum, 7f, 3d, 10d},
{Operator.sum, 7f, 3l, 10d},
- {Operator.sum, 7f, 3, 10f}
+ {Operator.sum, 7f, 3, 10f},
+ {Operator.sum, BigInteger.valueOf(7l), 3, BigInteger.TEN},
+ {Operator.sum, BigInteger.valueOf(7l), 3f, BigDecimal.valueOf(10d)},
+ {Operator.sum, BigDecimal.valueOf(7d), 3, BigDecimal.valueOf(10d)}
}));
}
[3/9] incubator-tinkerpop git commit: Merge branch 'master' into
TINKERPOP3-861
Posted by dk...@apache.org.
Merge branch 'master' into TINKERPOP3-861
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/209ef1a4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/209ef1a4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/209ef1a4
Branch: refs/heads/master
Commit: 209ef1a4cb6757d85fa44253ae83dbfd6e2098f4
Parents: e25af29 e8936f5
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Wed Oct 21 02:56:15 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Wed Oct 21 02:56:15 2015 +0200
----------------------------------------------------------------------
CHANGELOG.asciidoc | 5 +
docs/src/the-traversal.asciidoc | 4 +-
.../upgrade-release-3.1.x-incubating.asciidoc | 41 +++++
.../gremlin/process/traversal/Traversal.java | 10 +
.../process/traversal/TraversalStrategies.java | 4 +-
.../traversal/dsl/graph/GraphTraversal.java | 4 +-
.../dsl/graph/GraphTraversalSource.java | 49 ++---
.../lambda/AbstractLambdaTraversal.java | 7 +
.../process/traversal/step/filter/AndStep.java | 2 +-
.../traversal/step/filter/ConjunctionStep.java | 81 --------
.../traversal/step/filter/ConnectiveStep.java | 81 ++++++++
.../process/traversal/step/filter/OrStep.java | 2 +-
.../step/filter/WherePredicateStep.java | 10 +-
.../step/filter/WhereTraversalStep.java | 6 +-
.../process/traversal/step/map/MatchStep.java | 40 ++--
.../traversal/step/util/PathIdentityStep.java | 48 -----
.../decoration/ConjunctionStrategy.java | 114 ------------
.../strategy/decoration/ConnectiveStrategy.java | 114 ++++++++++++
.../AdjacentToIncidentStrategy.java | 4 +-
.../optimization/RangeByIsCountStrategy.java | 6 +-
.../B_LP_O_P_S_SE_SL_TraverserGenerator.java | 8 +-
.../B_LP_O_S_SE_SL_TraverserGenerator.java | 8 +-
.../B_O_S_SE_SL_TraverserGenerator.java | 8 +-
.../traverser/B_O_TraverserGenerator.java | 6 +-
.../traverser/LP_O_OB_P_S_SE_SL_Traverser.java | 98 ++++++++++
.../LP_O_OB_P_S_SE_SL_TraverserGenerator.java | 62 +++++++
.../traverser/LP_O_OB_S_SE_SL_Traverser.java | 99 ++++++++++
.../LP_O_OB_S_SE_SL_TraverserGenerator.java | 61 +++++++
.../traverser/O_OB_S_SE_SL_Traverser.java | 137 ++++++++++++++
.../O_OB_S_SE_SL_TraverserGenerator.java | 59 ++++++
.../traverser/O_TraverserGenerator.java | 2 +-
.../traverser/TraverserRequirement.java | 8 +-
.../util/DefaultTraverserGeneratorFactory.java | 34 +++-
.../gremlin/process/traversal/util/AndP.java | 3 +-
.../process/traversal/util/ConjunctionP.java | 117 ------------
.../process/traversal/util/ConnectiveP.java | 115 ++++++++++++
.../traversal/util/DefaultTraversal.java | 27 +++
.../process/traversal/util/EmptyTraversal.java | 5 +
.../gremlin/process/traversal/util/OrP.java | 2 +-
.../process/traversal/util/TraversalHelper.java | 4 +-
.../gremlin/structure/io/gryo/GryoMapper.java | 10 +-
.../traversal/step/map/MatchStepTest.java | 6 +-
.../decoration/ConjunctionStrategyTest.java | 183 -------------------
.../decoration/ConnectiveStrategyTest.java | 183 +++++++++++++++++++
.../DefaultTraverserGeneratorFactoryTest.java | 85 +++++++++
.../step/sideEffect/GroovySackTest.groovy | 5 +
.../traversal/step/sideEffect/SackTest.java | 25 ++-
.../TinkerGraphNoStrategyComputerProvider.java | 4 +-
.../process/TinkerGraphNoStrategyProvider.java | 4 +-
49 files changed, 1345 insertions(+), 655 deletions(-)
----------------------------------------------------------------------
[9/9] incubator-tinkerpop git commit: Merge branch 'TINKERPOP3-861'
Posted by dk...@apache.org.
Merge branch 'TINKERPOP3-861'
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/53dd9aad
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/53dd9aad
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/53dd9aad
Branch: refs/heads/master
Commit: 53dd9aad7d3d5ed1138acb891ffe03edd259a9b9
Parents: 436dbd9 cb3c1b7
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Thu Oct 22 20:01:28 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Thu Oct 22 20:01:28 2015 +0200
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../upgrade-release-3.1.x-incubating.asciidoc | 5 +-
.../gremlin/process/traversal/NumberHelper.java | 280 +++++++++++++++++++
.../gremlin/process/traversal/Operator.java | 78 +-----
.../traversal/OperatorExceptionTest.java | 39 ++-
.../gremlin/process/traversal/OperatorTest.java | 100 ++++++-
.../step/sideEffect/GroovySackTest.groovy | 4 +-
.../traversal/step/sideEffect/SackTest.java | 20 +-
8 files changed, 421 insertions(+), 106 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/53dd9aad/CHANGELOG.asciidoc
----------------------------------------------------------------------
[7/9] incubator-tinkerpop git commit: Merge branch 'master' into
TINKERPOP3-861
Posted by dk...@apache.org.
Merge branch 'master' into TINKERPOP3-861
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/6d425254
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/6d425254
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/6d425254
Branch: refs/heads/master
Commit: 6d42525438a2c1117804f413e0c85210f038c38c
Parents: af1f2a8 db92afc
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Thu Oct 22 14:50:57 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Thu Oct 22 14:50:57 2015 +0200
----------------------------------------------------------------------
CHANGELOG.asciidoc | 29 ++++++++++-
.../upgrade-release-3.0.x-incubating.asciidoc | 4 +-
.../driver/ser/GryoMessageSerializerV1d0.java | 13 +++--
.../ser/GryoMessageSerializerV1d0Test.java | 55 ++++++++++++++++++++
...linGroovyScriptEngineTimedInterruptTest.java | 12 ++---
5 files changed, 96 insertions(+), 17 deletions(-)
----------------------------------------------------------------------