[
https://issues.apache.org/jira/browse/METRON-830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15960041#comment-15960041
]
ASF GitHub Bot commented on METRON-830:
---------------------------------------
Github user mattf-horton commented on a diff in the pull request:
https://github.com/apache/incubator-metron/pull/516#discussion_r110294012
--- Diff:
metron-platform/metron-common/src/test/java/org/apache/metron/common/dsl/functions/StringFunctionsTest.java
---
@@ -207,4 +207,78 @@ public void testFormatWithNoArguments() throws
Exception {
public void testFormatWithMissingArguments() throws Exception {
run("FORMAT('missing arg: %d')", Collections.emptyMap());
}
+
+
+ /**
+ * CHOP StringFunction
+ * @throws Exception
+ */
+ @Test
+ public void testChop() throws Exception {
+ Assert.assertEquals("ab", run("CHOP('abc')", new HashedMap()));
+ Assert.assertEquals(null, run("CHOP(null)", new HashedMap()));
+ Assert.assertEquals("abc", run("CHOP(msg)", ImmutableMap.of("msg",
"abc\r\n")));
+ Assert.assertEquals("", run("CHOP(msg)", ImmutableMap.of("msg",
"\n")));
+ }
+
+ @Test(expected = ParseException.class)
+ public void testChopWithMissingArguments() throws Exception {
+ run("CHOP()", Collections.emptyMap());
+ }
+
+ /**
+ * PREPENDIFMISSING StringFunction
+ * @throws Exception
+ */
+ @Test
+ public void testPrependIfMissing() throws Exception {
+ Assert.assertEquals("xyzabc", run("PREPENDIFMISSING('abc',
'xyz')", new HashedMap()));
+ Assert.assertEquals("xyzXYZabc", run("PREPENDIFMISSING('XYZabc',
'xyz', 'mno')", new HashedMap()));
+ Assert.assertEquals(null, run("PREPENDIFMISSING(null, null,
null)", new HashedMap()));
+ Assert.assertEquals("xyz", run("PREPENDIFMISSING('', 'xyz',
null)", new HashedMap()));
+ }
+
+ @Test(expected = ParseException.class)
+ public void testPrependIfMissingWithIncorrectArgs() throws Exception {
--- End diff --
I may be wrong, but I think JUnit expected errors do not auto-continue
inside an errored test case. So, you're only testing the first sub-case.
To fix, you either need 3 test cases, or you need to do try/catch/finally
contexts around each `run()`, where the catch eats the exception but sets a
marker flag, and the finally asserts the marker flag.
> Adding StringFunctions to Stellar - chop, prependifmissing, appendifmissing
> and countmatches
> --------------------------------------------------------------------------------------------
>
> Key: METRON-830
> URL: https://issues.apache.org/jira/browse/METRON-830
> Project: Metron
> Issue Type: Bug
> Affects Versions: 0.3.1
> Reporter: Anand Subramanian
> Assignee: Anand Subramanian
> Fix For: Next + 1
>
>
> Enhance Stellar by adding the following apache common string functions.
> - chop -> Remove the last character from a String.
> - prependifmissing -> Prepends the prefix to the start of the string if the
> string does not already start with any of the prefixes.
> - appendifmissing -> Appends the suffix to the end of the string if the
> string does not already end with any of the suffixes.
> - countmatches -> Counts how many times the substring appears in the larger
> string.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)