From c78762a25903ed5c4a9aef0a3d789f797ae476ca Mon Sep 17 00:00:00 2001 From: bncriju Date: Fri, 13 Sep 2024 13:42:53 +0530 Subject: [PATCH] changes as per suggestions --- .../org/kie/dmn/feel/util/XQueryImplUtil.java | 10 ++++--- .../functions/MatchesFunctionTest.java | 28 +++++++++---------- .../kie/dmn/feel/util/XQueryImplUtilTest.java | 16 +++++++++-- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/util/XQueryImplUtil.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/util/XQueryImplUtil.java index d41ad686468..b643dfc1397 100644 --- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/util/XQueryImplUtil.java +++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/util/XQueryImplUtil.java @@ -23,13 +23,15 @@ public class XQueryImplUtil { public static Object executeMatchesFunction(String input, String pattern, String flags){ - String XQueryExpression = String.format("matches('%s', '%s', '%s')", input, pattern, flags); - return evaluateXQueryExpression(XQueryExpression); + flags = flags == null ? "" : flags; + String xQueryExpression = String.format("matches('%s', '%s', '%s')", input, pattern, flags); + return evaluateXQueryExpression(xQueryExpression); } public static Object executeReplaceFunction(String input, String pattern, String replacement, String flags) { - String XQueryExpression = String.format("replace('%s', '%s', '%s', '%s')", input, pattern, replacement, flags); - return evaluateXQueryExpression(XQueryExpression); + flags = flags == null ? "" : flags; + String xQueryExpression = String.format("replace('%s', '%s', '%s', '%s')", input, pattern, replacement, flags); + return evaluateXQueryExpression(xQueryExpression); } static Object evaluateXQueryExpression (String expression) { diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/MatchesFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/MatchesFunctionTest.java index 4b3059db813..67a84059b54 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/MatchesFunctionTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/MatchesFunctionTest.java @@ -22,10 +22,8 @@ import org.mockito.MockedStatic; import java.security.InvalidParameterException; -import java.util.regex.PatternSyntaxException; import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatNoException; import static org.mockito.Mockito.*; class MatchesFunctionTest { @@ -39,11 +37,11 @@ void invokeNull() { @Test void invokeUnsupportedFlags() { - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("foobar", "fo.bar", "g")); - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("abracadabra", "bra", "p")); - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("abracadabra", "bra", "X")); - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("abracadabra", "bra", " ")); - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("abracadabra", "bra", "iU")); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("foobar", "fo.bar", "g")); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("abracadabra", "bra", "p")); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("abracadabra", "bra", "X")); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("abracadabra", "bra", " ")); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("abracadabra", "bra", "iU")); } @Test @@ -63,9 +61,9 @@ void invokeWithoutFlagsNotMatch() { FunctionTestUtil.assertResult(MatchesFunction.matchFunctionWithFlags("h", "(.)\3",null), false); FunctionTestUtil.assertResult(MatchesFunction.matchFunctionWithFlags("h", "(.)\2",null), false); FunctionTestUtil.assertResult(MatchesFunction.matchFunctionWithFlags("input", "\3",null), false); - FunctionTestUtil.assertResult(MatchesFunction.matchFunctionWithFlags("fo\nbar", "(?iU)(?iU)(ab)[|cd]",null), false); - FunctionTestUtil.assertResult(MatchesFunction.matchFunctionWithFlags("fo\nbar", "(?x)(?i)hello world","i"), false); - FunctionTestUtil.assertResult(MatchesFunction.matchFunctionWithFlags("fo\nbar", "(?xi)hello world",null), false); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("fo\nbar", "(?iU)(?iU)(ab)[|cd]",null)); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() ->MatchesFunction.matchFunctionWithFlags("fo\nbar", "(?x)(?i)hello world","i")); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() ->MatchesFunction.matchFunctionWithFlags("fo\nbar", "(?xi)hello world",null)); } @Test @@ -98,20 +96,20 @@ void invokeWithAllFlags() { @Test void checkForPatternTest() { - assertThatExceptionOfType(PatternSyntaxException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("foobar", "(abc|def(ghi", "i")); + assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> MatchesFunction.matchFunctionWithFlags("foobar", "(abc|def(ghi", "i")); } - /*@Test + @Test void checkMatchFunctionWithFlagsInvocation() { MatchesFunction matchesFunctionSpied = spy(MatchesFunction.INSTANCE); - matchesFunctionSpied.invoke("input", "pattern"); + matchesFunctionSpied.invoke("input", "pattern",null); verify(matchesFunctionSpied, times(1)).invoke("input", "pattern", null); try (MockedStatic matchesFunctionMocked = mockStatic(MatchesFunction.class)) { - matchesFunctionSpied.invoke("input", "pattern"); + matchesFunctionSpied.invoke("input", "pattern",null); matchesFunctionMocked.verify(() -> MatchesFunction.matchFunctionWithFlags("input", "pattern", null)); matchesFunctionSpied.invoke("input", "pattern", "flags"); matchesFunctionMocked.verify(() -> MatchesFunction.matchFunctionWithFlags("input", "pattern", "flags")); } - }*/ + } } \ No newline at end of file diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/util/XQueryImplUtilTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/util/XQueryImplUtilTest.java index cd06196c407..841ab5dda10 100644 --- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/util/XQueryImplUtilTest.java +++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/util/XQueryImplUtilTest.java @@ -21,6 +21,7 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; public class XQueryImplUtilTest { @@ -36,19 +37,28 @@ void executeMatchesFunctionTest() { input = "fo\nbar"; pattern = "o.b"; - flags = ""; + flags = null; retrieved = XQueryImplUtil.executeMatchesFunction(input, pattern, flags); expected = false; assertThat(retrieved).isNotNull().isEqualTo(expected); - input = "test"; + input = "TEST"; pattern = "test"; - flags = "n"; + flags = "i"; retrieved = XQueryImplUtil.executeMatchesFunction(input, pattern, flags); expected = true; assertThat(retrieved).isNotNull().isEqualTo(expected); } + @Test + void executeMatchesFunctionInvokingException(){ + String input = "test"; + String pattern = "^test"; + String flags = "g"; + assertThatThrownBy(() -> XQueryImplUtil.executeMatchesFunction(input, pattern, + flags)).isInstanceOf(IllegalStateException.class).hasMessageContaining("Unrecognized flag"); + } + @Test void executeReplaceFunctionTest() { String input = "testString";