You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/02/27 01:28:31 UTC
[1/2] incubator-tinkerpop git commit: Add unit test for
ScriptEngineLambda
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master 4befd1deb -> 0d7802d75
Add unit test for ScriptEngineLambda
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/0ad5e657
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/0ad5e657
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/0ad5e657
Branch: refs/heads/master
Commit: 0ad5e65749d9525562af4c37ffb1130804a6dcfe
Parents: 4befd1d
Author: mfrantz <mf...@redsealnetworks.com>
Authored: Tue Jan 27 18:19:08 2015 -0800
Committer: mfrantz <mf...@redsealnetworks.com>
Committed: Wed Feb 25 22:21:03 2015 -0800
----------------------------------------------------------------------
.../computer/util/ScriptEngineLambdaTest.java | 138 +++++++++++++++++++
1 file changed, 138 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0ad5e657/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java b/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
new file mode 100644
index 0000000..1c32f1e
--- /dev/null
+++ b/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
@@ -0,0 +1,138 @@
+package org.apache.tinkerpop.gremlin.process.computer.util;
+
+import java.util.HashSet;
+import java.util.Set;
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+import javax.script.ScriptEngine;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Matt Frantz (matthew.h.frantz+tinkerpop@gmail.com)
+ */
+public class ScriptEngineLambdaTest {
+
+ private final static String GROOVY_SCRIPT_ENGINE_NAME = "Groovy";
+
+ // Function.apply
+
+ @Test
+ public void simpleFunctionWorks() {
+ final ScriptEngineLambda lambda = newGroovyLambda("a + 2");
+ assertEquals(lambda.apply(5), 7);
+ assertEquals(lambda.apply("foo"), "foo2");
+ }
+
+ // Supplier.get
+
+ @Test
+ public void simpleSupplierWorks() {
+ final ScriptEngineLambda lambda = newGroovyLambda("System.currentTimeMillis()");
+ assertNotEquals(lambda.get(), 0);
+ }
+
+ // Consumer.accept
+
+ @Test
+ public void simpleConsumerWorks() {
+ final Set set = pokeSet();
+ final ScriptEngineLambda lambda = newGroovyLambda("set.add(a)");
+
+ lambda.accept(1);
+ lambda.accept(2);
+ lambda.accept(3);
+
+ assertEquals(set.size(), 3);
+ }
+
+ // BiConsumer.accept
+
+ @Test
+ public void simpleBiConsumerWorks() {
+ final Set set = pokeSet();
+ final ScriptEngineLambda lambda = newGroovyLambda("set.add([a, b])");
+
+ lambda.accept(1, 2);
+ lambda.accept(2, 3);
+ lambda.accept(3, 4);
+
+ assertEquals(set.size(), 3);
+ }
+
+ // TriConsumer.accept
+
+ @Test
+ public void simpleTriConsumerWorks() {
+ final Set set = pokeSet();
+ final ScriptEngineLambda lambda = newGroovyLambda("set.add([a, b, c])");
+
+ lambda.accept(1, 2, 3);
+ lambda.accept(2, 3, 4);
+ lambda.accept(3, 4, 5);
+
+ assertEquals(set.size(), 3);
+ }
+
+ // Predicate.test
+
+ @Test
+ public void trivialGroovyPredicateWorks() {
+ final ScriptEngineLambda lambda = newGroovyLambda("true");
+ assertTrue(lambda.test("foo"));
+ }
+
+ @Test
+ public void oneArgGroovyPredicateWorks() {
+ final ScriptEngineLambda lambda = newGroovyLambda("a < 100");
+ assertTrue(lambda.test(0));
+ assertTrue(lambda.test(99));
+ assertFalse(lambda.test(100));
+ }
+
+ @Test
+ public void trivialGroovyFunctionWorks() {
+ final ScriptEngineLambda lambda = newGroovyLambda("2 + 2");
+ assertEquals(lambda.apply("foo"), 4);
+ }
+
+ @Test
+ public void oneArgGroovyFunctionWorks() {
+ final ScriptEngineLambda lambda = newGroovyLambda("a + 2");
+ assertEquals(lambda.apply(3), 5);
+ assertEquals(lambda.apply(10), 12);
+ assertEquals(lambda.apply("foo"), "foo2");
+ }
+
+ // Utilities
+
+ /**
+ * Bind a set named "set" in the Groovy engine.
+ */
+ private static Set pokeSet() {
+ final ScriptEngine engine = getEngine();
+ final Bindings bindings = engine.createBindings();
+ final Set set = new HashSet();
+ bindings.put("set", set);
+ // Set the global bindings (since ScriptEngineLambda sets the engine bindings on each invocation).
+ engine.setBindings(bindings, ScriptContext.GLOBAL_SCOPE);
+ return set;
+ }
+
+ /**
+ * Return the engine used by ScriptEngineLambda in these tests.
+ */
+ private static ScriptEngine getEngine() {
+ return ScriptEngineCache.get(GROOVY_SCRIPT_ENGINE_NAME);
+ }
+
+ /**
+ * Create a ScriptEngineLambda that will accept Groovy.
+ */
+ private static ScriptEngineLambda newGroovyLambda(String groovy) {
+ return new ScriptEngineLambda(GROOVY_SCRIPT_ENGINE_NAME, groovy);
+ }
+}
[2/2] incubator-tinkerpop git commit: fixed up ScriptEngineLambdaTest
to clear bindings so it doesn't survive across test cases.
Posted by ok...@apache.org.
fixed up ScriptEngineLambdaTest to clear bindings so it doesn't survive across test cases.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/0d7802d7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/0d7802d7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/0d7802d7
Branch: refs/heads/master
Commit: 0d7802d75a7c2c07ae109804916a308cc9528377
Parents: 0ad5e65
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Feb 26 17:28:27 2015 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Feb 26 17:28:27 2015 -0700
----------------------------------------------------------------------
.../computer/util/ScriptEngineLambdaTest.java | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/0d7802d7/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java b/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
index 1c32f1e..87bbb67 100644
--- a/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
+++ b/gremlin-groovy-test/src/test/java/org/apache/tinkerpop/gremlin/process/computer/util/ScriptEngineLambdaTest.java
@@ -1,15 +1,15 @@
package org.apache.tinkerpop.gremlin.process.computer.util;
-import java.util.HashSet;
-import java.util.Set;
+import org.junit.AfterClass;
+import org.junit.Test;
+
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
-import org.junit.Test;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.junit.Assert.*;
/**
* @author Matt Frantz (matthew.h.frantz+tinkerpop@gmail.com)
@@ -107,6 +107,12 @@ public class ScriptEngineLambdaTest {
assertEquals(lambda.apply("foo"), "foo2");
}
+ @AfterClass
+ public static void clearScriptEngineCache() {
+ ScriptEngineCache.get(GROOVY_SCRIPT_ENGINE_NAME).getBindings(ScriptContext.GLOBAL_SCOPE).clear();
+ }
+
+
// Utilities
/**