use of com.linkedin.data.element.DataElement in project rest.li by linkedin.
the class TestDataIterator method testGetChild.
@Test(dataProvider = "orders")
public void testGetChild(IterationOrder order) throws IOException {
String input = "{ \"a\" : { \"a1\" : \"A1\" }, \"b\" : [ 1.0, 2.0 ] }";
Object o = jsonToObject(input);
Builder.create(o, null, order).iterate(new Builder.Callback() {
public void callback(DataElement e) {
if (e.getName().equals("a")) {
assertEquals(e.getChild("a1"), "A1");
assertTrue(e.getChild("x") == null);
} else if (e.getName().equals("b")) {
assertEquals(e.getChild(0), 1.0);
assertEquals(e.getChild(1), 2.0);
assertTrue(e.getChild(-1) == null);
assertTrue(e.getChild(2) == null);
}
}
});
}
use of com.linkedin.data.element.DataElement in project rest.li by linkedin.
the class TestDataIterator method testNoSchemaWithParentDataElement.
@Test
public void testNoSchemaWithParentDataElement() {
DataMap root = new DataMap();
root.put("bytes", ByteString.copyAvroString("abc", false));
root.put("int", 1);
root.put("string", "foo");
root.put("boolean", false);
root.put("double", 4.0);
root.put("long", 2L);
root.put("float", 3.0f);
DataMap grandParent = new DataMap();
DataMap parent = new DataMap();
grandParent.put("child", parent);
parent.put("child", root);
DataElement grandParentElement = new SimpleDataElement(grandParent, null);
DataElement parentElement = new SimpleDataElement(parent, "child", null, grandParentElement);
DataElement element = new SimpleDataElement(root, "child", null, parentElement);
/*
//Possible preExpected output:
String preExpected =
" path=/child/child, class=com.linkedin.data.DataMap\n" +
" path=/child/child/bytes, class=com.linkedin.data.ByteString, value=abc\n" +
" path=/child/child/int, class=java.lang.Integer, value=1\n" +
" path=/child/child/string, class=java.lang.String, value=foo\n" +
" path=/child/child/boolean, class=java.lang.Boolean, value=false\n" +
" path=/child/child/double, class=java.lang.Double, value=4.0\n" +
" path=/child/child/long, class=java.lang.Long, value=2\n" +
" path=/child/child/float, class=java.lang.Float, value=3.0\n";
//Possible postExpected output:
String postExpected =
" path=/child/child/bytes, class=com.linkedin.data.ByteString, value=abc\n" +
" path=/child/child/int, class=java.lang.Integer, value=1\n" +
" path=/child/child/string, class=java.lang.String, value=foo\n" +
" path=/child/child/boolean, class=java.lang.Boolean, value=false\n" +
" path=/child/child/double, class=java.lang.Double, value=4.0\n" +
" path=/child/child/long, class=java.lang.Long, value=2\n" +
" path=/child/child/float, class=java.lang.Float, value=3.0\n" +
" path=/child/child, class=com.linkedin.data.DataMap\n";
*/
final Set<String> commonValues = new HashSet<>();
commonValues.add("path=/child/child/bytes, class=com.linkedin.data.ByteString, value=abc");
commonValues.add("path=/child/child/int, class=java.lang.Integer, value=1");
commonValues.add("path=/child/child/string, class=java.lang.String, value=foo");
commonValues.add("path=/child/child/boolean, class=java.lang.Boolean, value=false");
commonValues.add("path=/child/child/double, class=java.lang.Double, value=4.0");
commonValues.add("path=/child/child/long, class=java.lang.Long, value=2");
commonValues.add("path=/child/child/float, class=java.lang.Float, value=3.0");
List<String> preOrderTraversal = traverseWithDataElement(element, IterationOrder.PRE_ORDER, true);
Set<String> preOrderTraversalWithoutRoot = new HashSet<>(preOrderTraversal.subList(1, preOrderTraversal.size()));
Assert.assertEquals(preOrderTraversal.get(0), "path=/child/child, class=com.linkedin.data.DataMap", "The first node in the pre order traversal should be: com.linkedin.data.DataMap");
List<String> postOrderTraversal = traverseWithDataElement(element, IterationOrder.POST_ORDER, true);
Set<String> postOrderTraversalWithoutRoot = new HashSet<>(postOrderTraversal.subList(0, postOrderTraversal.size() - 1));
Assert.assertEquals(postOrderTraversal.get(postOrderTraversal.size() - 1), "path=/child/child, class=com.linkedin.data.DataMap", "The last node in the post order traversal should be: com.linkedin.data.DataMap");
Assert.assertEquals(preOrderTraversalWithoutRoot, postOrderTraversalWithoutRoot, "The traversals without the root should match each other");
Assert.assertEquals(preOrderTraversalWithoutRoot, commonValues, "The traversals should cover all the leaves");
}
Aggregations