@Test(expected = IllegalArgumentException.class) public void testMultiLevelInvalidFinalField() { SamzaSqlRelRecord record = createRecord("bar.baz.baf.foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); getSqlFieldUdf.execute(record, "bar.baz.baf.funny"); }
@SamzaSqlUdfMethod public String execute(Object... args) { Object currentFieldOrValue = args[0]; Validate.isTrue(currentFieldOrValue == null || currentFieldOrValue instanceof SamzaSqlRelRecord); if (currentFieldOrValue != null && args.length > 1) { String[] fieldNameChain = ((String) args[1]).split("\\."); for (int i = 0; i < fieldNameChain.length && currentFieldOrValue != null; i++) { currentFieldOrValue = extractField(fieldNameChain[i], currentFieldOrValue); } } if (currentFieldOrValue != null) { return currentFieldOrValue.toString(); } return null; }
@Test(expected = IllegalArgumentException.class) public void testSingleLevelInvalidField() { SamzaSqlRelRecord record = createRecord("foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); getSqlFieldUdf.execute(record, "bar"); }
@Test(expected = IllegalArgumentException.class) public void testPathTooDeep() { SamzaSqlRelRecord record = createRecord("bar.foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); getSqlFieldUdf.execute(record, "bar.baz.baf.funny"); }
@Test public void testNullRecord() { GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(null, "bar.baz.baf.foo"), null); }
@Test (expected = NullPointerException.class) public void testNullFields() { SamzaSqlRelRecord record = createRecord("bar.baz.baf.foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); getSqlFieldUdf.execute(record, null); }
@Test(expected = IllegalArgumentException.class) public void testMultiLevelInvalidIntermediateField() { SamzaSqlRelRecord record = createRecord("bar.baz.baf.foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); getSqlFieldUdf.execute(record, "bar.baz.bacon"); }
@Test public void testMapAtIntermediateFields() { SamzaSqlRelRecord record = createRecord("bar.map:baz.map:baf.foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "bar.baz.baf.foo"), "bar"); }
@Test public void testAllFieldTypes() { SamzaSqlRelRecord record = createRecord("bar.map:baz.baf.foo[3].fun"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "bar.baz.baf.foo[3].fun"), "bar"); } }
@Test public void testArrayAtIntermediateFields() { SamzaSqlRelRecord record = createRecord("bar.baz[3].baf[2].foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "bar.baz[3].baf[2].foo"), "bar"); }
@Test public void testArrayAtLastField() { SamzaSqlRelRecord record = createRecord("bar.baz.baf.foo[3]"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "bar.baz.baf.foo[3]"), "bar"); }
@Test public void testArrayAtAllIntermediateFields() { SamzaSqlRelRecord record = createRecord("bar.baz[2].baf[3].foo[5]"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "bar.baz[2].baf[3].foo[5]"), "bar"); }
@Test public void testMultiLevel() { SamzaSqlRelRecord record = createRecord("bar.baz.baf.foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "bar.baz.baf.foo"), "bar"); }
@Test public void testMapAtLastField() { SamzaSqlRelRecord record = createRecord("bar.baz.baf.map:foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "bar.baz.baf.foo"), "bar"); }
@Test public void testSingleLevel() { SamzaSqlRelRecord record = createRecord("foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "foo"), "bar"); }
@Test public void testMapAtAllIntermediateFields() { SamzaSqlRelRecord record = createRecord("bar.map:baz.map:baf.map:foo"); GetSqlFieldUdf getSqlFieldUdf = new GetSqlFieldUdf(); Assert.assertEquals(getSqlFieldUdf.execute(record, "bar.baz.baf.foo"), "bar"); }