@Test public void testSimpleExpression() throws Exception { Record record = new Record(); record.getFields().put("first_name", "Nadja"); record.getFields().put("age", 8); record.getFields().put("tags", "one"); record.getFields().put("tags", 2); record.getFields().put("tags", "three"); assertEquals("foo", resolveExpressionSimple("foo", record)); assertEquals("", resolveExpressionSimple("", record)); assertEquals("Nadja", resolveExpressionSimple("@{first_name}", record)); assertEquals("Ms. Nadja", resolveExpressionSimple("Ms. @{first_name}", record)); assertEquals("Ms. Nadja is 8 years old.", resolveExpressionSimple("Ms. @{first_name} is @{age} years old.", record)); assertEquals(Arrays.asList("Nadja"), resolveReference("@{first_name}", record)); assertEquals(Arrays.asList("one", 2, "three"), resolveReference("@{tags}", record)); try { resolveReference("first_name", record); fail(); } catch (MorphlineCompilationException e) { ; } }
@Test public void testSimplePatterns() throws Exception { // 012345678901234567890123456789 String expr = "Mr. @{first_name} age: @{age}"; String regex = "@\\{(.*?)\\}"; Matcher matcher = Pattern.compile(regex).matcher(expr); assertTrue(matcher.find()); assertEquals("first_name", matcher.group(1)); assertEquals(6, matcher.start(1)); assertEquals(6 + "first_name".length(), matcher.end(1)); assertTrue(matcher.find()); assertEquals("age", matcher.group(1)); assertEquals(25, matcher.start(1)); assertEquals(25 + "age".length(), matcher.end(1)); assertFalse(matcher.find()); matcher = Pattern.compile("foo").matcher("foo"); assertTrue(matcher.matches()); matcher = Pattern.compile("foo").matcher("barfoo"); assertFalse(matcher.matches()); matcher = Pattern.compile(".*foo").matcher("barfoo"); assertTrue(matcher.matches()); }
assertEquals(Arrays.asList("foo"), resolveExpression("foo", record)); assertEquals(Arrays.asList(""), resolveExpression("", record)); assertEquals(Arrays.asList("Nadja"), resolveExpression("@{first_name}", record)); assertEquals(Arrays.asList("pembo", "shanti"), resolveExpression("@{likes}", record)); assertEquals(Arrays.asList("Ms. Nadja"), resolveExpression("Ms. @{first_name}", record)); assertEquals(Arrays.asList(), resolveExpression("Ms. @{nonExistingField}", record)); assertEquals(Arrays.asList(), resolveExpression("@{nonExistingField}", record)); assertEquals(Arrays.asList( "Ms. Nadja is 8 years old."), resolveExpression("Ms. @{first_name} is @{age} years old.", record)); assertEquals(Arrays.asList( "is one years", "is 2 years", "is three years"), resolveExpression("is @{tags} years", record)); assertEquals(Arrays.asList( "Ms. Nadja is one years old.", "Ms. Nadja is 2 years old.", "Ms. Nadja is three years old."), resolveExpression("Ms. @{first_name} is @{tags} years old.", record)); assertEquals(Arrays.asList( "She likes pembo and hates brothers.", "She likes pembo and hates milk.", "She likes shanti and hates brothers.", "She likes shanti and hates milk."),
private List resolveReference(String expr, Record record) { return resolveReference(expr, record, ConfigFactory.empty()); }