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%2FListConstraintsValidation.java;h=b60b3747c8ba6a315036fbf199fce5e39b57ea2f;hb=08269969f9007ec9a0ee15b4f1b9f4c0730d2412;hp=7a3fa56c84e4fd5c08078599de42ea9d28a7cafc;hpb=0dd8380053ea0ce481290cc14c11ceedc197f1d8;p=yangtools.git diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java index 7a3fa56c84..b60b3747c8 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java @@ -7,13 +7,16 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -38,11 +41,10 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLe import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListNodeBuilder; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class ListConstraintsValidation { - private static final String CONSTRAINTS_VALIDATION_TEST_YANG = "/list-constraints-validation-test-model.yang"; private static final QName MASTER_CONTAINER_QNAME = QName.create( "urn:opendaylight:params:xml:ns:yang:list-constraints-validation-test-model", "2015-02-02", "master-container"); @@ -68,13 +70,22 @@ public class ListConstraintsValidation { private static final YangInstanceIdentifier UNKEYED_LIST_PATH = YangInstanceIdentifier .builder(MASTER_CONTAINER_PATH).node(UNKEYED_LIST_QNAME).build(); - private SchemaContext schemaContext; + private static EffectiveModelContext schemaContext; + private DataTree inMemoryDataTree; + @BeforeClass + public static void beforeClass() { + schemaContext = YangParserTestUtils.parseYangResource("/list-constraints-validation-test-model.yang"); + } + + @AfterClass + public static void afterClass() { + schemaContext = null; + } + @Before - public void prepare() { - schemaContext = createTestContext(); - assertNotNull("Schema context must not be null.", schemaContext); + public void prepare() throws DataValidationFailedException { inMemoryDataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL, schemaContext); final DataTreeSnapshot initialDataTreeSnapshot = inMemoryDataTree.takeSnapshot(); @@ -85,10 +96,6 @@ public class ListConstraintsValidation { inMemoryDataTree.commit(inMemoryDataTree.prepare(modificationTree)); } - public static SchemaContext createTestContext() { - return YangParserTestUtils.parseYangResource(CONSTRAINTS_VALIDATION_TEST_YANG); - } - @Test public void minMaxListTestPass() throws DataValidationFailedException { @@ -104,7 +111,6 @@ public class ListConstraintsValidation { final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification(); modificationTree.write(MIN_MAX_LIST_PATH, mapNode1); modificationTree.merge(MIN_MAX_LIST_PATH, mapNode2); - // TODO: check why write and then merge on list commits only "bar" child modificationTree.ready(); inMemoryDataTree.validate(modificationTree); @@ -114,7 +120,7 @@ public class ListConstraintsValidation { final DataTreeSnapshot snapshotAfterCommit = inMemoryDataTree.takeSnapshot(); final Optional> minMaxListRead = snapshotAfterCommit.readNode(MIN_MAX_LIST_PATH); assertTrue(minMaxListRead.isPresent()); - assertTrue(((NormalizedNodeContainer) minMaxListRead.get()).getValue().size() == 2); + assertEquals(2, ((NormalizedNodeContainer) minMaxListRead.get()).size()); } @Test(expected = DataValidationFailedException.class) @@ -145,7 +151,7 @@ public class ListConstraintsValidation { DataTreeSnapshot snapshotAfterCommit = inMemoryDataTree.takeSnapshot(); Optional> minMaxListRead = snapshotAfterCommit.readNode(MIN_MAX_LIST_PATH); assertTrue(minMaxListRead.isPresent()); - assertTrue(((NormalizedNodeContainer) minMaxListRead.get()).getValue().size() == 2); + assertEquals(2, ((NormalizedNodeContainer) minMaxListRead.get()).size()); modificationTree = inMemoryDataTree.takeSnapshot().newModification(); modificationTree.write(gooPath, gooEntryNode); @@ -158,7 +164,7 @@ public class ListConstraintsValidation { snapshotAfterCommit = inMemoryDataTree.takeSnapshot(); minMaxListRead = snapshotAfterCommit.readNode(MIN_MAX_LIST_PATH); assertTrue(minMaxListRead.isPresent()); - assertTrue(((NormalizedNodeContainer) minMaxListRead.get()).getValue().size() == 3); + assertEquals(3, ((NormalizedNodeContainer) minMaxListRead.get()).size()); modificationTree = inMemoryDataTree.takeSnapshot().newModification(); @@ -203,14 +209,13 @@ public class ListConstraintsValidation { final Optional> leafList = ((NormalizedNodeContainer) masterContainer.get()) .getChild(new NodeIdentifier(MIN_MAX_LEAF_LIST_QNAME)); assertTrue(leafList.isPresent()); - assertTrue(leafList.get().getValue().size() == 2); + assertEquals(2, leafList.get().size()); } - @Test(expected = DataValidationFailedException.class) - public void minMaxLeafListFail() throws DataValidationFailedException { + @Test + public void minMaxLeafListFail() { final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification(); - final NodeWithValue fooPath = new NodeWithValue<>(MIN_MAX_LIST_QNAME, "foo"); final NodeWithValue barPath = new NodeWithValue<>(MIN_MAX_LIST_QNAME, "bar"); final NodeWithValue gooPath = new NodeWithValue<>(MIN_MAX_LIST_QNAME, "goo"); final NodeWithValue fuuPath = new NodeWithValue<>(MIN_MAX_LIST_QNAME, "fuu"); @@ -233,9 +238,10 @@ public class ListConstraintsValidation { modificationTree.write(MIN_MAX_LEAF_LIST_PATH.node(barPath), barLeafSetEntry); modificationTree.merge(MIN_MAX_LEAF_LIST_PATH.node(gooPath), gooLeafSetEntry); modificationTree.write(MIN_MAX_LEAF_LIST_PATH.node(fuuPath), fuuLeafSetEntry); - modificationTree.ready(); - inMemoryDataTree.validate(modificationTree); + assertEquals("(urn:opendaylight:params:xml:ns:yang:list-constraints-validation-test-model?" + + "revision=2015-02-02)min-max-leaf-list has too many elements (4), can have at most 3", + assertThrows(MinMaxElementsValidationFailedException.class, () -> modificationTree.ready()).getMessage()); } @Test @@ -265,8 +271,8 @@ public class ListConstraintsValidation { assertTrue(((UnkeyedListNode) unkeyedListRead.get()).getSize() == 1); } - @Test(expected = DataValidationFailedException.class) - public void unkeyedListTestFail() throws DataValidationFailedException { + @Test + public void unkeyedListTestFail() { final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification(); final UnkeyedListEntryNode foo = ImmutableUnkeyedListEntryNodeBuilder.create() @@ -283,8 +289,8 @@ public class ListConstraintsValidation { .withValue(unkeyedEntries).build(); modificationTree.write(UNKEYED_LIST_PATH, unkeyedListNode); - modificationTree.ready(); - - inMemoryDataTree.validate(modificationTree); + assertEquals("(urn:opendaylight:params:xml:ns:yang:list-constraints-validation-test-model?" + + "revision=2015-02-02)unkeyed-list has too many elements (2), can have at most 1", + assertThrows(MinMaxElementsValidationFailedException.class, () -> modificationTree.ready()).getMessage()); } }