[ 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)