Search in sources :

Example 21 with DataElement

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);
            }
        }
    });
}
Also used : SimpleDataElement(com.linkedin.data.element.SimpleDataElement) DataElement(com.linkedin.data.element.DataElement) ByteString(com.linkedin.data.ByteString) Test(org.testng.annotations.Test)

Example 22 with DataElement

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");
}
Also used : SimpleDataElement(com.linkedin.data.element.SimpleDataElement) DataElement(com.linkedin.data.element.DataElement) SimpleDataElement(com.linkedin.data.element.SimpleDataElement) ByteString(com.linkedin.data.ByteString) DataMap(com.linkedin.data.DataMap) HashSet(java.util.HashSet) Test(org.testng.annotations.Test)

Aggregations

DataElement (com.linkedin.data.element.DataElement)22 SimpleDataElement (com.linkedin.data.element.SimpleDataElement)11 ByteString (com.linkedin.data.ByteString)7 Message (com.linkedin.data.message.Message)7 Test (org.testng.annotations.Test)7 DataMap (com.linkedin.data.DataMap)5 DataSchema (com.linkedin.data.schema.DataSchema)4 RecordDataSchema (com.linkedin.data.schema.RecordDataSchema)4 ArrayList (java.util.ArrayList)4 ValidationResult (com.linkedin.data.schema.validation.ValidationResult)3 TestUtil.dataMapFromString (com.linkedin.data.TestUtil.dataMapFromString)2 TestUtil.dataSchemaFromString (com.linkedin.data.TestUtil.dataSchemaFromString)2 NamedDataSchema (com.linkedin.data.schema.NamedDataSchema)2 ValidationOptions (com.linkedin.data.schema.validation.ValidationOptions)2 DataComplex (com.linkedin.data.DataComplex)1 TestUtil.asList (com.linkedin.data.TestUtil.asList)1 Predicate (com.linkedin.data.it.Predicate)1 TyperefDataSchema (com.linkedin.data.schema.TyperefDataSchema)1 UnionDataSchema (com.linkedin.data.schema.UnionDataSchema)1 CoercionMode (com.linkedin.data.schema.validation.CoercionMode)1