|
@@ -1,10 +1,8 @@
|
|
|
package io.legado.app
|
|
package io.legado.app
|
|
|
|
|
|
|
|
import com.script.SimpleBindings
|
|
import com.script.SimpleBindings
|
|
|
|
|
+import com.script.rhino.RhinoScriptEngine
|
|
|
import io.legado.app.data.entities.BookChapter
|
|
import io.legado.app.data.entities.BookChapter
|
|
|
-import io.legado.app.rhino.Rhino
|
|
|
|
|
-import io.legado.app.rhino.eval
|
|
|
|
|
-import io.legado.app.rhino.putBinding
|
|
|
|
|
import org.intellij.lang.annotations.Language
|
|
import org.intellij.lang.annotations.Language
|
|
|
import org.junit.Assert
|
|
import org.junit.Assert
|
|
|
import org.junit.Test
|
|
import org.junit.Test
|
|
@@ -30,29 +28,24 @@ class JsTest {
|
|
|
@Test
|
|
@Test
|
|
|
fun testMap() {
|
|
fun testMap() {
|
|
|
val map = hashMapOf("id" to "3242532321")
|
|
val map = hashMapOf("id" to "3242532321")
|
|
|
-
|
|
|
|
|
|
|
+ val bindings = SimpleBindings()
|
|
|
|
|
+ bindings["result"] = map
|
|
|
@Language("js")
|
|
@Language("js")
|
|
|
val jsMap = "$=result;id=$.id;id"
|
|
val jsMap = "$=result;id=$.id;id"
|
|
|
- val result = Rhino.use {
|
|
|
|
|
- val scope = initStandardObjects()
|
|
|
|
|
- scope.putBinding("result", map)
|
|
|
|
|
- evaluateString(scope, jsMap, "xxx", 1, null)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ val result = RhinoScriptEngine.eval(jsMap, bindings)
|
|
|
Assert.assertEquals("3242532321", result)
|
|
Assert.assertEquals("3242532321", result)
|
|
|
@Language("js")
|
|
@Language("js")
|
|
|
val jsMap1 = """result.get("id")"""
|
|
val jsMap1 = """result.get("id")"""
|
|
|
- val result1 = Rhino.use {
|
|
|
|
|
- it.putBinding("result", map)
|
|
|
|
|
- evaluateString(it, jsMap1, "xxx", 1, null)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ val result1 = RhinoScriptEngine.eval(jsMap1, bindings)
|
|
|
Assert.assertEquals("3242532321", result1)
|
|
Assert.assertEquals("3242532321", result1)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
fun testFor() {
|
|
fun testFor() {
|
|
|
- val scope = Rhino.use {
|
|
|
|
|
- evaluateString(it, printJs, "print", 1, null)
|
|
|
|
|
- it
|
|
|
|
|
|
|
+ val scope = RhinoScriptEngine.run {
|
|
|
|
|
+ val scope = getRuntimeScope(getScriptContext(SimpleBindings()))
|
|
|
|
|
+ eval(printJs, scope)
|
|
|
|
|
+ scope
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Language("js")
|
|
@Language("js")
|
|
@@ -74,18 +67,13 @@ class JsTest {
|
|
|
}
|
|
}
|
|
|
result
|
|
result
|
|
|
""".trimIndent()
|
|
""".trimIndent()
|
|
|
- val result = Rhino.use {
|
|
|
|
|
- it.prototype = scope
|
|
|
|
|
- evaluateString(it, jsFor, "jsFor", 1, null)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ val result = RhinoScriptEngine.eval(jsFor, scope)
|
|
|
Assert.assertEquals("12012", result)
|
|
Assert.assertEquals("12012", result)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
fun testReturnNull() {
|
|
fun testReturnNull() {
|
|
|
- val result = Rhino.use {
|
|
|
|
|
- eval(it, "null")
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ val result = RhinoScriptEngine.eval("null")
|
|
|
Assert.assertEquals(null, result)
|
|
Assert.assertEquals(null, result)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -101,9 +89,10 @@ class JsTest {
|
|
|
.replace(/\;/g,";")
|
|
.replace(/\;/g,";")
|
|
|
.replace(/\:/g,":")
|
|
.replace(/\:/g,":")
|
|
|
""".trimIndent()
|
|
""".trimIndent()
|
|
|
- val result = Rhino.use {
|
|
|
|
|
- it.putBinding("result", ",.!?…;:")
|
|
|
|
|
- eval(it, js)
|
|
|
|
|
|
|
+ val result = RhinoScriptEngine.run {
|
|
|
|
|
+ val bindings = SimpleBindings()
|
|
|
|
|
+ bindings["result"] = ",.!?…;:"
|
|
|
|
|
+ eval(js)
|
|
|
}
|
|
}
|
|
|
Assert.assertEquals(result, ",。!?……;:")
|
|
Assert.assertEquals(result, ",。!?……;:")
|
|
|
}
|
|
}
|
|
@@ -116,27 +105,22 @@ class JsTest {
|
|
|
bindings["chapter"] = chapter
|
|
bindings["chapter"] = chapter
|
|
|
@Language("js")
|
|
@Language("js")
|
|
|
val js = "chapter.title"
|
|
val js = "chapter.title"
|
|
|
- val result = Rhino.use {
|
|
|
|
|
- it.putBinding("chapter", chapter)
|
|
|
|
|
- eval(it, js)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ val result = RhinoScriptEngine.eval(js, bindings)
|
|
|
Assert.assertEquals(result, "xxxyyy")
|
|
Assert.assertEquals(result, "xxxyyy")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
@Test
|
|
|
fun javaListForEach() {
|
|
fun javaListForEach() {
|
|
|
val list = arrayListOf(1, 2, 3)
|
|
val list = arrayListOf(1, 2, 3)
|
|
|
-
|
|
|
|
|
|
|
+ val bindings = SimpleBindings()
|
|
|
|
|
+ bindings["list"] = list
|
|
|
@Language("js")
|
|
@Language("js")
|
|
|
val js = """
|
|
val js = """
|
|
|
var result = 0
|
|
var result = 0
|
|
|
list.forEach(item => {result = result + item})
|
|
list.forEach(item => {result = result + item})
|
|
|
result
|
|
result
|
|
|
""".trimIndent()
|
|
""".trimIndent()
|
|
|
- val result = Rhino.use {
|
|
|
|
|
- it.putBinding("list", list)
|
|
|
|
|
- eval(it, js)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ val result = RhinoScriptEngine.eval(js, bindings)
|
|
|
Assert.assertEquals(result, 6.0)
|
|
Assert.assertEquals(result, 6.0)
|
|
|
}
|
|
}
|
|
|
|
|
|