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
 
     /**