Degrade DataNodeContainer.getChildNodes() from Set to Collection
[yangtools.git] / yang / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / parser / impl / AugmentTest.java
index c362a2179c4f7045ff813bea058a74643e90e0ee..b20c9780875c3729a7219fd9cf7f0ae15f7816ed 100644 (file)
@@ -7,7 +7,10 @@
  */
 package org.opendaylight.yangtools.yang.parser.impl;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import java.io.FileNotFoundException;
 import java.net.URI;
@@ -16,6 +19,7 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -28,6 +32,7 @@ import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
@@ -66,7 +71,7 @@ public class AugmentTest {
 
     @Test
     public void testAugmentParsing() throws Exception {
-        modules = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment").getPath());
+        modules = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment").toURI());
         SchemaPath expectedSchemaPath;
         List<QName> qnames = new ArrayList<>();
         qnames.add(q0);
@@ -80,10 +85,10 @@ public class AugmentTest {
         AugmentationSchema augment = augmentations.iterator().next();
         assertNotNull(augment);
 
-        expectedSchemaPath = new SchemaPath(qnames, true);
+        expectedSchemaPath = SchemaPath.create(qnames, true);
         assertEquals(expectedSchemaPath, augment.getTargetPath());
 
-        Set<DataSchemaNode> augmentChildren = augment.getChildNodes();
+        Collection<DataSchemaNode> augmentChildren = augment.getChildNodes();
         assertEquals(4, augmentChildren.size());
         for (DataSchemaNode dsn : augmentChildren) {
             TestUtils.checkIsAugmenting(dsn, false);
@@ -103,20 +108,20 @@ public class AugmentTest {
         QName qname = new QName(fooNS, fooRev, foo, "ds0ChannelNumber");
         qnames.add(qname);
         assertEquals(qname, ds0ChannelNumber.getQName());
-        expectedSchemaPath = new SchemaPath(qnames, true);
+        expectedSchemaPath = SchemaPath.create(qnames, true);
         assertEquals(expectedSchemaPath, ds0ChannelNumber.getPath());
         assertFalse(ds0ChannelNumber.isAugmenting());
         // type of leaf ds0ChannelNumber
         QName typeQName = BaseTypes.constructQName("string");
         List<QName> typePath = Collections.singletonList(typeQName);
-        expectedSchemaPath = new SchemaPath(typePath, true);
+        expectedSchemaPath = SchemaPath.create(typePath, true);
         assertEquals(expectedSchemaPath, ds0ChannelNumber.getType().getPath());
 
         // leaf interface-id
         qname = new QName(fooNS, fooRev, foo, "interface-id");
         assertEquals(qname, interfaceId.getQName());
         qnames.set(3, qname);
-        expectedSchemaPath = new SchemaPath(qnames, true);
+        expectedSchemaPath = SchemaPath.create(qnames, true);
         assertEquals(expectedSchemaPath, interfaceId.getPath());
         assertFalse(interfaceId.isAugmenting());
 
@@ -124,7 +129,7 @@ public class AugmentTest {
         qname = new QName(fooNS, fooRev, foo, "schemas");
         assertEquals(qname, schemas.getQName());
         qnames.set(3, qname);
-        expectedSchemaPath = new SchemaPath(qnames, true);
+        expectedSchemaPath = SchemaPath.create(qnames, true);
         assertEquals(expectedSchemaPath, schemas.getPath());
         assertFalse(schemas.isAugmenting());
 
@@ -132,7 +137,7 @@ public class AugmentTest {
         qname = new QName(fooNS, fooRev, foo, "odl");
         assertEquals(qname, odl.getQName());
         qnames.set(3, qname);
-        expectedSchemaPath = new SchemaPath(qnames, true);
+        expectedSchemaPath = SchemaPath.create(qnames, true);
         assertEquals(expectedSchemaPath, odl.getPath());
         assertFalse(odl.isAugmenting());
 
@@ -171,7 +176,7 @@ public class AugmentTest {
 
     @Test
     public void testAugmentResolving() throws Exception {
-        modules = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment").getPath());
+        modules = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment").toURI());
         Module module2 = TestUtils.findModule(modules, "bar");
         ContainerSchemaNode interfaces = (ContainerSchemaNode) module2.getDataChildByName("interfaces");
         ListSchemaNode ifEntry = (ListSchemaNode) interfaces.getDataChildByName("ifEntry");
@@ -187,7 +192,7 @@ public class AugmentTest {
         ContainerSchemaNode augmentHolder = (ContainerSchemaNode) ifEntry.getDataChildByName("augment-holder");
         TestUtils.checkIsAugmenting(augmentHolder, true);
         assertEquals(q2, augmentHolder.getQName());
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, augmentHolder.getPath());
 
         // foo.yang
@@ -206,34 +211,34 @@ public class AugmentTest {
         QName qname = new QName(fooNS, fooRev, foo, "ds0ChannelNumber");
         assertEquals(qname, ds0ChannelNumber.getQName());
         qnames.add(qname);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, ds0ChannelNumber.getPath());
 
         // leaf interface-id
         qname = new QName(fooNS, fooRev, foo, "interface-id");
         assertEquals(qname, interfaceId.getQName());
         qnames.set(3, qname);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, interfaceId.getPath());
 
         // container schemas
         qname = new QName(fooNS, fooRev, foo, "schemas");
         assertEquals(qname, schemas.getQName());
         qnames.set(3, qname);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, schemas.getPath());
 
         // choice odl
         qname = new QName(fooNS, fooRev, foo, "odl");
         assertEquals(qname, odl.getQName());
         qnames.set(3, qname);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, odl.getPath());
     }
 
     @Test
     public void testAugmentedChoice() throws Exception {
-        modules = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment").getPath());
+        modules = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment").toURI());
         Module module2 = TestUtils.findModule(modules, "bar");
         ContainerSchemaNode interfaces = (ContainerSchemaNode) module2.getDataChildByName("interfaces");
         ListSchemaNode ifEntry = (ListSchemaNode) interfaces.getDataChildByName("ifEntry");
@@ -280,36 +285,36 @@ public class AugmentTest {
         QName qname = new QName(fooNS, fooRev, foo, "id");
         assertEquals(qname, id.getQName());
         qnames.add(qname);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, id.getPath());
-        Set<DataSchemaNode> idChildren = id.getChildNodes();
+        Collection<DataSchemaNode> idChildren = id.getChildNodes();
         assertEquals(1, idChildren.size());
 
         // case node1
         qname = new QName(fooNS, fooRev, foo, "node1");
         assertEquals(qname, node1.getQName());
         qnames.set(4, qname);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, node1.getPath());
-        Set<DataSchemaNode> node1Children = node1.getChildNodes();
+        Collection<DataSchemaNode> node1Children = node1.getChildNodes();
         assertTrue(node1Children.isEmpty());
 
         // case node2
         qname = new QName(fooNS, fooRev, foo, "node2");
         assertEquals(qname, node2.getQName());
         qnames.set(4, qname);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, node2.getPath());
-        Set<DataSchemaNode> node2Children = node2.getChildNodes();
+        Collection<DataSchemaNode> node2Children = node2.getChildNodes();
         assertTrue(node2Children.isEmpty());
 
         // case node3
         qname = new QName(fooNS, fooRev, foo, "node3");
         assertEquals(qname, node3.getQName());
         qnames.set(4, qname);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, node3.getPath());
-        Set<DataSchemaNode> node3Children = node3.getChildNodes();
+        Collection<DataSchemaNode> node3Children = node3.getChildNodes();
         assertEquals(1, node3Children.size());
 
         // test cases
@@ -324,7 +329,7 @@ public class AugmentTest {
         qnames.add(new QName(fooNS, fooRev, foo, "id"));
         LeafSchemaNode caseIdChild = (LeafSchemaNode) idChildren.iterator().next();
         assertNotNull(caseIdChild);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, caseIdChild.getPath());
 
         // case node3 child
@@ -332,13 +337,13 @@ public class AugmentTest {
         qnames.set(5, new QName(fooNS, fooRev, foo, "node3"));
         ContainerSchemaNode caseNode3Child = (ContainerSchemaNode) node3Children.iterator().next();
         assertNotNull(caseNode3Child);
-        expectedPath = new SchemaPath(qnames, true);
+        expectedPath = SchemaPath.create(qnames, true);
         assertEquals(expectedPath, caseNode3Child.getPath());
     }
 
     @Test
     public void testAugmentRpc() throws Exception {
-        modules = TestUtils.loadModules(getClass().getResource("/augment-test/rpc").getPath());
+        modules = TestUtils.loadModules(getClass().getResource("/augment-test/rpc").toURI());
         final URI NS_BAR = URI.create("urn:opendaylight:bar");
         final URI NS_FOO = URI.create("urn:opendaylight:foo");
         final Date revision = new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-11");
@@ -397,26 +402,43 @@ public class AugmentTest {
         // case attach
         qnames[3] = new QName(NS_FOO, revision, "f", "attach");
         assertEquals(qnames[3], attach.getQName());
-        expectedPath = new SchemaPath(Arrays.asList(qnames), true);
+        expectedPath = SchemaPath.create(Arrays.asList(qnames), true);
         assertEquals(expectedPath, attach.getPath());
-        Set<DataSchemaNode> attachChildren = attach.getChildNodes();
+        Collection<DataSchemaNode> attachChildren = attach.getChildNodes();
         assertEquals(1, attachChildren.size());
 
         // case create
         qnames[3] = new QName(NS_FOO, revision, "f", "create");
         assertEquals(qnames[3], create.getQName());
-        expectedPath = new SchemaPath(Arrays.asList(qnames), true);
+        expectedPath = SchemaPath.create(Arrays.asList(qnames), true);
         assertEquals(expectedPath, create.getPath());
-        Set<DataSchemaNode> createChildren = create.getChildNodes();
+        Collection<DataSchemaNode> createChildren = create.getChildNodes();
         assertEquals(1, createChildren.size());
 
         // case attach
         qnames[3] = new QName(NS_FOO, revision, "f", "destroy");
         assertEquals(qnames[3], destroy.getQName());
-        expectedPath = new SchemaPath(Arrays.asList(qnames), true);
+        expectedPath = SchemaPath.create(Arrays.asList(qnames), true);
         assertEquals(expectedPath, destroy.getPath());
-        Set<DataSchemaNode> destroyChildren = destroy.getChildNodes();
+        Collection<DataSchemaNode> destroyChildren = destroy.getChildNodes();
         assertEquals(1, destroyChildren.size());
     }
 
+    @Test
+    public void testAugmentInUsesResolving() throws Exception {
+        modules = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-uses").toURI());
+        assertEquals(1, modules.size());
+
+        Module test = modules.iterator().next();
+        DataNodeContainer links = (DataNodeContainer) test.getDataChildByName("links");
+        DataNodeContainer link = (DataNodeContainer) links.getDataChildByName("link");
+        DataNodeContainer nodes = (DataNodeContainer) link.getDataChildByName("nodes");
+        ContainerSchemaNode node = (ContainerSchemaNode) nodes.getDataChildByName("node");
+        Set<AugmentationSchema> augments = node.getAvailableAugmentations();
+        assertEquals(1, augments.size());
+        assertEquals(1, node.getChildNodes().size());
+        LeafSchemaNode id = (LeafSchemaNode) node.getDataChildByName("id");
+        assertTrue(id.isAugmenting());
+    }
+
 }