From 49e0b639f8ef6751c2f05453094191b85e51a62e Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Tue, 8 Jun 2021 18:45:17 +0200 Subject: [PATCH] Add JSR-223 tests with compilable and bindings --- .../script/jsr223/KotlinJsr223ScriptEngineIT.kt | 16 ++++++++++++---- .../jsr223/test/KotlinJsr223ScriptEngineIT.kt | 12 ++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/libraries/examples/kotlin-jsr223-daemon-local-eval-example/src/test/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineIT.kt b/libraries/examples/kotlin-jsr223-daemon-local-eval-example/src/test/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineIT.kt index 9a90bb2dc1d..058c2b388f9 100644 --- a/libraries/examples/kotlin-jsr223-daemon-local-eval-example/src/test/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineIT.kt +++ b/libraries/examples/kotlin-jsr223-daemon-local-eval-example/src/test/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineIT.kt @@ -22,10 +22,7 @@ import org.junit.Assert import org.junit.Test import java.lang.management.ManagementFactory import java.util.concurrent.TimeUnit -import javax.script.Invocable -import javax.script.ScriptEngine -import javax.script.ScriptEngineManager -import javax.script.SimpleBindings +import javax.script.* class KotlinJsr223DaemonCompileScriptEngineIT { @@ -126,6 +123,17 @@ obj Assert.assertEquals(7, res3) } + @Test + fun testSimpleCompilableWithBindings() { + val engine = ScriptEngineManager().getEngineByExtension("kts") + engine.put("z", 33) + val comp = (engine as Compilable).compile("val x = 10 + bindings[\"z\"] as Int\nx + 20") + val res1 = comp.eval() + Assert.assertEquals(63, res1) + engine.put("z", 44) + val res2 = comp.eval() + Assert.assertEquals(74, res2) + } // Note: the test is flaky, because it is statistical and the thresholds are not big enough. // Therefore it was decided to disable it, but leave in the code in order to be able to quickly check overheads when needed. diff --git a/libraries/scripting/jsr223-test/test/kotlin/script/experimental/jsr223/test/KotlinJsr223ScriptEngineIT.kt b/libraries/scripting/jsr223-test/test/kotlin/script/experimental/jsr223/test/KotlinJsr223ScriptEngineIT.kt index 9ed9afbb973..04226333890 100644 --- a/libraries/scripting/jsr223-test/test/kotlin/script/experimental/jsr223/test/KotlinJsr223ScriptEngineIT.kt +++ b/libraries/scripting/jsr223-test/test/kotlin/script/experimental/jsr223/test/KotlinJsr223ScriptEngineIT.kt @@ -176,6 +176,18 @@ obj Assert.assertEquals(5, res2) } + @Test + fun testSimpleCompilableWithBindings() { + val engine = ScriptEngineManager().getEngineByExtension("kts") + engine.put("z", 33) + val comp = (engine as Compilable).compile("val x = 10 + bindings[\"z\"] as Int\nx + 20") + val res1 = comp.eval() + Assert.assertEquals(63, res1) + engine.put("z", 44) + val res2 = comp.eval() + Assert.assertEquals(74, res2) + } + @Test fun testMultipleCompilable() { val engine = ScriptEngineManager().getEngineByExtension("kts") as KotlinJsr223ScriptEngineImpl