diff --git a/src/main/scala/org/camunda/feel/impl/builtin/ListBuiltinFunctions.scala b/src/main/scala/org/camunda/feel/impl/builtin/ListBuiltinFunctions.scala index 1289bf916..785977648 100644 --- a/src/main/scala/org/camunda/feel/impl/builtin/ListBuiltinFunctions.scala +++ b/src/main/scala/org/camunda/feel/impl/builtin/ListBuiltinFunctions.scala @@ -64,7 +64,8 @@ object ListBuiltinFunctions { joinFunction, joinWithDelimiterFunction, joinWithDelimiterAndPrefixAndSuffixFunction - ) + ), + "is empty" -> List(emptyFunction) ) private def listContainsFunction = @@ -497,4 +498,12 @@ object ListBuiltinFunctions { } } + private def emptyFunction = + builtinFunction( + params = List("list"), + invoke = { case List(ValList(list)) => + ValBoolean(list.isEmpty) + } + ) + } diff --git a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinListFunctionsTest.scala b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinListFunctionsTest.scala index aca5a1254..a75c1d345 100644 --- a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinListFunctionsTest.scala +++ b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinListFunctionsTest.scala @@ -403,4 +403,11 @@ class BuiltinListFunctionsTest extends AnyFlatSpec with Matchers with FeelIntegr eval(""" string join(["foo", 123, "bar"]) """) should be(ValNull) } + "A list is empty() function" should "return if the list is empty" in { + + eval(" is empty([]) ") should be(ValBoolean(true)) + eval(" is empty([1]) ") should be(ValBoolean(false)) + eval(" is empty([1,2,3]) ") should be(ValBoolean(false)) + eval(" is empty(list: [1]) ") should be(ValBoolean(false)) + } }