From 15139258961ad0ccb61387b658e529d99a34872b Mon Sep 17 00:00:00 2001 From: skayliu Date: Thu, 19 Sep 2024 11:28:16 +0800 Subject: [PATCH 1/3] feat: add function `is blank()` to check if a string is blank --- .../builtin/BooleanBuiltinFunctions.scala | 10 +++++++- .../impl/builtin/BuiltinFunctionsTest.scala | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/scala/org/camunda/feel/impl/builtin/BooleanBuiltinFunctions.scala b/src/main/scala/org/camunda/feel/impl/builtin/BooleanBuiltinFunctions.scala index e6d49a8c5..4789e566f 100644 --- a/src/main/scala/org/camunda/feel/impl/builtin/BooleanBuiltinFunctions.scala +++ b/src/main/scala/org/camunda/feel/impl/builtin/BooleanBuiltinFunctions.scala @@ -25,7 +25,8 @@ object BooleanBuiltinFunctions { "not" -> List(notFunction), "is defined" -> List(isDefinedFunction), "get or else" -> List(getOrElse), - "assert" -> List(assertFunction, assertFunction2) + "assert" -> List(assertFunction, assertFunction2), + "is blank" -> List(isBlankFunction) ) private def notFunction = @@ -70,4 +71,11 @@ object BooleanBuiltinFunctions { } ) + private def isBlankFunction = builtinFunction( + params = List("string"), + invoke = {case List(ValString(string)) => + ValBoolean(string.isBlank) + } + ) + } diff --git a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinFunctionsTest.scala b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinFunctionsTest.scala index e7ec96111..ebd01fe2c 100644 --- a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinFunctionsTest.scala +++ b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinFunctionsTest.scala @@ -243,4 +243,27 @@ class BuiltinFunctionsTest "Assertion failure on evaluate the expression 'list contains(assert(my_list, my_list != null, \"The condition is not true\"), 2)': The condition is not true" ) } + + "A is blank() function" should "return Boolean" in { + evaluateExpression( + expression = """ is blank("") """ + ) should returnResult(true) + + evaluateExpression( + expression = """ is blank(" ") """ + ) should returnResult(true) + + evaluateExpression( + expression = """ is blank("hello world") """ + ) should returnResult(false) + + evaluateExpression( + expression = """ is blank(" hello world ") """ + ) should returnResult(false) + + evaluateExpression( + expression = """ is blank("\t\n\r\f") """ + ) should returnResult(true) + } + } From 33ee564641f72aa496fbec2a0d428284b35f894a Mon Sep 17 00:00:00 2001 From: skayliu Date: Fri, 20 Sep 2024 16:59:17 +0800 Subject: [PATCH 2/3] feat: add function `is blank()` to check if a string is blank or not --- .../builtin/BooleanBuiltinFunctions.scala | 10 +------ .../impl/builtin/StringBuiltinFunctions.scala | 10 ++++++- .../impl/builtin/BuiltinFunctionsTest.scala | 23 --------------- .../builtin/BuiltinStringFunctionsTest.scala | 28 +++++++++++++++++++ 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/src/main/scala/org/camunda/feel/impl/builtin/BooleanBuiltinFunctions.scala b/src/main/scala/org/camunda/feel/impl/builtin/BooleanBuiltinFunctions.scala index 4789e566f..e6d49a8c5 100644 --- a/src/main/scala/org/camunda/feel/impl/builtin/BooleanBuiltinFunctions.scala +++ b/src/main/scala/org/camunda/feel/impl/builtin/BooleanBuiltinFunctions.scala @@ -25,8 +25,7 @@ object BooleanBuiltinFunctions { "not" -> List(notFunction), "is defined" -> List(isDefinedFunction), "get or else" -> List(getOrElse), - "assert" -> List(assertFunction, assertFunction2), - "is blank" -> List(isBlankFunction) + "assert" -> List(assertFunction, assertFunction2) ) private def notFunction = @@ -71,11 +70,4 @@ object BooleanBuiltinFunctions { } ) - private def isBlankFunction = builtinFunction( - params = List("string"), - invoke = {case List(ValString(string)) => - ValBoolean(string.isBlank) - } - ) - } diff --git a/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala b/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala index 6db2729fc..94ff8c532 100644 --- a/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala +++ b/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala @@ -45,7 +45,8 @@ object StringBuiltinFunctions { "extract" -> List(extractFunction), "trim" -> List(trimFunction), "uuid" -> List(uuidFunction), - "to base64" -> List(toBase64Function) + "to base64" -> List(toBase64Function), + "is blank" -> List(isBlankFunction) ) private def substringFunction = builtinFunction( @@ -287,4 +288,11 @@ object StringBuiltinFunctions { } ) + private def isBlankFunction = builtinFunction( + params = List("string"), + invoke = {case List(ValString(string)) => + ValBoolean(string.isBlank) + } + ) + } diff --git a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinFunctionsTest.scala b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinFunctionsTest.scala index ebd01fe2c..e7ec96111 100644 --- a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinFunctionsTest.scala +++ b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinFunctionsTest.scala @@ -243,27 +243,4 @@ class BuiltinFunctionsTest "Assertion failure on evaluate the expression 'list contains(assert(my_list, my_list != null, \"The condition is not true\"), 2)': The condition is not true" ) } - - "A is blank() function" should "return Boolean" in { - evaluateExpression( - expression = """ is blank("") """ - ) should returnResult(true) - - evaluateExpression( - expression = """ is blank(" ") """ - ) should returnResult(true) - - evaluateExpression( - expression = """ is blank("hello world") """ - ) should returnResult(false) - - evaluateExpression( - expression = """ is blank(" hello world ") """ - ) should returnResult(false) - - evaluateExpression( - expression = """ is blank("\t\n\r\f") """ - ) should returnResult(true) - } - } diff --git a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala index 422b18c52..cfddbed2e 100644 --- a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala +++ b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala @@ -195,4 +195,32 @@ class BuiltinStringFunctionsTest evaluateExpression(""" to base64(value: "Camunda") """) should returnResult("Q2FtdW5kYQ==") } + + "A is blank() function" should "return true if the string contains only whitespace" in { + evaluateExpression( + expression = """ is blank("") """ + ) should returnResult(true) + + evaluateExpression( + expression = """ is blank(" ") """ + ) should returnResult(true) + + evaluateExpression( + expression = """ is blank("\t\n\r\f") """ + ) should returnResult(true) + + evaluateExpression( + expression = """ is blank(string: "") """ + ) should returnResult(true) + } + + "A is blank() function" should "return false if the string contains only non-whitespace characters" in { + evaluateExpression( + expression = """ is blank("hello world") """ + ) should returnResult(false) + + evaluateExpression( + expression = """ is blank(" hello world ") """ + ) should returnResult(false) + } } From 356ca38f3a52a2ea44380662e8d81eac73f312eb Mon Sep 17 00:00:00 2001 From: Philipp Ossler Date: Fri, 20 Sep 2024 14:02:06 +0200 Subject: [PATCH 3/3] refactor: Group test cases together --- .../camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala index cfddbed2e..42e69272f 100644 --- a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala +++ b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala @@ -214,7 +214,7 @@ class BuiltinStringFunctionsTest ) should returnResult(true) } - "A is blank() function" should "return false if the string contains only non-whitespace characters" in { + it should "return false if the string contains only non-whitespace characters" in { evaluateExpression( expression = """ is blank("hello world") """ ) should returnResult(false)