Bug 5899: Cardinality check incorrectly limited to 1 for "must" 03/39103/1
authorFilip Gregor <fgregor@cisco.com>
Thu, 19 May 2016 11:54:45 +0000 (13:54 +0200)
committerFilip Gregor <fgregor@cisco.com>
Thu, 19 May 2016 11:55:54 +0000 (13:55 +0200)
updated cardinality for must statement in
refine statement, added test

Change-Id: I3c31cc902d05a87259970a856a8f0e7efc20c67c
Signed-off-by: Filip Gregor <fgregor@cisco.com>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RefineStatementImpl.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug5899Test.java [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug5899/foo.yang [new file with mode: 0644]

index 38ccd10ed90daeb75c97d1f672b1533fafec22f8..7eebba0e016f1d6e452f88fa53e2260ec0f777c7 100644 (file)
@@ -8,6 +8,8 @@
 
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
+import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
+
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -30,7 +32,7 @@ public class RefineStatementImpl extends AbstractDeclaredStatement<SchemaNodeIde
             .add(Rfc6020Mapping.CONFIG, 0, 1)
             .add(Rfc6020Mapping.MANDATORY, 0, 1)
             .add(Rfc6020Mapping.PRESENCE, 0, 1)
-            .add(Rfc6020Mapping.MUST, 0, 1)
+            .add(Rfc6020Mapping.MUST, 0, MAX)
             .add(Rfc6020Mapping.MIN_ELEMENTS, 0, 1)
             .add(Rfc6020Mapping.MAX_ELEMENTS, 0, 1)
             .build(SubstatementValidator.SpecialCase.NOTNULL);
diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug5899Test.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug5899Test.java
new file mode 100644 (file)
index 0000000..248fc21
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.yangtools.yang.stmt;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.io.FileNotFoundException;
+import java.net.URISyntaxException;
+import org.junit.Test;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
+import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
+
+public class Bug5899Test {
+
+    @Test
+    public void testBug5899() throws ReactorException, SourceException, FileNotFoundException,
+            URISyntaxException {
+        final SchemaContext schemaContext = StmtTestUtils.parseYangSources("/bugs/bug5899");
+        assertNotNull(schemaContext);
+    }
+}
\ No newline at end of file
diff --git a/yang/yang-parser-impl/src/test/resources/bugs/bug5899/foo.yang b/yang/yang-parser-impl/src/test/resources/bugs/bug5899/foo.yang
new file mode 100644 (file)
index 0000000..f302af2
--- /dev/null
@@ -0,0 +1,32 @@
+module foo {
+    yang-version 1;
+
+    namespace "org.namespace.test.foo";
+    prefix "foo";
+
+    description "foo";
+
+    revision "2016-01-01" {
+        description "Initial version.";
+    }
+
+    grouping test-grouping {
+        leaf test-leaf {
+            type string;
+        }
+    }
+
+    container test-container {
+        uses test-grouping {
+            refine test-leaf {
+                description "refined description";
+                must "test-leaf != 'not test message 1'" {
+                    error-message "not test message 1";
+                }
+                must "test-leaf != 'not test message 2'" {
+                    error-message "not test message 2";
+                }
+            }
+        }
+    }
+}
\ No newline at end of file