Add ImmutableNode.newXYXBuilder() methods
[yangtools.git] / data / yang-data-tree-ri / src / test / java / org / opendaylight / yangtools / yang / data / tree / impl / YT776Test.java
index 781728f66a2facb486ce03cdf4ed009f0da82617..5784e28da4f88a9d960124696e8f5d9ea5c9fa3b 100644 (file)
@@ -9,14 +9,6 @@ package org.opendaylight.yangtools.yang.data.tree.impl;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.choiceBuilder;
-import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.containerBuilder;
-import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.leafBuilder;
-import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.leafSetBuilder;
-import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.mapBuilder;
-import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.mapEntryBuilder;
-import static org.opendaylight.yangtools.yang.data.tree.impl.ListConstraintsValidation.assertTooFewElements;
-import static org.opendaylight.yangtools.yang.data.tree.impl.ListConstraintsValidation.assertTooManyElements;
 
 import com.google.common.collect.ImmutableMap;
 import org.junit.jupiter.api.AfterAll;
@@ -29,6 +21,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTree;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModification;
@@ -45,8 +38,7 @@ class YT776Test {
     private static final NodeIdentifier OBJECT_LIST = new NodeIdentifier(OBJECT);
     private static final NodeIdentifierWithPredicates OBJECT_ITEM = NodeIdentifierWithPredicates.of(OBJECT,
         ImmutableMap.of(OBJECT_ID, "1"));
-    private static final LeafNode<?> OBJECT_ID_LEAF = leafBuilder().withNodeIdentifier(new NodeIdentifier(OBJECT_ID))
-            .withValue("1").build();
+    private static final LeafNode<?> OBJECT_ID_LEAF = ImmutableNodes.leafNode(OBJECT_ID, "1");
     private static final NodeIdentifier ATTRIBUTES = new NodeIdentifier(QName.create(MODULE, "attributes"));
 
     private static final QName NESTED = QName.create(MODULE, "nested");
@@ -126,15 +118,18 @@ class YT776Test {
     @Test
     void testNoAttributes() {
         final var mod = dataTree.takeSnapshot().newModification();
-        mod.write(YangInstanceIdentifier.of(BOX), containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        mod.write(YangInstanceIdentifier.of(BOX), ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
                     .build())
                 .build())
             .build());
 
-        final IllegalArgumentException ex = assertThrows(IllegalArgumentException.class, mod::ready);
+        final var ex = assertThrows(IllegalArgumentException.class, mod::ready);
         // FIXME: This is actually mandatory leaf enforcer kicking in: attributes have to be present. This is
         //        most probably not what we want.
         assertEquals("Node (yt776)object[{(yt776)object-id=1}] is missing mandatory descendant /(yt776)attributes",
@@ -143,27 +138,34 @@ class YT776Test {
 
     @Test
     void testEmptyAttributes() throws DataValidationFailedException {
-        final var mod = write(containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        final var mod = write(ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
-                    .withChild(leafSetBuilder().withNodeIdentifier(ATTRIBUTES).build())
+                    .withChild(ImmutableNodes.newSystemLeafSetBuilder().withNodeIdentifier(ATTRIBUTES).build())
                     .build())
                 .build())
             .build());
 
         final var ex = assertThrows(MinMaxElementsValidationFailedException.class, mod::ready);
         assertEquals("(yt776)attributes does not have enough elements (0), needs at least 1", ex.getMessage());
-        assertTooFewElements(ex);
+        ListConstraintsValidation.assertTooFewElements(ex);
     }
 
     @Test
     void testOneAttribute() throws DataValidationFailedException {
-        writeAndCommit(containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        writeAndCommit(ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
-                    .withChild(leafSetBuilder().withNodeIdentifier(ATTRIBUTES)
+                    .withChild(ImmutableNodes.newSystemLeafSetBuilder()
+                        .withNodeIdentifier(ATTRIBUTES)
                         .withChildValue("object1")
                         .build())
                     .build())
@@ -173,11 +175,15 @@ class YT776Test {
 
     @Test
     void testTwoAttributes() throws DataValidationFailedException {
-        writeAndCommit(containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        writeAndCommit(ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
-                    .withChild(leafSetBuilder().withNodeIdentifier(ATTRIBUTES)
+                    .withChild(ImmutableNodes.newSystemLeafSetBuilder()
+                        .withNodeIdentifier(ATTRIBUTES)
                         .withChildValue("object1")
                         .withChildValue("object2")
                         .build())
@@ -188,11 +194,15 @@ class YT776Test {
 
     @Test
     void testThreeAttributes() throws DataValidationFailedException {
-        final var mod = write(containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        final var mod = write(ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
-                    .withChild(leafSetBuilder().withNodeIdentifier(ATTRIBUTES)
+                    .withChild(ImmutableNodes.newSystemLeafSetBuilder()
+                        .withNodeIdentifier(ATTRIBUTES)
                         .withChildValue("object1")
                         .withChildValue("object2")
                         .withChildValue("object3")
@@ -203,24 +213,31 @@ class YT776Test {
 
         final var ex = assertThrows(MinMaxElementsValidationFailedException.class, mod::ready);
         assertEquals("(yt776)attributes has too many elements (3), can have at most 2", ex.getMessage());
-        assertTooManyElements(ex);
+        ListConstraintsValidation.assertTooManyElements(ex);
     }
 
     @Test
     void testEmptyAndMergeOne() throws DataValidationFailedException {
         final var mod = dataTree.takeSnapshot().newModification();
-        mod.write(YangInstanceIdentifier.of(BOX), containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        mod.write(YangInstanceIdentifier.of(BOX), ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
                     .build())
                 .build())
             .build());
-        mod.merge(YangInstanceIdentifier.of(BOX), containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        mod.merge(YangInstanceIdentifier.of(BOX), ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
-                    .withChild(leafSetBuilder().withNodeIdentifier(ATTRIBUTES)
+                    .withChild(ImmutableNodes.newSystemLeafSetBuilder()
+                        .withNodeIdentifier(ATTRIBUTES)
                         .withChildValue("object1")
                         .build())
                     .build())
@@ -233,18 +250,25 @@ class YT776Test {
     @Test
     void testEmptyAndMergeOneWithListTouched() throws DataValidationFailedException {
         final var mod = dataTree.takeSnapshot().newModification();
-        mod.write(YangInstanceIdentifier.of(BOX), containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        mod.write(YangInstanceIdentifier.of(BOX), ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
                     .build())
                 .build())
             .build());
-        mod.merge(YangInstanceIdentifier.of(BOX), containerBuilder().withNodeIdentifier(BOX)
-            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
-                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+        mod.merge(YangInstanceIdentifier.of(BOX), ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(BOX)
+            .withChild(ImmutableNodes.newSystemMapBuilder()
+                .withNodeIdentifier(OBJECT_LIST)
+                .addChild(ImmutableNodes.newMapEntryBuilder()
+                    .withNodeIdentifier(OBJECT_ITEM)
                     .withChild(OBJECT_ID_LEAF)
-                    .withChild(leafSetBuilder().withNodeIdentifier(ATTRIBUTES)
+                    .withChild(ImmutableNodes.newSystemLeafSetBuilder()
+                        .withNodeIdentifier(ATTRIBUTES)
                         .withChildValue("object1")
                         .build())
                     .build())
@@ -260,13 +284,15 @@ class YT776Test {
     void testDisappearInChoice() throws DataValidationFailedException {
         var mod = dataTree.takeSnapshot().newModification();
         // Initialize choice with list
-        mod.write(YangInstanceIdentifier.of(BOX), containerBuilder()
+        mod.write(YangInstanceIdentifier.of(BOX), ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(BOX)
-            .withChild(choiceBuilder().withNodeIdentifier(ANY_OF)
-                .withChild(mapBuilder().withNodeIdentifier(SOME_LIST_ID)
-                    .withChild(mapEntryBuilder()
+            .withChild(ImmutableNodes.newChoiceBuilder()
+                .withNodeIdentifier(ANY_OF)
+                .withChild(ImmutableNodes.newSystemMapBuilder()
+                    .withNodeIdentifier(SOME_LIST_ID)
+                    .withChild(ImmutableNodes.newMapEntryBuilder()
                         .withNodeIdentifier(SOME_LIST_ITEM)
-                        .withChild(leafBuilder().withNodeIdentifier(SOME_LEAF_ID).withValue("foo").build())
+                        .withChild(ImmutableNodes.leafNode(SOME_LEAF_ID, "foo"))
                         .build())
                     .build())
                 .build())
@@ -276,8 +302,7 @@ class YT776Test {
         // Now delete the single item, causing the list to fizzle, while creating the alterinative case
         mod = dataTree.takeSnapshot().newModification();
         mod.delete(YangInstanceIdentifier.of(BOX, ANY_OF, SOME_LIST_ID, SOME_LIST_ITEM));
-        mod.write(YangInstanceIdentifier.of(BOX, ANY_OF, SOME_LEAF_ID),
-            leafBuilder().withNodeIdentifier(SOME_LEAF_ID).withValue("foo").build());
+        mod.write(YangInstanceIdentifier.of(BOX, ANY_OF, SOME_LEAF_ID), ImmutableNodes.leafNode(SOME_LEAF_ID, "foo"));
 
         commit(mod);
     }