MinMaxElementsValidation needs to deal with lists disappearing
[yangtools.git] / yang / yang-data-impl / src / test / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / YT776Test.java
index 512baa5dea41f3d015815d9069c8428920a7d6e7..322e6837a9ab19867e850013039e3db8768c1f7b 100644 (file)
@@ -37,13 +37,19 @@ public class YT776Test {
     private static final NodeIdentifier BOX = new NodeIdentifier(QName.create(MODULE, "box"));
     private static final QName OBJECT = QName.create(MODULE, "object");
     private static final QName OBJECT_ID = QName.create(MODULE, "object-id");
-    private static final NodeIdentifier OBJECT_LIST = new NodeIdentifier(QName.create(MODULE, "object"));
+    private static final NodeIdentifier OBJECT_LIST = new NodeIdentifier(OBJECT);
     private static final NodeIdentifierWithPredicates OBJECT_ITEM = new NodeIdentifierWithPredicates(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 NodeIdentifier ATTRIBUTES = new NodeIdentifier(QName.create(MODULE, "attributes"));
 
+    private static final QName NESTED = QName.create(MODULE, "nested");
+    private static final QName NESTED_ATTRIBUTE = QName.create(MODULE, "nested-attribute");
+    private static final NodeIdentifier NESTED_LIST = new NodeIdentifier(NESTED);
+    private static final NodeIdentifierWithPredicates NESTED_ITEM = new NodeIdentifierWithPredicates(NESTED,
+        ImmutableMap.of(NESTED_ATTRIBUTE, "foo"));
+
     private static SchemaContext SCHEMA_CONTEXT;
 
     private DataTree dataTree;
@@ -180,6 +186,32 @@ public class YT776Test {
         commit(mod);
     }
 
+    @Test
+    public void testEmptyAndMergeOneWithListTouched() throws DataValidationFailedException {
+        final DataTreeModification mod = dataTree.takeSnapshot().newModification();
+        mod.write(YangInstanceIdentifier.create(BOX), containerBuilder().withNodeIdentifier(BOX)
+            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
+                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+                    .withChild(OBJECT_ID_LEAF)
+                    .build())
+                .build())
+            .build());
+        mod.merge(YangInstanceIdentifier.create(BOX), containerBuilder().withNodeIdentifier(BOX)
+            .withChild(mapBuilder().withNodeIdentifier(OBJECT_LIST)
+                .addChild(mapEntryBuilder().withNodeIdentifier(OBJECT_ITEM)
+                    .withChild(OBJECT_ID_LEAF)
+                    .withChild(leafSetBuilder().withNodeIdentifier(ATTRIBUTES)
+                        .withChildValue("object1")
+                        .build())
+                    .build())
+                .build())
+            .build());
+
+        mod.delete(YangInstanceIdentifier.create(BOX, OBJECT_LIST, OBJECT_ITEM, NESTED_LIST, NESTED_ITEM));
+
+        commit(mod);
+    }
+
     private DataTreeModification write(final ContainerNode data) throws DataValidationFailedException {
         final DataTreeModification mod = dataTree.takeSnapshot().newModification();
         mod.write(YangInstanceIdentifier.create(BOX), data);