Add MinMaxElementsValidationFailedException
[yangtools.git] / yang / yang-data-impl / src / test / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / ListConstraintsValidation.java
index bf108956f555e360b279d92a67cd0cc92e2117ab..b60b3747c8ba6a315036fbf199fce5e39b57ea2f 100644 (file)
@@ -8,14 +8,15 @@
 package org.opendaylight.yangtools.yang.data.impl.schema.tree;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 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;
@@ -40,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");
@@ -70,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();
@@ -87,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 {
 
@@ -115,7 +120,7 @@ public class ListConstraintsValidation {
         final DataTreeSnapshot snapshotAfterCommit = inMemoryDataTree.takeSnapshot();
         final Optional<NormalizedNode<?, ?>> 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)
@@ -146,7 +151,7 @@ public class ListConstraintsValidation {
         DataTreeSnapshot snapshotAfterCommit = inMemoryDataTree.takeSnapshot();
         Optional<NormalizedNode<?, ?>> 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);
@@ -159,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();
 
@@ -204,7 +209,7 @@ public class ListConstraintsValidation {
         final Optional<NormalizedNodeContainer<?, ?, ?>> 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
@@ -234,14 +239,9 @@ public class ListConstraintsValidation {
         modificationTree.merge(MIN_MAX_LEAF_LIST_PATH.node(gooPath), gooLeafSetEntry);
         modificationTree.write(MIN_MAX_LEAF_LIST_PATH.node(fuuPath), fuuLeafSetEntry);
 
-        try {
-            modificationTree.ready();
-            fail("Should have failed with IAE");
-        } catch (IllegalArgumentException e) {
-            assertEquals("Node (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",
-                    e.getMessage());
-        }
+        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
@@ -289,12 +289,8 @@ public class ListConstraintsValidation {
                 .withValue(unkeyedEntries).build();
 
         modificationTree.write(UNKEYED_LIST_PATH, unkeyedListNode);
-        try {
-            modificationTree.ready();
-            fail("Should have failed with IAE");
-        } catch (IllegalArgumentException e) {
-            assertEquals("Node (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", e.getMessage());
-        }
+        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());
     }
 }