X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Ftree%2FYT776Test.java;h=2e8f7d7b9645110059ab0335edae6890d8d77de1;hb=2fb9e7cb0aaeac0792f918190803b2041c192611;hp=322e6837a9ab19867e850013039e3db8768c1f7b;hpb=e105c7c319b6e694103d0fc03886e522337829af;p=yangtools.git diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java index 322e6837a9..2e8f7d7b96 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java @@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.data.impl.schema.tree; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; +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; @@ -30,7 +31,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; public class YT776Test { private static final QName MODULE = QName.create("yt776", "yt776"); @@ -38,7 +39,7 @@ public class YT776Test { 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(OBJECT); - private static final NodeIdentifierWithPredicates OBJECT_ITEM = new NodeIdentifierWithPredicates(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(); @@ -47,16 +48,23 @@ public class YT776Test { 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, + private static final NodeIdentifierWithPredicates NESTED_ITEM = NodeIdentifierWithPredicates.of(NESTED, ImmutableMap.of(NESTED_ATTRIBUTE, "foo")); - private static SchemaContext SCHEMA_CONTEXT; + private static final NodeIdentifier ANY_OF = new NodeIdentifier(QName.create(MODULE, "any-of")); + private static final QName SOME_LEAF = QName.create(MODULE, "some-leaf"); + private static final NodeIdentifier SOME_LEAF_ID = new NodeIdentifier(SOME_LEAF); + private static final QName SOME_LIST = QName.create(MODULE, "some-list"); + private static final NodeIdentifier SOME_LIST_ID = new NodeIdentifier(SOME_LIST); + private static final NodeIdentifierWithPredicates SOME_LIST_ITEM = NodeIdentifierWithPredicates.of(SOME_LIST, + ImmutableMap.of(SOME_LEAF, "foo")); + private static EffectiveModelContext SCHEMA_CONTEXT; private DataTree dataTree; @BeforeClass public static void beforeClass() { - SCHEMA_CONTEXT = TestModel.createTestContext("/yt776/yt776.yang"); + SCHEMA_CONTEXT = TestModel.createTestContext("/yt776.yang"); } @AfterClass @@ -212,6 +220,31 @@ public class YT776Test { commit(mod); } + @Test + public void testDisappearInChoice() throws DataValidationFailedException { + DataTreeModification mod = dataTree.takeSnapshot().newModification(); + // Initialize choice with list + mod.write(YangInstanceIdentifier.create(BOX), containerBuilder().withNodeIdentifier(BOX) + .withChild(choiceBuilder().withNodeIdentifier(ANY_OF) + .withChild(mapBuilder().withNodeIdentifier(SOME_LIST_ID) + .withChild(mapEntryBuilder() + .withNodeIdentifier(SOME_LIST_ITEM) + .withChild(leafBuilder().withNodeIdentifier(SOME_LEAF_ID).withValue("foo").build()) + .build()) + .build()) + .build()) + .build()); + commit(mod); + + // Now delete the single item, causing the list to fizzle, while creating the alterinative case + mod = dataTree.takeSnapshot().newModification(); + mod.delete(YangInstanceIdentifier.create(BOX, ANY_OF, SOME_LIST_ID, SOME_LIST_ITEM)); + mod.write(YangInstanceIdentifier.create(BOX, ANY_OF, SOME_LEAF_ID), + leafBuilder().withNodeIdentifier(SOME_LEAF_ID).withValue("foo").build()); + + commit(mod); + } + private DataTreeModification write(final ContainerNode data) throws DataValidationFailedException { final DataTreeModification mod = dataTree.takeSnapshot().newModification(); mod.write(YangInstanceIdentifier.create(BOX), data);