diff --git a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/RuleToolUtils.kt b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/RuleToolUtils.kt
index 074c2ec07..18e5605d2 100644
--- a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/RuleToolUtils.kt
+++ b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/RuleToolUtils.kt
@@ -21,7 +21,6 @@ import kotlin.reflect.*
import kotlin.reflect.full.allSuperclasses
import kotlin.reflect.full.findAnnotation
import kotlin.reflect.full.functions
-import kotlin.text.appendLine
/**
*
Util operations for rule.
@@ -29,7 +28,7 @@ import kotlin.text.appendLine
* @see StandardJdkRuleParser
*/
@ScriptTypeName("tool")
-class RuleToolUtils {
+object RuleToolUtils {
//region any
@@ -46,12 +45,15 @@ class RuleToolUtils {
null -> {
null
}
+
is Array<*> -> {
any
}
+
is Collection<*> -> {
any.toTypedArray()
}
+
else -> {
arrayOf(any)
}
@@ -63,15 +65,19 @@ class RuleToolUtils {
null -> {
null
}
+
is Array<*> -> {
any.toMutableList()
}
+
is List<*> -> {
any
}
+
is Collection<*> -> {
any.toMutableList()
}
+
else -> {
listOf(any)
}
@@ -1032,43 +1038,37 @@ class RuleToolUtils {
ToolUtils.copy2Clipboard(str)
}
- companion object {
-
- val INSTANCE = RuleToolUtils()
-
- private val excludedMethods = Arrays.asList(
- "hashCode",
- "toString",
- "equals",
- "getClass",
- "clone",
- "notify",
- "notifyAll",
- "wait",
- "finalize"
- )
-
- private val TO_LINE_PATTERN = Pattern.compile("[A-Z]+")
-
- private val typeMapper = KV.create()
- .set("java.lang.String", "string")
- .set("java.lang.Long", "long")
- .set("java.lang.Double", "double")
- .set("java.lang.Short", "short")
- .set("java.lang.Integer", "int")
- .set("java.lang.Object", "object")
- .set("kotlin.String", "string")
- .set("kotlin.Array", "array")
- .set("kotlin.Int", "int")
- .set("kotlin.Unit", "void")
- .set("kotlin.collections.List", "array")
- .set("kotlin.Any", "object")
- .set("kotlin.Boolean", "bool")
- .set("kotlin.collections.Map", "map")
- .set("kotlin.collections.Set", "array")
- .set("kotlin.CharArray", "array")
- .set("kotlin.Function0", "func")
- .set("kotlin.Function1", "func")
-
- }
+ private val excludedMethods = listOf(
+ "hashCode",
+ "toString",
+ "equals",
+ "getClass",
+ "clone",
+ "notify",
+ "notifyAll",
+ "wait",
+ "finalize"
+ )
+
+ private val TO_LINE_PATTERN = Pattern.compile("[A-Z]+")
+
+ private val typeMapper = KV.create()
+ .set("java.lang.String", "string")
+ .set("java.lang.Long", "long")
+ .set("java.lang.Double", "double")
+ .set("java.lang.Short", "short")
+ .set("java.lang.Integer", "int")
+ .set("java.lang.Object", "object")
+ .set("kotlin.String", "string")
+ .set("kotlin.Array", "array")
+ .set("kotlin.Int", "int")
+ .set("kotlin.Unit", "void")
+ .set("kotlin.collections.List", "array")
+ .set("kotlin.Any", "object")
+ .set("kotlin.Boolean", "bool")
+ .set("kotlin.collections.Map", "map")
+ .set("kotlin.collections.Set", "array")
+ .set("kotlin.CharArray", "array")
+ .set("kotlin.Function0", "func")
+ .set("kotlin.Function1", "func")
}
\ No newline at end of file
diff --git a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/StandardJdkRuleParser.kt b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/StandardJdkRuleParser.kt
index a86385ee9..9b70c9b5d 100644
--- a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/StandardJdkRuleParser.kt
+++ b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/rule/StandardJdkRuleParser.kt
@@ -25,17 +25,18 @@ import com.itangcent.suv.http.HttpClientProvider
import com.itangcent.utils.TemplateKit
import java.nio.charset.Charset
import javax.script.*
+import kotlin.collections.set
abstract class StandardJdkRuleParser : ScriptRuleParser() {
@Inject
- private var httpClientProvider: HttpClientProvider? = null
+ private lateinit var httpClientProvider: HttpClientProvider
@Inject
- protected val localStorage: LocalStorage? = null
+ protected lateinit var localStorage: LocalStorage
@Inject
- protected val sessionStorage: SessionStorage? = null
+ protected lateinit var sessionStorage: SessionStorage
private var scriptEngine: ScriptEngine? = null
@@ -56,12 +57,12 @@ abstract class StandardJdkRuleParser : ScriptRuleParser() {
synchronized(this) {
if (scriptEngine != null) return scriptEngine!!
scriptEngine = buildScriptEngine()
+ initScripEngine(scriptEngine!!)
}
if (scriptEngine == null) {
unsupported = true
throw UnsupportedScriptException(scriptType())
}
- initScripEngine(scriptEngine!!)
return scriptEngine!!
}
@@ -72,14 +73,14 @@ abstract class StandardJdkRuleParser : ScriptRuleParser() {
override fun initScriptContext(scriptContext: ScriptContext, context: RuleContext) {
val engineBindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE)
engineBindings.putAll(toolBindings)
- engineBindings["logger"] = logger
+ engineBindings.set("logger", "LOG", logger!!)
engineBindings["localStorage"] = localStorage
- engineBindings["session"] = sessionStorage
- engineBindings["helper"] = Helper(context.getPsiContext())
- engineBindings["httpClient"] = httpClientProvider!!.getHttpClient()
- engineBindings["files"] = actionContext.instance(Files::class)
- engineBindings["config"] = actionContext.instance(Config::class)
- engineBindings["runtime"] = Runtime(context)
+ engineBindings.set("session", "S", sessionStorage)
+ engineBindings.set("helper", "H", Helper(context.getPsiContext()))
+ engineBindings["httpClient"] = httpClientProvider.getHttpClient()
+ engineBindings.set("files", "F", actionContext.instance(Files::class))
+ engineBindings.set("config", "C", actionContext.instance(Config::class))
+ engineBindings.set("runtime", "R", Runtime(context))
}
@Inject
@@ -183,7 +184,7 @@ abstract class StandardJdkRuleParser : ScriptRuleParser() {
defaultFileName: String?,
onSaveSuccess: () -> Unit,
onSaveFailed: (String?) -> Unit,
- onSaveCancel: () -> Unit
+ onSaveCancel: () -> Unit,
) {
saveWithUI(
content,
@@ -204,7 +205,7 @@ abstract class StandardJdkRuleParser : ScriptRuleParser() {
defaultFileName: String?,
onSaveSuccess: () -> Unit,
onSaveFailed: (String?) -> Unit,
- onSaveCancel: () -> Unit
+ onSaveCancel: () -> Unit,
) {
saveWithUI(
content,
@@ -226,7 +227,7 @@ abstract class StandardJdkRuleParser : ScriptRuleParser() {
defaultFileName: String?,
onSaveSuccess: () -> Unit,
onSaveFailed: (String?) -> Unit,
- onSaveCancel: () -> Unit
+ onSaveCancel: () -> Unit,
) {
fileSaveHelper!!.saveBytes(
{
@@ -246,7 +247,7 @@ abstract class StandardJdkRuleParser : ScriptRuleParser() {
fun save(
content: String,
charset: String,
- path: String
+ path: String,
) {
save(content, Charsets.forName(charset)!!.charset(), path)
}
@@ -254,7 +255,7 @@ abstract class StandardJdkRuleParser : ScriptRuleParser() {
private fun save(
content: String,
charset: Charset,
- path: String
+ path: String,
) {
FileUtils.forceSave(path, content.toByteArray(charset))
}
@@ -290,9 +291,14 @@ abstract class StandardJdkRuleParser : ScriptRuleParser() {
init {
val bindings: Bindings = SimpleBindings()
- bindings["tool"] = RuleToolUtils.INSTANCE
- bindings["regex"] = RegexUtils.INSTANCE
+ bindings.set("tool", "T", RuleToolUtils)
+ bindings.set("regex", "RE", RegexUtils)
toolBindings = bindings
}
+
+ fun Bindings.set(name: String, alias: String, value: Any) {
+ this[name] = value
+ this[alias] = value
+ }
}
}
\ No newline at end of file
diff --git a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/settings/helper/HttpSettingsHelper.kt b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/settings/helper/HttpSettingsHelper.kt
index 2d597225b..f56182028 100644
--- a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/settings/helper/HttpSettingsHelper.kt
+++ b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/settings/helper/HttpSettingsHelper.kt
@@ -108,7 +108,7 @@ class HttpSettingsHelper {
val HOST_RESOLVERS: Array<(String) -> String?> = arrayOf({
if (it.startsWith("https://raw.githubusercontent.com")) {
val url = if (it.endsWith("/")) it else "$it/"
- return@arrayOf RegexUtils.INSTANCE.extract("https://raw.githubusercontent.com/(.*?)/.*",
+ return@arrayOf RegexUtils.extract("https://raw.githubusercontent.com/(.*?)/.*",
url, "https://raw.githubusercontent.com/$1")
}
return@arrayOf null
diff --git a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/utils/RegexUtils.kt b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/utils/RegexUtils.kt
index 0dba76e37..53e53f01b 100755
--- a/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/utils/RegexUtils.kt
+++ b/idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/utils/RegexUtils.kt
@@ -11,7 +11,7 @@ import java.util.regex.Pattern
* Refactoring from {@url https://github.com/aoju/bus/blob/master/bus-core/src/main/java/org/aoju/bus/core/utils/PatternUtils.java}
*/
@ScriptTypeName("regex")
-class RegexUtils {
+object RegexUtils {
private val cache = WeakHashMap()
private val cacheLock = ReentrantReadWriteLock()
@@ -191,7 +191,12 @@ class RegexUtils {
return findAll(pattern, content, group, collection)
}
- private fun > findAll(pattern: Pattern?, content: String?, group: Int, collection: T?): T? {
+ private fun > findAll(
+ pattern: Pattern?,
+ content: String?,
+ group: Int,
+ collection: T?,
+ ): T? {
if (null == pattern || null == content) {
return null
}
@@ -293,17 +298,6 @@ class RegexUtils {
return value
}
- companion object {
-
- private const val GROUP_VAR_PATTERN = "\\$(\\d+)"
- val GROUP_VAR = Pattern.compile(GROUP_VAR_PATTERN)!!
-
- val REGEX_KEYWORD = setOf('$', '(', ')', '*', '+', '.',
- '[', ']', '?', '\\', '^', '{', '}', '|')
-
- val INSTANCE = RegexUtils()
- }
-
private class RegexWithFlag(private val regex: String?, private val flag: Int) {
override fun hashCode(): Int {
@@ -335,5 +329,12 @@ class RegexUtils {
}
}
-
+
+ private const val GROUP_VAR_PATTERN = "\\$(\\d+)"
+ private val GROUP_VAR = Pattern.compile(GROUP_VAR_PATTERN)!!
+
+ private val REGEX_KEYWORD = setOf(
+ '$', '(', ')', '*', '+', '.',
+ '[', ']', '?', '\\', '^', '{', '}', '|'
+ )
}
diff --git a/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/rule/RuleToolUtilsTest.kt b/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/rule/RuleToolUtilsTest.kt
index dfb1249f7..5f97276c4 100644
--- a/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/rule/RuleToolUtilsTest.kt
+++ b/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/rule/RuleToolUtilsTest.kt
@@ -16,380 +16,378 @@ import kotlin.test.assertTrue
*/
internal class RuleToolUtilsTest {
- private val ruleToolUtils = RuleToolUtils()
-
@Test
fun testIsNullOrEmpty() {
- assertTrue(ruleToolUtils.isNullOrEmpty(null))
- assertTrue(ruleToolUtils.isNullOrEmpty(""))
- assertFalse(ruleToolUtils.isNullOrEmpty(" "))
- assertFalse(ruleToolUtils.isNullOrEmpty("a"))
- assertTrue(ruleToolUtils.isNullOrEmpty(emptyArray()))
- assertFalse(ruleToolUtils.isNullOrEmpty(arrayOf("a")))
- assertTrue(ruleToolUtils.isNullOrEmpty(emptyList()))
- assertFalse(ruleToolUtils.isNullOrEmpty(listOf("a")))
- assertTrue(ruleToolUtils.isNullOrEmpty(emptyMap()))
- assertFalse(ruleToolUtils.isNullOrEmpty(mapOf("a" to 1)))
- assertFalse(ruleToolUtils.isNullOrEmpty(RuleToolUtilsTestPoint(1, 2, 3)))
+ assertTrue(RuleToolUtils.isNullOrEmpty(null))
+ assertTrue(RuleToolUtils.isNullOrEmpty(""))
+ assertFalse(RuleToolUtils.isNullOrEmpty(" "))
+ assertFalse(RuleToolUtils.isNullOrEmpty("a"))
+ assertTrue(RuleToolUtils.isNullOrEmpty(emptyArray()))
+ assertFalse(RuleToolUtils.isNullOrEmpty(arrayOf("a")))
+ assertTrue(RuleToolUtils.isNullOrEmpty(emptyList()))
+ assertFalse(RuleToolUtils.isNullOrEmpty(listOf("a")))
+ assertTrue(RuleToolUtils.isNullOrEmpty(emptyMap()))
+ assertFalse(RuleToolUtils.isNullOrEmpty(mapOf("a" to 1)))
+ assertFalse(RuleToolUtils.isNullOrEmpty(RuleToolUtilsTestPoint(1, 2, 3)))
}
@Test
fun testNotNullOrEmpty() {
- assertFalse(ruleToolUtils.notNullOrEmpty(null))
- assertFalse(ruleToolUtils.notNullOrEmpty(""))
- assertTrue(ruleToolUtils.notNullOrEmpty(" "))
- assertTrue(ruleToolUtils.notNullOrEmpty("a"))
- assertFalse(ruleToolUtils.notNullOrEmpty(emptyArray()))
- assertTrue(ruleToolUtils.notNullOrEmpty(arrayOf("a")))
- assertFalse(ruleToolUtils.notNullOrEmpty(emptyList()))
- assertTrue(ruleToolUtils.notNullOrEmpty(listOf("a")))
- assertFalse(ruleToolUtils.notNullOrEmpty(emptyMap()))
- assertTrue(ruleToolUtils.notNullOrEmpty(mapOf("a" to 1)))
- assertTrue(ruleToolUtils.notNullOrEmpty(RuleToolUtilsTestPoint(1, 2, 3)))
+ assertFalse(RuleToolUtils.notNullOrEmpty(null))
+ assertFalse(RuleToolUtils.notNullOrEmpty(""))
+ assertTrue(RuleToolUtils.notNullOrEmpty(" "))
+ assertTrue(RuleToolUtils.notNullOrEmpty("a"))
+ assertFalse(RuleToolUtils.notNullOrEmpty(emptyArray()))
+ assertTrue(RuleToolUtils.notNullOrEmpty(arrayOf("a")))
+ assertFalse(RuleToolUtils.notNullOrEmpty(emptyList()))
+ assertTrue(RuleToolUtils.notNullOrEmpty(listOf("a")))
+ assertFalse(RuleToolUtils.notNullOrEmpty(emptyMap()))
+ assertTrue(RuleToolUtils.notNullOrEmpty(mapOf("a" to 1)))
+ assertTrue(RuleToolUtils.notNullOrEmpty(RuleToolUtilsTestPoint(1, 2, 3)))
}
@Test
fun testAsArray() {
- assertNull(ruleToolUtils.asArray(null))
- assertArrayEquals(arrayOf(1), ruleToolUtils.asArray(1))
- assertArrayEquals(arrayOf(1, 2), ruleToolUtils.asArray(arrayOf(1, 2)))
- assertArrayEquals(arrayOf(1, 2), ruleToolUtils.asArray(listOf(1, 2)))
+ assertNull(RuleToolUtils.asArray(null))
+ assertArrayEquals(arrayOf(1), RuleToolUtils.asArray(1))
+ assertArrayEquals(arrayOf(1, 2), RuleToolUtils.asArray(arrayOf(1, 2)))
+ assertArrayEquals(arrayOf(1, 2), RuleToolUtils.asArray(listOf(1, 2)))
}
@Test
fun testAsList() {
- assertNull(ruleToolUtils.asList(null))
- assertEquals(arrayListOf(1), ruleToolUtils.asList(1))
- assertEquals(arrayListOf(1, 2), ruleToolUtils.asList(arrayOf(1, 2)))
- assertEquals(arrayListOf(1, 2), ruleToolUtils.asList(setOf(1, 2)))
- assertEquals(arrayListOf(1, 2), ruleToolUtils.asList(listOf(1, 2)))
+ assertNull(RuleToolUtils.asList(null))
+ assertEquals(arrayListOf(1), RuleToolUtils.asList(1))
+ assertEquals(arrayListOf(1, 2), RuleToolUtils.asList(arrayOf(1, 2)))
+ assertEquals(arrayListOf(1, 2), RuleToolUtils.asList(setOf(1, 2)))
+ assertEquals(arrayListOf(1, 2), RuleToolUtils.asList(listOf(1, 2)))
}
@Test
fun testIntersect() {
- assertNull(ruleToolUtils.intersect(null, null))
- assertNull(ruleToolUtils.intersect(listOf(1, 2), null))
- assertNull(ruleToolUtils.intersect(null, arrayOf(1, 2)))
- assertArrayEquals(arrayOf(2, 3), ruleToolUtils.intersect(listOf(1, 2, 3), arrayOf(2, 3, 4)))
+ assertNull(RuleToolUtils.intersect(null, null))
+ assertNull(RuleToolUtils.intersect(listOf(1, 2), null))
+ assertNull(RuleToolUtils.intersect(null, arrayOf(1, 2)))
+ assertArrayEquals(arrayOf(2, 3), RuleToolUtils.intersect(listOf(1, 2, 3), arrayOf(2, 3, 4)))
}
@Test
fun testAnyIntersect() {
- assertFalse(ruleToolUtils.anyIntersect(null, null))
- assertFalse(ruleToolUtils.anyIntersect(listOf(1, 2), null))
- assertFalse(ruleToolUtils.anyIntersect(null, arrayOf(1, 2)))
- assertTrue(ruleToolUtils.anyIntersect(listOf(1, 2, 3), arrayOf(2, 3, 4)))
+ assertFalse(RuleToolUtils.anyIntersect(null, null))
+ assertFalse(RuleToolUtils.anyIntersect(listOf(1, 2), null))
+ assertFalse(RuleToolUtils.anyIntersect(null, arrayOf(1, 2)))
+ assertTrue(RuleToolUtils.anyIntersect(listOf(1, 2, 3), arrayOf(2, 3, 4)))
}
@Test
fun testEqualOrIntersect() {
- assertTrue(ruleToolUtils.equalOrIntersect(null, null))
- assertFalse(ruleToolUtils.equalOrIntersect(listOf(1, 2), null))
- assertFalse(ruleToolUtils.equalOrIntersect(null, arrayOf(1, 2)))
- assertTrue(ruleToolUtils.equalOrIntersect(listOf(1, 2, 3), arrayOf(2, 3, 4)))
+ assertTrue(RuleToolUtils.equalOrIntersect(null, null))
+ assertFalse(RuleToolUtils.equalOrIntersect(listOf(1, 2), null))
+ assertFalse(RuleToolUtils.equalOrIntersect(null, arrayOf(1, 2)))
+ assertTrue(RuleToolUtils.equalOrIntersect(listOf(1, 2, 3), arrayOf(2, 3, 4)))
}
@Test
fun testNewSet() {
- assertEquals(hashSetOf(1), ruleToolUtils.newSet(1))
- assertEquals(hashSetOf(1, 2), ruleToolUtils.newSet(1, 2))
+ assertEquals(hashSetOf(1), RuleToolUtils.newSet(1))
+ assertEquals(hashSetOf(1, 2), RuleToolUtils.newSet(1, 2))
}
@Test
fun testNewList() {
- assertEquals(arrayListOf(1), ruleToolUtils.newList(1))
- assertEquals(arrayListOf(1, 2), ruleToolUtils.newList(1, 2))
+ assertEquals(arrayListOf(1), RuleToolUtils.newList(1))
+ assertEquals(arrayListOf(1, 2), RuleToolUtils.newList(1, 2))
}
@Test
fun testNewMap() {
- assertEquals(LinkedHashMap(), ruleToolUtils.newMap())
+ assertEquals(LinkedHashMap(), RuleToolUtils.newMap())
}
@Test
fun testParseJson() {
- assertNull(ruleToolUtils.parseJson(null))
- assertNull(ruleToolUtils.parseJson(""))
- assertEquals(mapOf("a" to "b"), ruleToolUtils.parseJson("{\"a\": \"b\"}"))
+ assertNull(RuleToolUtils.parseJson(null))
+ assertNull(RuleToolUtils.parseJson(""))
+ assertEquals(mapOf("a" to "b"), RuleToolUtils.parseJson("{\"a\": \"b\"}"))
}
@Test
fun testToJson() {
- assertEquals(null, ruleToolUtils.toJson(null))
- assertEquals("{\"a\":1}", ruleToolUtils.toJson(mapOf("a" to 1)))
+ assertEquals(null, RuleToolUtils.toJson(null))
+ assertEquals("{\"a\":1}", RuleToolUtils.toJson(mapOf("a" to 1)))
}
@Test
fun testPrettyJson() {
- assertEquals(null, ruleToolUtils.prettyJson(null))
- assertEquals("{\n \"a\": 1\n}", ruleToolUtils.prettyJson(mapOf("a" to 1)))
+ assertEquals(null, RuleToolUtils.prettyJson(null))
+ assertEquals("{\n \"a\": 1\n}", RuleToolUtils.prettyJson(mapOf("a" to 1)))
}
@Test
fun testNullOrEmpty() {
- assertTrue(ruleToolUtils.nullOrEmpty(null))
- assertTrue(ruleToolUtils.nullOrEmpty(""))
- assertFalse(ruleToolUtils.nullOrEmpty(" "))
- assertFalse(ruleToolUtils.nullOrEmpty("123"))
+ assertTrue(RuleToolUtils.nullOrEmpty(null))
+ assertTrue(RuleToolUtils.nullOrEmpty(""))
+ assertFalse(RuleToolUtils.nullOrEmpty(" "))
+ assertFalse(RuleToolUtils.nullOrEmpty("123"))
}
@Test
fun testNullOrBlank() {
- assertTrue(ruleToolUtils.nullOrBlank(null))
- assertTrue(ruleToolUtils.nullOrBlank(""))
- assertTrue(ruleToolUtils.nullOrBlank(" "))
- assertFalse(ruleToolUtils.nullOrBlank("123"))
+ assertTrue(RuleToolUtils.nullOrBlank(null))
+ assertTrue(RuleToolUtils.nullOrBlank(""))
+ assertTrue(RuleToolUtils.nullOrBlank(" "))
+ assertFalse(RuleToolUtils.nullOrBlank("123"))
}
@Test
fun testNotNullOrBlank() {
- assertFalse(ruleToolUtils.notNullOrEmpty(null))
- assertFalse(ruleToolUtils.notNullOrEmpty(""))
- assertTrue(ruleToolUtils.notNullOrEmpty(" "))
- assertTrue(ruleToolUtils.notNullOrEmpty("123"))
+ assertFalse(RuleToolUtils.notNullOrEmpty(null))
+ assertFalse(RuleToolUtils.notNullOrEmpty(""))
+ assertTrue(RuleToolUtils.notNullOrEmpty(" "))
+ assertTrue(RuleToolUtils.notNullOrEmpty("123"))
}
@Test
fun testHeadLine() {
- assertNull(ruleToolUtils.headLine(null))
- assertEquals(null, ruleToolUtils.headLine(""))
- assertEquals("str", ruleToolUtils.headLine("str"))
- assertEquals("first", ruleToolUtils.headLine("first\nsecond"))
- assertEquals("first", ruleToolUtils.headLine("\nfirst\nsecond"))
+ assertNull(RuleToolUtils.headLine(null))
+ assertEquals(null, RuleToolUtils.headLine(""))
+ assertEquals("str", RuleToolUtils.headLine("str"))
+ assertEquals("first", RuleToolUtils.headLine("first\nsecond"))
+ assertEquals("first", RuleToolUtils.headLine("\nfirst\nsecond"))
}
@Test
fun testCapitalize() {
- assertNull(ruleToolUtils.capitalize(null))
- assertEquals("Abc", ruleToolUtils.capitalize("abc"))
- assertEquals("ABC", ruleToolUtils.capitalize("ABC"))
+ assertNull(RuleToolUtils.capitalize(null))
+ assertEquals("Abc", RuleToolUtils.capitalize("abc"))
+ assertEquals("ABC", RuleToolUtils.capitalize("ABC"))
}
@Test
fun testUncapitalize() {
- assertNull(ruleToolUtils.uncapitalize(null))
- assertEquals("abc", ruleToolUtils.uncapitalize("Abc"))
- assertEquals("abc", ruleToolUtils.uncapitalize("abc"))
+ assertNull(RuleToolUtils.uncapitalize(null))
+ assertEquals("abc", RuleToolUtils.uncapitalize("Abc"))
+ assertEquals("abc", RuleToolUtils.uncapitalize("abc"))
}
@Test
fun testSwapCase() {
- assertNull(ruleToolUtils.swapCase(null))
- assertEquals("ABC", ruleToolUtils.swapCase("abc"))
- assertEquals("AbC", ruleToolUtils.swapCase("aBc"))
+ assertNull(RuleToolUtils.swapCase(null))
+ assertEquals("ABC", RuleToolUtils.swapCase("abc"))
+ assertEquals("AbC", RuleToolUtils.swapCase("aBc"))
}
@Test
fun testUpperCase() {
- assertNull(ruleToolUtils.upperCase(null))
- assertEquals("ABC", ruleToolUtils.upperCase("abc"))
- assertEquals("ABC", ruleToolUtils.upperCase("aBc"))
+ assertNull(RuleToolUtils.upperCase(null))
+ assertEquals("ABC", RuleToolUtils.upperCase("abc"))
+ assertEquals("ABC", RuleToolUtils.upperCase("aBc"))
}
@Test
fun testLowerCase() {
- assertNull(ruleToolUtils.lowerCase(null))
- assertEquals("abc", ruleToolUtils.lowerCase("abc"))
- assertEquals("abc", ruleToolUtils.lowerCase("aBc"))
+ assertNull(RuleToolUtils.lowerCase(null))
+ assertEquals("abc", RuleToolUtils.lowerCase("abc"))
+ assertEquals("abc", RuleToolUtils.lowerCase("aBc"))
}
@Test
fun testReverse() {
- assertNull(ruleToolUtils.reverse(null))
- assertEquals("cba", ruleToolUtils.reverse("abc"))
- assertEquals("cBa", ruleToolUtils.reverse("aBc"))
+ assertNull(RuleToolUtils.reverse(null))
+ assertEquals("cba", RuleToolUtils.reverse("abc"))
+ assertEquals("cBa", RuleToolUtils.reverse("aBc"))
}
@Test
fun testRepeat() {
- assertNull(ruleToolUtils.repeat(null, 10))
- assertEquals("", ruleToolUtils.repeat("", 10))
- assertEquals("abc", ruleToolUtils.repeat("abc", 1))
- assertEquals("abcabc", ruleToolUtils.repeat("abc", 2))
- assertEquals("abc,abc", ruleToolUtils.repeat("abc", ",", 2))
+ assertNull(RuleToolUtils.repeat(null, 10))
+ assertEquals("", RuleToolUtils.repeat("", 10))
+ assertEquals("abc", RuleToolUtils.repeat("abc", 1))
+ assertEquals("abcabc", RuleToolUtils.repeat("abc", 2))
+ assertEquals("abc,abc", RuleToolUtils.repeat("abc", ",", 2))
}
@Test
fun testIsNumeric() {
- assertFalse(ruleToolUtils.isNumeric(null))
- assertFalse(ruleToolUtils.isNumeric(""))
- assertFalse(ruleToolUtils.isNumeric(" "))
- assertTrue(ruleToolUtils.isNumeric("123"))
- assertTrue(ruleToolUtils.isNumeric("\u0967\u0968\u0969"))
- assertFalse(ruleToolUtils.isNumeric("12 3"))
- assertFalse(ruleToolUtils.isNumeric("ab2c"))
- assertFalse(ruleToolUtils.isNumeric("12-3"))
- assertFalse(ruleToolUtils.isNumeric("12.3"))
- assertFalse(ruleToolUtils.isNumeric("-123"))
- assertFalse(ruleToolUtils.isNumeric("+123"))
+ assertFalse(RuleToolUtils.isNumeric(null))
+ assertFalse(RuleToolUtils.isNumeric(""))
+ assertFalse(RuleToolUtils.isNumeric(" "))
+ assertTrue(RuleToolUtils.isNumeric("123"))
+ assertTrue(RuleToolUtils.isNumeric("\u0967\u0968\u0969"))
+ assertFalse(RuleToolUtils.isNumeric("12 3"))
+ assertFalse(RuleToolUtils.isNumeric("ab2c"))
+ assertFalse(RuleToolUtils.isNumeric("12-3"))
+ assertFalse(RuleToolUtils.isNumeric("12.3"))
+ assertFalse(RuleToolUtils.isNumeric("-123"))
+ assertFalse(RuleToolUtils.isNumeric("+123"))
}
@Test
fun testIsAlpha() {
- assertFalse(ruleToolUtils.isAlpha(null))
- assertFalse(ruleToolUtils.isAlpha(""))
- assertFalse(ruleToolUtils.isAlpha(" "))
- assertTrue(ruleToolUtils.isAlpha("abc"))
- assertFalse(ruleToolUtils.isAlpha("ab2c"))
- assertFalse(ruleToolUtils.isAlpha("ab-c"))
+ assertFalse(RuleToolUtils.isAlpha(null))
+ assertFalse(RuleToolUtils.isAlpha(""))
+ assertFalse(RuleToolUtils.isAlpha(" "))
+ assertTrue(RuleToolUtils.isAlpha("abc"))
+ assertFalse(RuleToolUtils.isAlpha("ab2c"))
+ assertFalse(RuleToolUtils.isAlpha("ab-c"))
}
@Test
fun testSubstringBefore() {
- assertNull(ruleToolUtils.substringBefore(null, null))
- assertEquals("abc", ruleToolUtils.substringBefore("abc", null))
- assertNull(ruleToolUtils.substringBefore(null, "abc"))
- assertEquals("", ruleToolUtils.substringBefore("abc", "abc"))
- assertEquals("abcd", ruleToolUtils.substringBefore("abcdefg", "e"))
+ assertNull(RuleToolUtils.substringBefore(null, null))
+ assertEquals("abc", RuleToolUtils.substringBefore("abc", null))
+ assertNull(RuleToolUtils.substringBefore(null, "abc"))
+ assertEquals("", RuleToolUtils.substringBefore("abc", "abc"))
+ assertEquals("abcd", RuleToolUtils.substringBefore("abcdefg", "e"))
}
@Test
fun testSubstringAfter() {
- assertNull(ruleToolUtils.substringAfter(null, null))
- assertEquals("", ruleToolUtils.substringAfter("abc", null))
- assertNull(ruleToolUtils.substringAfter(null, "abc"))
- assertEquals("", ruleToolUtils.substringAfter("abc", "abc"))
- assertEquals("fg", ruleToolUtils.substringAfter("abcdefg", "e"))
+ assertNull(RuleToolUtils.substringAfter(null, null))
+ assertEquals("", RuleToolUtils.substringAfter("abc", null))
+ assertNull(RuleToolUtils.substringAfter(null, "abc"))
+ assertEquals("", RuleToolUtils.substringAfter("abc", "abc"))
+ assertEquals("fg", RuleToolUtils.substringAfter("abcdefg", "e"))
}
@Test
fun testSubstringBeforeLast() {
- assertNull(ruleToolUtils.substringBeforeLast(null, null))
- assertEquals("abc", ruleToolUtils.substringBeforeLast("abc", null))
- assertNull(ruleToolUtils.substringBeforeLast(null, "abc"))
- assertEquals("", ruleToolUtils.substringBeforeLast("abc", "abc"))
- assertEquals("abcd", ruleToolUtils.substringBeforeLast("abcdefg", "e"))
- assertEquals("abcdefg", ruleToolUtils.substringBeforeLast("abcdefgefg", "e"))
+ assertNull(RuleToolUtils.substringBeforeLast(null, null))
+ assertEquals("abc", RuleToolUtils.substringBeforeLast("abc", null))
+ assertNull(RuleToolUtils.substringBeforeLast(null, "abc"))
+ assertEquals("", RuleToolUtils.substringBeforeLast("abc", "abc"))
+ assertEquals("abcd", RuleToolUtils.substringBeforeLast("abcdefg", "e"))
+ assertEquals("abcdefg", RuleToolUtils.substringBeforeLast("abcdefgefg", "e"))
}
@Test
fun testSubstringAfterLast() {
- assertNull(ruleToolUtils.substringAfterLast(null, null))
- assertEquals("", ruleToolUtils.substringAfterLast("abc", null))
- assertNull(ruleToolUtils.substringAfterLast(null, "abc"))
- assertEquals("", ruleToolUtils.substringAfterLast("abc", "abc"))
- assertEquals("fg", ruleToolUtils.substringAfterLast("abcdefg", "e"))
- assertEquals("fg", ruleToolUtils.substringAfterLast("abcdefgefg", "e"))
+ assertNull(RuleToolUtils.substringAfterLast(null, null))
+ assertEquals("", RuleToolUtils.substringAfterLast("abc", null))
+ assertNull(RuleToolUtils.substringAfterLast(null, "abc"))
+ assertEquals("", RuleToolUtils.substringAfterLast("abc", "abc"))
+ assertEquals("fg", RuleToolUtils.substringAfterLast("abcdefg", "e"))
+ assertEquals("fg", RuleToolUtils.substringAfterLast("abcdefgefg", "e"))
}
@Test
fun testSubstringBetween() {
- assertNull(ruleToolUtils.substringBetween(null, null))
- assertNull(ruleToolUtils.substringBetween("abccba", null))
- assertNull(ruleToolUtils.substringBetween(null, "abccba"))
- assertNull(ruleToolUtils.substringBetween(null, null, null))
- assertNull(ruleToolUtils.substringBetween("abccba", null, null))
- assertNull(ruleToolUtils.substringBetween(null, "abc", "abc"))
- assertEquals("bccb", ruleToolUtils.substringBetween("abccbad", "a"))
- assertEquals("cc", ruleToolUtils.substringBetween("abccbad", "b"))
- assertEquals("", ruleToolUtils.substringBetween("abccbad", "c"))
- assertEquals(null, ruleToolUtils.substringBetween("abccbad", "d"))
- assertEquals("ccb", ruleToolUtils.substringBetween("abccbad", "ab", "ad"))
+ assertNull(RuleToolUtils.substringBetween(null, null))
+ assertNull(RuleToolUtils.substringBetween("abccba", null))
+ assertNull(RuleToolUtils.substringBetween(null, "abccba"))
+ assertNull(RuleToolUtils.substringBetween(null, null, null))
+ assertNull(RuleToolUtils.substringBetween("abccba", null, null))
+ assertNull(RuleToolUtils.substringBetween(null, "abc", "abc"))
+ assertEquals("bccb", RuleToolUtils.substringBetween("abccbad", "a"))
+ assertEquals("cc", RuleToolUtils.substringBetween("abccbad", "b"))
+ assertEquals("", RuleToolUtils.substringBetween("abccbad", "c"))
+ assertEquals(null, RuleToolUtils.substringBetween("abccbad", "d"))
+ assertEquals("ccb", RuleToolUtils.substringBetween("abccbad", "ab", "ad"))
}
@Test
fun testSubstringsBetween() {
- assertNull(ruleToolUtils.substringsBetween(null, null, null))
- assertNull(ruleToolUtils.substringsBetween("abccba", null, null))
- assertNull(ruleToolUtils.substringsBetween(null, "abccba", "abccba"))
- assertArrayEquals(arrayOf("cc", "cca"), ruleToolUtils.substringsBetween("abccdabccaddbadb", "ab", "d"))
+ assertNull(RuleToolUtils.substringsBetween(null, null, null))
+ assertNull(RuleToolUtils.substringsBetween("abccba", null, null))
+ assertNull(RuleToolUtils.substringsBetween(null, "abccba", "abccba"))
+ assertArrayEquals(arrayOf("cc", "cca"), RuleToolUtils.substringsBetween("abccdabccaddbadb", "ab", "d"))
}
@Test
fun testSplit() {
- assertNull(ruleToolUtils.split(null))
- assertArrayEquals(emptyArray(), ruleToolUtils.split(""))
- assertArrayEquals(arrayOf("abc"), ruleToolUtils.split("abc"))
- assertArrayEquals(arrayOf("abc", "def"), ruleToolUtils.split("abc\ndef"))
- assertArrayEquals(arrayOf("abc\nd", "ff", "d\ncba"), ruleToolUtils.split("abc\ndeffed\ncba", "e"))
+ assertNull(RuleToolUtils.split(null))
+ assertArrayEquals(emptyArray(), RuleToolUtils.split(""))
+ assertArrayEquals(arrayOf("abc"), RuleToolUtils.split("abc"))
+ assertArrayEquals(arrayOf("abc", "def"), RuleToolUtils.split("abc\ndef"))
+ assertArrayEquals(arrayOf("abc\nd", "ff", "d\ncba"), RuleToolUtils.split("abc\ndeffed\ncba", "e"))
}
@Test
fun testToCamelCase() {
- assertNull(ruleToolUtils.toCamelCase(null, true))
- assertEquals("", ruleToolUtils.toCamelCase("", true))
- assertEquals(null, ruleToolUtils.toCamelCase(null, false))
- assertEquals("", ruleToolUtils.toCamelCase("", false, '*'))
- assertEquals("*", ruleToolUtils.toCamelCase("*", false))
- assertEquals("*", ruleToolUtils.toCamelCase("*", true))
- assertEquals("toCamelCase", ruleToolUtils.toCamelCase("To.Camel.Case", false, '.'))
- assertEquals("ToCamelCase", ruleToolUtils.toCamelCase(" to @ Camel case", true, '@'))
- assertEquals("toCamelCase", ruleToolUtils.toCamelCase(" @to @ Camel case", false, '@'))
+ assertNull(RuleToolUtils.toCamelCase(null, true))
+ assertEquals("", RuleToolUtils.toCamelCase("", true))
+ assertEquals(null, RuleToolUtils.toCamelCase(null, false))
+ assertEquals("", RuleToolUtils.toCamelCase("", false, '*'))
+ assertEquals("*", RuleToolUtils.toCamelCase("*", false))
+ assertEquals("*", RuleToolUtils.toCamelCase("*", true))
+ assertEquals("toCamelCase", RuleToolUtils.toCamelCase("To.Camel.Case", false, '.'))
+ assertEquals("ToCamelCase", RuleToolUtils.toCamelCase(" to @ Camel case", true, '@'))
+ assertEquals("toCamelCase", RuleToolUtils.toCamelCase(" @to @ Camel case", false, '@'))
}
@Test
fun testCamel2Underline() {
- assertNull(ruleToolUtils.camel2Underline(null))
- assertEquals("", ruleToolUtils.camel2Underline(""))
- assertEquals("abcdefg", ruleToolUtils.camel2Underline("abcdefg"))
- assertEquals("ab_cde_fg", ruleToolUtils.camel2Underline("abCdeFg"))
- assertEquals("ab_cde_fg", ruleToolUtils.camel2Underline("AbCdeFg"))
+ assertNull(RuleToolUtils.camel2Underline(null))
+ assertEquals("", RuleToolUtils.camel2Underline(""))
+ assertEquals("abcdefg", RuleToolUtils.camel2Underline("abcdefg"))
+ assertEquals("ab_cde_fg", RuleToolUtils.camel2Underline("abCdeFg"))
+ assertEquals("ab_cde_fg", RuleToolUtils.camel2Underline("AbCdeFg"))
}
@Test
fun testRemovePrefix() {
- assertNull(ruleToolUtils.removePrefix(null, null))
- assertNull(ruleToolUtils.removePrefix("abc", null))
- assertNull(ruleToolUtils.removePrefix(null, "abc"))
- assertEquals("", ruleToolUtils.removePrefix("abc", "abc"))
- assertEquals("abc", ruleToolUtils.removePrefix("abc", "def"))
- assertEquals("def", ruleToolUtils.removePrefix("abcdef", "abc"))
+ assertNull(RuleToolUtils.removePrefix(null, null))
+ assertNull(RuleToolUtils.removePrefix("abc", null))
+ assertNull(RuleToolUtils.removePrefix(null, "abc"))
+ assertEquals("", RuleToolUtils.removePrefix("abc", "abc"))
+ assertEquals("abc", RuleToolUtils.removePrefix("abc", "def"))
+ assertEquals("def", RuleToolUtils.removePrefix("abcdef", "abc"))
}
@Test
fun testRemoveSuffix() {
- assertNull(ruleToolUtils.removeSuffix(null, null))
- assertNull(ruleToolUtils.removeSuffix("abc", null))
- assertNull(ruleToolUtils.removeSuffix(null, "abc"))
- assertEquals("", ruleToolUtils.removeSuffix("abc", "abc"))
- assertEquals("abc", ruleToolUtils.removeSuffix("abc", "def"))
- assertEquals("abc", ruleToolUtils.removeSuffix("abcdef", "def"))
+ assertNull(RuleToolUtils.removeSuffix(null, null))
+ assertNull(RuleToolUtils.removeSuffix("abc", null))
+ assertNull(RuleToolUtils.removeSuffix(null, "abc"))
+ assertEquals("", RuleToolUtils.removeSuffix("abc", "abc"))
+ assertEquals("abc", RuleToolUtils.removeSuffix("abc", "def"))
+ assertEquals("abc", RuleToolUtils.removeSuffix("abcdef", "def"))
}
@Test
fun testResolveProperty() {
- assertNull(ruleToolUtils.resolveProperty(null, null, null))
+ assertNull(RuleToolUtils.resolveProperty(null, null, null))
assertEquals(
",\${y}",
- ruleToolUtils.resolveProperty("#{x},\${y}", "#", emptyMap())
+ RuleToolUtils.resolveProperty("#{x},\${y}", "#", emptyMap())
)
assertEquals(
- "111,\${y}", ruleToolUtils.resolveProperty("#{x},\${y}", "#", mapOf("x" to 111))
+ "111,\${y}", RuleToolUtils.resolveProperty("#{x},\${y}", "#", mapOf("x" to 111))
)
assertEquals(
- "111,\${y}", ruleToolUtils.resolveProperty("#{x},\${y}", "#", mapOf("x" to 111, "y" to 222))
+ "111,\${y}", RuleToolUtils.resolveProperty("#{x},\${y}", "#", mapOf("x" to 111, "y" to 222))
)
assertEquals(
",",
- ruleToolUtils.resolveProperty("#{x},\${y}", "#$", emptyMap())
+ RuleToolUtils.resolveProperty("#{x},\${y}", "#$", emptyMap())
)
assertEquals(
- "111,", ruleToolUtils.resolveProperty("#{x},\${y}", "#$", mapOf("x" to 111))
+ "111,", RuleToolUtils.resolveProperty("#{x},\${y}", "#$", mapOf("x" to 111))
)
assertEquals(
- "111,222", ruleToolUtils.resolveProperty("#{x},\${y}", "#$", mapOf("x" to 111, "y" to 222))
+ "111,222", RuleToolUtils.resolveProperty("#{x},\${y}", "#$", mapOf("x" to 111, "y" to 222))
)
}
@Test
fun testNow() {
assertTrue(
- Pattern.compile("\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d").matcher(ruleToolUtils.now()).matches()
+ Pattern.compile("\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d").matcher(RuleToolUtils.now()).matches()
)
- assertTrue(Pattern.compile("\\d\\d\\d\\d-\\d\\d-\\d\\d").matcher(ruleToolUtils.now("yyyy-MM-dd")).matches())
+ assertTrue(Pattern.compile("\\d\\d\\d\\d-\\d\\d-\\d\\d").matcher(RuleToolUtils.now("yyyy-MM-dd")).matches())
}
@Test
fun testToday() {
- assertTrue(Pattern.compile("\\d\\d\\d\\d-\\d\\d-\\d\\d").matcher(ruleToolUtils.today()).matches())
+ assertTrue(Pattern.compile("\\d\\d\\d\\d-\\d\\d-\\d\\d").matcher(RuleToolUtils.today()).matches())
}
@Test
fun testFormat() {
val date = DateUtils.parse("2020-01-01")
- assertEquals("2020-01-01 02:23:20", ruleToolUtils.format(date.time + 8600000, "yyyy-MM-dd HH:mm:ss"))
+ assertEquals("2020-01-01 02:23:20", RuleToolUtils.format(date.time + 8600000, "yyyy-MM-dd HH:mm:ss"))
}
@Test
@@ -445,21 +443,21 @@ internal class RuleToolUtilsTest {
"string today()\n" +
"string traversal(object)\n" +
"string uncapitalize(string)\n" +
- "string upperCase(string)\n", ruleToolUtils.debug(ruleToolUtils)
+ "string upperCase(string)\n", RuleToolUtils.debug(RuleToolUtils)
)
}
@Test
fun testTraversal() {
- assertEquals("null", ruleToolUtils.traversal(null))
- assertEquals("unable traversal abc", ruleToolUtils.traversal("abc"))
+ assertEquals("null", RuleToolUtils.traversal(null))
+ assertEquals("unable traversal abc", RuleToolUtils.traversal("abc"))
}
@Test
fun testCopy2Clipboard() {
assertDoesNotThrow {
try {
- ruleToolUtils.copy2Clipboard("abc")
+ RuleToolUtils.copy2Clipboard("abc")
} catch (e: HeadlessException) {
//ignore HeadlessException
}
diff --git a/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/rule/StandardJdkRuleParserTest.kt b/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/rule/StandardJdkRuleParserTest.kt
index c9fde5029..30df9f354 100644
--- a/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/rule/StandardJdkRuleParserTest.kt
+++ b/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/rule/StandardJdkRuleParserTest.kt
@@ -45,14 +45,16 @@ internal class StandardJdkRuleParserTest : RuleParserBaseTest() {
builder.bindInstance(ExportChannel::class, ExportChannel.of("markdown"))
}
- override fun customConfig(): String? {
+ override fun customConfig(): String {
return "x=123\nx=456\ny=666"
}
fun testLogger() {
- LoggerCollector.getLog()//clear
- ruleParser.parseEventRule("groovy:logger.info(\"hello world\")")!!.compute(ruleContext)
- assertEquals("[INFO]\thello world\n", LoggerCollector.getLog().toUnixString())
+ arrayOf("logger", "LOG").forEach { logger ->
+ LoggerCollector.getLog()//clear
+ ruleParser.parseEventRule("groovy:$logger.info(\"hello world\")")!!.compute(ruleContext)
+ assertEquals("[INFO]\thello world\n", LoggerCollector.getLog().toUnixString())
+ }
}
fun testLocalStorage() {
@@ -61,8 +63,12 @@ internal class StandardJdkRuleParserTest : RuleParserBaseTest() {
}
fun testSessionStorage() {
- ruleParser.parseEventRule("groovy:session.set(\"demo\",1)")!!.compute(ruleContext)
- assertEquals(1, sessionStorage.get("demo"))
+ arrayOf("session", "S").forEach { session ->
+ ruleParser.parseEventRule("groovy:$session.set(\"demo\",1)")!!.compute(ruleContext)
+ assertEquals(1, sessionStorage.get("demo"))
+ ruleParser.parseEventRule("groovy:$session.set(\"demo\",2)")!!.compute(ruleContext)
+ assertEquals(2, sessionStorage.get("demo"))
+ }
}
fun testHttpClient() {
@@ -77,96 +83,104 @@ internal class StandardJdkRuleParserTest : RuleParserBaseTest() {
* Test case of [com.itangcent.idea.plugin.rule.StandardJdkRuleParser.Helper]
*/
fun testHelper() {
- assertEquals(
- "com.itangcent.model.Model",
- ruleParser.parseStringRule("groovy:helper.findClass(\"com.itangcent.model.Model\")")!!
- .compute(ruleParser.contextOf(userCtrlPsiClass, userCtrlPsiClass))
- )
- assertEquals(
- "com.itangcent.model.Model#str",
- ruleParser.parseStringRule("groovy:helper.resolveLink(\"{@link com.itangcent.model.Model#str}\")")!!
- .compute(ruleParser.contextOf(userCtrlPsiClass, userCtrlPsiClass))
- )
- assertEquals(
- "[com.itangcent.model.Model, com.itangcent.model.Model#str]",
- ruleParser.parseStringRule("groovy:helper.resolveLinks(\"{@link com.itangcent.model.Model},{@link com.itangcent.model.Model#str}\")")!!
- .compute(ruleParser.contextOf(userCtrlPsiClass, userCtrlPsiClass))
- )
+ arrayOf("helper", "H").forEach { helper ->
+ assertEquals(
+ "com.itangcent.model.Model",
+ ruleParser.parseStringRule("groovy:$helper.findClass(\"com.itangcent.model.Model\")")!!
+ .compute(ruleParser.contextOf(userCtrlPsiClass, userCtrlPsiClass))
+ )
+ assertEquals(
+ "com.itangcent.model.Model#str",
+ ruleParser.parseStringRule("groovy:$helper.resolveLink(\"{@link com.itangcent.model.Model#str}\")")!!
+ .compute(ruleParser.contextOf(userCtrlPsiClass, userCtrlPsiClass))
+ )
+ assertEquals(
+ "[com.itangcent.model.Model, com.itangcent.model.Model#str]",
+ ruleParser.parseStringRule("groovy:$helper.resolveLinks(\"{@link com.itangcent.model.Model},{@link com.itangcent.model.Model#str}\")")!!
+ .compute(ruleParser.contextOf(userCtrlPsiClass, userCtrlPsiClass))
+ )
+ }
}
/**
* Test case of [com.itangcent.idea.plugin.rule.StandardJdkRuleParser.Config]
*/
fun testConfig() {
- assertEquals(
- "123",
- ruleParser.parseStringRule("groovy:config.get(\"x\")")!!
- .compute(ruleContext)
- )
- assertEquals(
- "123456",
- ruleParser.parseStringRule("groovy:config.getValues(\"x\").join()")!!
- .compute(ruleContext)
- )
- assertEquals(
- "666",
- ruleParser.parseStringRule("groovy:config.resolveProperty(\"\\\${y}\")")!!
- .compute(ruleContext)
- )
- assertNull(
- ruleParser.parseStringRule("groovy:config.resolvePropertyWith(null,\"#\\\$\",[z:888])")!!
- .compute(ruleContext)
- )
- assertEquals(
- "#{x},888",
- ruleParser.parseStringRule("groovy:config.resolvePropertyWith(\"#{x},\\\${z}\",null,[z:888])")!!
- .compute(ruleContext)
- )
- assertEquals(
- "123,",
- ruleParser.parseStringRule("groovy:config.resolvePropertyWith(\"#{x},\\\${z}\",\"#\\\$\",null)")!!
- .compute(ruleContext)
- )
- assertEquals(
- "123,888",
- ruleParser.parseStringRule("groovy:config.resolvePropertyWith(\"#{x},\\\${z}\",\"#\\\$\",[z:888])")!!
- .compute(ruleContext)
- )
+ arrayOf("config", "C").forEach { config ->
+ assertEquals(
+ "123",
+ ruleParser.parseStringRule("groovy:$config.get(\"x\")")!!
+ .compute(ruleContext)
+ )
+ assertEquals(
+ "123456",
+ ruleParser.parseStringRule("groovy:$config.getValues(\"x\").join()")!!
+ .compute(ruleContext)
+ )
+ assertEquals(
+ "666",
+ ruleParser.parseStringRule("groovy:$config.resolveProperty(\"\\\${y}\")")!!
+ .compute(ruleContext)
+ )
+ assertNull(
+ ruleParser.parseStringRule("groovy:$config.resolvePropertyWith(null,\"#\\\$\",[z:888])")!!
+ .compute(ruleContext)
+ )
+ assertEquals(
+ "#{x},888",
+ ruleParser.parseStringRule("groovy:$config.resolvePropertyWith(\"#{x},\\\${z}\",null,[z:888])")!!
+ .compute(ruleContext)
+ )
+ assertEquals(
+ "123,",
+ ruleParser.parseStringRule("groovy:$config.resolvePropertyWith(\"#{x},\\\${z}\",\"#\\\$\",null)")!!
+ .compute(ruleContext)
+ )
+ assertEquals(
+ "123,888",
+ ruleParser.parseStringRule("groovy:$config.resolvePropertyWith(\"#{x},\\\${z}\",\"#\\\$\",[z:888])")!!
+ .compute(ruleContext)
+ )
+ }
}
/**
* Test case of [com.itangcent.idea.plugin.rule.StandardJdkRuleParser.Files]
*/
fun testFiles() {
- val demoPath = tempDir.sub("demo.txt").escapeBackslash()
- ruleParser.parseEventRule("groovy:files.save(\"hello world\",\"$demoPath\")")!!
- .compute(ruleContext)
- Assert.assertEquals("hello world", FileUtils.read(File(demoPath)))
- ruleParser.parseEventRule("groovy:files.saveWithUI({\"hello world!\"},\"demo2.txt\",{},{},{})")!!
- .compute(ruleContext)
- Assert.assertEquals("hello world!",
- (fileSaveHelper as FileSaveHelperAdaptor).bytes()?.let { String(it, Charsets.UTF_8) })
+ arrayOf("files", "F").forEach { files ->
+ val demoPath = tempDir.sub("demo.txt").escapeBackslash()
+ ruleParser.parseEventRule("groovy:$files.save(\"hello world\",\"$demoPath\")")!!
+ .compute(ruleContext)
+ Assert.assertEquals("hello world", FileUtils.read(File(demoPath)))
+ ruleParser.parseEventRule("groovy:$files.saveWithUI({\"hello world!\"},\"demo2.txt\",{},{},{})")!!
+ .compute(ruleContext)
+ Assert.assertEquals("hello world!",
+ (fileSaveHelper as FileSaveHelperAdaptor).bytes()?.let { String(it, Charsets.UTF_8) })
+ }
}
/**
* Test case of [com.itangcent.idea.plugin.rule.StandardJdkRuleParser.Runtime]
*/
fun testRuntime() {
- Assert.assertEquals(
- "markdown", ruleParser.parseStringRule("groovy:runtime.channel()")!!
- .compute(ruleContext)
- )
- Assert.assertEquals(
- project.name, ruleParser.parseStringRule("groovy:runtime.projectName()")!!
- .compute(ruleContext)
- )
- Assert.assertEquals(
- project.basePath, ruleParser.parseStringRule("groovy:runtime.projectPath()")!!
- .compute(ruleContext)
- )
- Assert.assertEquals(
- "test_default", ruleParser.parseStringRule("groovy:runtime.module()")!!
- .compute(ruleParser.contextOf("userCtrlPsiClass", userCtrlPsiClass))
- )
+ arrayOf("runtime", "R").forEach { runtime ->
+ Assert.assertEquals(
+ "markdown", ruleParser.parseStringRule("groovy:$runtime.channel()")!!
+ .compute(ruleContext)
+ )
+ Assert.assertEquals(
+ project.name, ruleParser.parseStringRule("groovy:$runtime.projectName()")!!
+ .compute(ruleContext)
+ )
+ Assert.assertEquals(
+ project.basePath, ruleParser.parseStringRule("groovy:$runtime.projectPath()")!!
+ .compute(ruleContext)
+ )
+ Assert.assertEquals(
+ "test_default", ruleParser.parseStringRule("groovy:$runtime.module()")!!
+ .compute(ruleParser.contextOf("userCtrlPsiClass", userCtrlPsiClass))
+ )
+ }
}
}
\ No newline at end of file
diff --git a/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/utils/RegexUtilsTest.kt b/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/utils/RegexUtilsTest.kt
index c9247c324..2ba6f09c9 100644
--- a/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/utils/RegexUtilsTest.kt
+++ b/idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/utils/RegexUtilsTest.kt
@@ -13,87 +13,85 @@ class RegexUtilsTest {
@Test
fun testGet() {
- assertEquals("123", REGEX_UTILS.getGroup0("\\d+", "abc123efg"))
- assertEquals("123", REGEX_UTILS.getGroup1("(\\d+)", "abc123efg"))
- assertEquals(null, REGEX_UTILS.getGroup1("\\d[a-z]\\d+", "abc123efg"))
- assertEquals(null, REGEX_UTILS.get(null, "abc123efg", 1))
- assertEquals(null, REGEX_UTILS.get("(\\d+)", null, 1))
- assertEquals("efg", REGEX_UTILS.get("(\\d+)(.*?)$", "abc123efg", 2))
- assertEquals(arrayListOf("123", "efg", "456"), REGEX_UTILS.getAllGroups("(\\d+)(.*?)(\\d+)\$", "abc123efg456"))
- assertEquals(emptyList(), REGEX_UTILS.getAllGroups("(\\d+F\\d+)\$", "abc123efg456"))
- assertEquals(null, REGEX_UTILS.getAllGroups(null, "abc123efg456"))
- assertEquals(null, REGEX_UTILS.getAllGroups("(\\d+F\\d+)\$", null))
+ assertEquals("123", RegexUtils.getGroup0("\\d+", "abc123efg"))
+ assertEquals("123", RegexUtils.getGroup1("(\\d+)", "abc123efg"))
+ assertEquals(null, RegexUtils.getGroup1("\\d[a-z]\\d+", "abc123efg"))
+ assertEquals(null, RegexUtils.get(null, "abc123efg", 1))
+ assertEquals(null, RegexUtils.get("(\\d+)", null, 1))
+ assertEquals("efg", RegexUtils.get("(\\d+)(.*?)$", "abc123efg", 2))
+ assertEquals(arrayListOf("123", "efg", "456"), RegexUtils.getAllGroups("(\\d+)(.*?)(\\d+)\$", "abc123efg456"))
+ assertEquals(emptyList(), RegexUtils.getAllGroups("(\\d+F\\d+)\$", "abc123efg456"))
+ assertEquals(null, RegexUtils.getAllGroups(null, "abc123efg456"))
+ assertEquals(null, RegexUtils.getAllGroups("(\\d+F\\d+)\$", null))
}
@Test
fun testFind() {
- assertEquals(listOf("c123", "g456"), REGEX_UTILS.findAllGroup0("[a-z]\\d+", "abc123efg456"))
- assertEquals(listOf("123", "456"), REGEX_UTILS.findAllGroup1("[a-z](\\d+)", "abc123efg456"))
- assertEquals(listOf("c", "g"), REGEX_UTILS.findAll("([a-z])(\\d+)", "abc123efg456", 1))
+ assertEquals(listOf("c123", "g456"), RegexUtils.findAllGroup0("[a-z]\\d+", "abc123efg456"))
+ assertEquals(listOf("123", "456"), RegexUtils.findAllGroup1("[a-z](\\d+)", "abc123efg456"))
+ assertEquals(listOf("c", "g"), RegexUtils.findAll("([a-z])(\\d+)", "abc123efg456", 1))
}
@Test
fun testExtract() {
- assertEquals("abcxefgx", REGEX_UTILS.extract("\\d+", "abc123efg456", "x"))
- assertEquals("ab123-cef456-g", REGEX_UTILS.extract("([a-z])(\\d+)", "abc123efg456", "$2-$1"))
- assertThrows { REGEX_UTILS.extract("[a-z]\\d+", "abc123efg456", "$2-$1") }
- assertEquals(null, REGEX_UTILS.extract(null, "abc123efg456", "$2-$1"))
- assertEquals(null, REGEX_UTILS.extract("([a-z])(\\d+)", null, "$2-$1"))
- assertEquals(null, REGEX_UTILS.extract("([a-z])(\\d+)", "abc123efg456", null))
- assertEquals("ab123-cef456-g", REGEX_UTILS.replaceAll("abc123efg456", "([a-z])(\\d+)", "$2-$1"))
+ assertEquals("abcxefgx", RegexUtils.extract("\\d+", "abc123efg456", "x"))
+ assertEquals("ab123-cef456-g", RegexUtils.extract("([a-z])(\\d+)", "abc123efg456", "$2-$1"))
+ assertThrows { RegexUtils.extract("[a-z]\\d+", "abc123efg456", "$2-$1") }
+ assertEquals(null, RegexUtils.extract(null, "abc123efg456", "$2-$1"))
+ assertEquals(null, RegexUtils.extract("([a-z])(\\d+)", null, "$2-$1"))
+ assertEquals(null, RegexUtils.extract("([a-z])(\\d+)", "abc123efg456", null))
+ assertEquals("ab123-cef456-g", RegexUtils.replaceAll("abc123efg456", "([a-z])(\\d+)", "$2-$1"))
}
@Test
fun testDel() {
- assertEquals("abcefg", REGEX_UTILS.delAll("\\d+", "abc123efg456"))
- assertEquals("123456", REGEX_UTILS.delAll("[a-z]", "abc123efg456"))
- assertEquals("", REGEX_UTILS.delAll("[a-z]", ""))
- assertEquals("abc123efg456", REGEX_UTILS.delAll("", "abc123efg456"))
- assertEquals("123efg456", REGEX_UTILS.delBefore("\\d", "abc123efg456"))
- assertEquals("", REGEX_UTILS.delBefore("\\d", ""))
- assertEquals("abc123efg456", REGEX_UTILS.delBefore("\\d[a-z]\\d", "abc123efg456"))
- assertEquals("bc123efg456", REGEX_UTILS.delFirst("[a-z]", "abc123efg456"))
- assertEquals("", REGEX_UTILS.delFirst("[a-z]", ""))
- assertEquals("123efg456", REGEX_UTILS.delFirst("[a-z]+", "abc123efg456"))
+ assertEquals("abcefg", RegexUtils.delAll("\\d+", "abc123efg456"))
+ assertEquals("123456", RegexUtils.delAll("[a-z]", "abc123efg456"))
+ assertEquals("", RegexUtils.delAll("[a-z]", ""))
+ assertEquals("abc123efg456", RegexUtils.delAll("", "abc123efg456"))
+ assertEquals("123efg456", RegexUtils.delBefore("\\d", "abc123efg456"))
+ assertEquals("", RegexUtils.delBefore("\\d", ""))
+ assertEquals("abc123efg456", RegexUtils.delBefore("\\d[a-z]\\d", "abc123efg456"))
+ assertEquals("bc123efg456", RegexUtils.delFirst("[a-z]", "abc123efg456"))
+ assertEquals("", RegexUtils.delFirst("[a-z]", ""))
+ assertEquals("123efg456", RegexUtils.delFirst("[a-z]+", "abc123efg456"))
}
@Test
fun testCount() {
- assertEquals(2, REGEX_UTILS.count("\\d+", "abc123efg456"))
- assertEquals(6, REGEX_UTILS.count("\\d", "abc123efg456"))
- assertEquals(0, REGEX_UTILS.count(null, "abc123efg456"))
- assertEquals(0, REGEX_UTILS.count("\\d", null))
+ assertEquals(2, RegexUtils.count("\\d+", "abc123efg456"))
+ assertEquals(6, RegexUtils.count("\\d", "abc123efg456"))
+ assertEquals(0, RegexUtils.count(null, "abc123efg456"))
+ assertEquals(0, RegexUtils.count("\\d", null))
}
@Test
fun testContains() {
- assertTrue(REGEX_UTILS.contains("\\d+", "abc123efg456"))
- assertTrue(REGEX_UTILS.contains("\\d", "abc123efg456"))
- assertTrue(REGEX_UTILS.contains("[a-z]\\d", "abc123efg456"))
- assertFalse(REGEX_UTILS.contains("\\d[a-z]\\d", "abc123efg456"))
- assertFalse(REGEX_UTILS.contains(null, "abc123efg456"))
- assertFalse(REGEX_UTILS.contains("\\d", null))
+ assertTrue(RegexUtils.contains("\\d+", "abc123efg456"))
+ assertTrue(RegexUtils.contains("\\d", "abc123efg456"))
+ assertTrue(RegexUtils.contains("[a-z]\\d", "abc123efg456"))
+ assertFalse(RegexUtils.contains("\\d[a-z]\\d", "abc123efg456"))
+ assertFalse(RegexUtils.contains(null, "abc123efg456"))
+ assertFalse(RegexUtils.contains("\\d", null))
}
@Test
fun testIsMatch() {
- assertFalse(REGEX_UTILS.isMatch("\\d+", "abc123efg456"))
- assertFalse(REGEX_UTILS.isMatch("\\d", "abc123efg456"))
- assertFalse(REGEX_UTILS.isMatch("[a-z]\\d", "abc123efg456"))
- assertTrue(REGEX_UTILS.isMatch("[a-z]+\\d+[a-z]+\\d+", "abc123efg456"))
- assertFalse(REGEX_UTILS.isMatch("\\d[a-z]\\d", "abc123efg456"))
- assertFalse(REGEX_UTILS.isMatch(null, "abc123efg456"))
- assertFalse(REGEX_UTILS.isMatch("\\d", null))
+ assertFalse(RegexUtils.isMatch("\\d+", "abc123efg456"))
+ assertFalse(RegexUtils.isMatch("\\d", "abc123efg456"))
+ assertFalse(RegexUtils.isMatch("[a-z]\\d", "abc123efg456"))
+ assertTrue(RegexUtils.isMatch("[a-z]+\\d+[a-z]+\\d+", "abc123efg456"))
+ assertFalse(RegexUtils.isMatch("\\d[a-z]\\d", "abc123efg456"))
+ assertFalse(RegexUtils.isMatch(null, "abc123efg456"))
+ assertFalse(RegexUtils.isMatch("\\d", null))
}
@Test
fun testEscape() {
- assertEquals(null, REGEX_UTILS.escape(null))
- assertEquals("", REGEX_UTILS.escape(""))
- assertEquals("abc123efg456", REGEX_UTILS.escape("abc123efg456"))
- assertEquals("\\\$\\(a\\)bc123efg456", REGEX_UTILS.escape("\$(a)bc123efg456"))
- assertEquals("\\\$\\(\\)\\*\\+\\.\\[\\]\\?\\\\\\\\\\^\\{\\}\\|", REGEX_UTILS.escape("\$()*+.[]?\\\\^{}|"))
+ assertEquals(null, RegexUtils.escape(null))
+ assertEquals("", RegexUtils.escape(""))
+ assertEquals("abc123efg456", RegexUtils.escape("abc123efg456"))
+ assertEquals("\\\$\\(a\\)bc123efg456", RegexUtils.escape("\$(a)bc123efg456"))
+ assertEquals("\\\$\\(\\)\\*\\+\\.\\[\\]\\?\\\\\\\\\\^\\{\\}\\|", RegexUtils.escape("\$()*+.[]?\\\\^{}|"))
}
}
-
-private val REGEX_UTILS = RegexUtils();