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;
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");
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();
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
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);