Fix get{Min,Max}Elements() usage
[yangtools.git] / yang / yang-parser-rfc7950 / src / test / java / org / opendaylight / yangtools / yang / stmt / YangParserTest.java
index 4c8298bd19b939746bf021ba7d0ade14ac1192ab..517e58fb733d464279379d124b81879a8743fa39 100644 (file)
@@ -26,16 +26,14 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
-import java.util.SortedMap;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.Revision;
-import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -55,6 +53,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition;
@@ -99,7 +98,7 @@ public class YangParserTest {
         assertEquals(FOO.getNamespace(), foo.getNamespace());
         assertEquals("foo", foo.getPrefix());
 
-        final Set<ModuleImport> imports = foo.getImports();
+        final Collection<? extends ModuleImport> imports = foo.getImports();
         assertEquals(2, imports.size());
 
         final ModuleImport import2 = TestUtils.findImport(imports, "br");
@@ -140,10 +139,10 @@ public class YangParserTest {
         // assertNull(constraints.getWhenCondition());
         assertEquals(0, ifEntry.getMustConstraints().size());
         ElementCountConstraint constraints = ifEntry.getElementCountConstraint().get();
-        assertEquals(1, constraints.getMinElements().intValue());
-        assertEquals(11, constraints.getMaxElements().intValue());
+        assertEquals((Object) 1, constraints.getMinElements());
+        assertEquals((Object) 11, constraints.getMaxElements());
         // test AugmentationTarget args
-        final Set<AugmentationSchemaNode> availableAugmentations = ifEntry.getAvailableAugmentations();
+        final Collection<? extends AugmentationSchemaNode> availableAugmentations = ifEntry.getAvailableAugmentations();
         assertEquals(2, availableAugmentations.size());
         // test ListSchemaNode args
         final List<QName> expectedKey = new ArrayList<>();
@@ -233,7 +232,7 @@ public class YangParserTest {
         List<PatternConstraint> patterns = type.getPatternConstraints();
         assertEquals(1, patterns.size());
         PatternConstraint pattern = patterns.iterator().next();
-        assertEquals("^[e-z]*$", pattern.getJavaPatternString());
+        assertEquals("^(?:[e-z]*)$", pattern.getJavaPatternString());
         assertEquals(1, type.getLengthConstraint().get().getAllowedRanges().asRanges().size());
 
         final StringTypeDefinition baseType1 = type.getBaseType();
@@ -245,7 +244,7 @@ public class YangParserTest {
         patterns = baseType1.getPatternConstraints();
         assertEquals(1, patterns.size());
         pattern = patterns.iterator().next();
-        assertEquals("^[b-u]*$", pattern.getJavaPatternString());
+        assertEquals("^(?:[b-u]*)$", pattern.getJavaPatternString());
         assertEquals(1, baseType1.getLengthConstraint().get().getAllowedRanges().asRanges().size());
 
         final StringTypeDefinition baseType2 = baseType1.getBaseType();
@@ -268,7 +267,7 @@ public class YangParserTest {
         patterns = baseType3.getPatternConstraints();
         assertEquals(1, patterns.size());
         pattern = patterns.iterator().next();
-        assertEquals("^[a-k]*$", pattern.getJavaPatternString());
+        assertEquals("^(?:[a-k]*)$", pattern.getJavaPatternString());
         final RangeSet<Integer> baseType3Lengths = baseType3.getLengthConstraint().get().getAllowedRanges();
         assertEquals(1, baseType3Lengths.asRanges().size());
         length = baseType3Lengths.span();
@@ -280,36 +279,16 @@ public class YangParserTest {
 
     @Test
     public void testTypedefInvalidPatternsResolving() {
-        final LeafSchemaNode invalidPatternStringLeaf = (LeafSchemaNode) foo
-                .getDataChildByName(QName.create(foo.getQNameModule(), "invalid-pattern-string-leaf"));
-        StringTypeDefinition type = (StringTypeDefinition) invalidPatternStringLeaf.getType();
-        assertEquals(QName.create(BAR, "invalid-string-pattern"), type.getQName());
-        assertEquals(Optional.empty(), type.getUnits());
-        assertEquals(Optional.empty(), type.getDefaultValue());
-        List<PatternConstraint> patterns = type.getPatternConstraints();
-        assertTrue(patterns.isEmpty());
-
-        final LeafSchemaNode invalidDirectStringPatternDefLeaf = (LeafSchemaNode) foo
-                .getDataChildByName(QName.create(foo.getQNameModule(), "invalid-direct-string-pattern-def-leaf"));
-        type = (StringTypeDefinition) invalidDirectStringPatternDefLeaf.getType();
-
-        assertEquals(QName.create(YangConstants.RFC6020_YANG_MODULE, "string"), type.getQName());
-        assertEquals(Optional.empty(), type.getUnits());
-        assertEquals(Optional.empty(), type.getDefaultValue());
-        patterns = type.getPatternConstraints();
-        assertTrue(patterns.isEmpty());
-
         final LeafSchemaNode multiplePatternStringLeaf = (LeafSchemaNode) foo
                 .getDataChildByName(QName.create(foo.getQNameModule(), "multiple-pattern-string-leaf"));
-        type = (StringTypeDefinition) multiplePatternStringLeaf.getType();
+        StringTypeDefinition type = (StringTypeDefinition) multiplePatternStringLeaf.getType();
         assertEquals(QName.create(BAR, "multiple-pattern-string"), type.getQName());
         assertEquals(Optional.empty(), type.getUnits());
         assertEquals(Optional.empty(), type.getDefaultValue());
-        patterns = type.getPatternConstraints();
-        assertTrue(!patterns.isEmpty());
-        assertEquals(1, patterns.size());
-        final PatternConstraint pattern = patterns.iterator().next();
-        assertEquals("^[e-z]*$", pattern.getJavaPatternString());
+        List<PatternConstraint> patterns = type.getPatternConstraints();
+        assertEquals(2, patterns.size());
+        assertEquals("^(?:[A-Z]*-%22!\\^\\^)$", patterns.get(0).getJavaPatternString());
+        assertEquals("^(?:[e-z]*)$", patterns.get(1).getJavaPatternString());
         assertEquals(1, type.getLengthConstraint().get().getAllowedRanges().asRanges().size());
 
         final LeafSchemaNode multiplePatternDirectStringDefLeaf = (LeafSchemaNode) foo
@@ -319,20 +298,11 @@ public class YangParserTest {
         assertEquals(Optional.empty(), type.getUnits());
         assertEquals(Optional.empty(), type.getDefaultValue());
         patterns = type.getPatternConstraints();
-        assertTrue(!patterns.isEmpty());
-        assertEquals(2, patterns.size());
+        assertEquals(3, patterns.size());
 
-        boolean isEZPattern = false;
-        boolean isADPattern = false;
-        for (final PatternConstraint patternConstraint : patterns) {
-            if (patternConstraint.getJavaPatternString().equals("^[e-z]*$")) {
-                isEZPattern = true;
-            } else if (patternConstraint.getJavaPatternString().equals("^[a-d]*$")) {
-                isADPattern = true;
-            }
-        }
-        assertTrue(isEZPattern);
-        assertTrue(isADPattern);
+        assertEquals("^(?:[e-z]*)$", patterns.get(0).getJavaPatternString());
+        assertEquals("^(?:[A-Z]*-%22!\\^\\^})$", patterns.get(1).getJavaPatternString());
+        assertEquals("^(?:[a-d]*)$", patterns.get(2).getJavaPatternString());
     }
 
     @Test
@@ -369,7 +339,7 @@ public class YangParserTest {
         final List<PatternConstraint> patterns = baseType2.getPatternConstraints();
         assertEquals(1, patterns.size());
         final PatternConstraint pattern = patterns.iterator().next();
-        assertEquals("^[a-k]*$", pattern.getJavaPatternString());
+        assertEquals("^(?:[a-k]*)$", pattern.getJavaPatternString());
         final RangeSet<Integer> baseType3Lengths = baseType2.getLengthConstraint().get().getAllowedRanges();
         assertEquals(1, baseType3Lengths.asRanges().size());
         length = baseType3Lengths.span();
@@ -524,11 +494,11 @@ public class YangParserTest {
             QName.create(foo.getQNameModule(), "transfer"));
         final ChoiceSchemaNode how = (ChoiceSchemaNode) transfer.getDataChildByName(
             QName.create(foo.getQNameModule(), "how"));
-        final SortedMap<QName, ChoiceCaseNode> cases = how.getCases();
+        final Collection<? extends CaseSchemaNode> cases = how.getCases();
         assertEquals(5, cases.size());
-        ChoiceCaseNode input = null;
-        ChoiceCaseNode output = null;
-        for (final ChoiceCaseNode caseNode : cases.values()) {
+        CaseSchemaNode input = null;
+        CaseSchemaNode output = null;
+        for (final CaseSchemaNode caseNode : cases) {
             if ("input".equals(caseNode.getQName().getLocalName())) {
                 input = caseNode;
             } else if ("output".equals(caseNode.getQName().getLocalName())) {
@@ -543,16 +513,12 @@ public class YangParserTest {
 
     @Test
     public void testDeviation() {
-        final Set<Deviation> deviations = foo.getDeviations();
+        final Collection<? extends Deviation> deviations = foo.getDeviations();
         assertEquals(1, deviations.size());
         final Deviation dev = deviations.iterator().next();
         assertEquals(Optional.of("system/user ref"), dev.getReference());
 
-        final SchemaPath expectedPath = SchemaPath.create(true,
-            QName.create(BAR, "interfaces"),
-            QName.create(BAR, "ifEntry"));
-
-        assertEquals(expectedPath, dev.getTargetPath());
+        assertEquals(Absolute.of(QName.create(BAR, "interfaces"), QName.create(BAR, "ifEntry")), dev.getTargetPath());
         assertEquals(DeviateKind.ADD, dev.getDeviates().iterator().next().getDeviateType());
     }
 
@@ -560,24 +526,24 @@ public class YangParserTest {
     public void testUnknownNode() {
         final ContainerSchemaNode network = (ContainerSchemaNode) baz.getDataChildByName(
             QName.create(baz.getQNameModule(), "network"));
-        final List<UnknownSchemaNode> unknownNodes = network.getUnknownSchemaNodes();
+        final Collection<? extends UnknownSchemaNode> unknownNodes = network.getUnknownSchemaNodes();
         assertEquals(1, unknownNodes.size());
-        final UnknownSchemaNode unknownNode = unknownNodes.get(0);
+        final UnknownSchemaNode unknownNode = unknownNodes.iterator().next();
         assertNotNull(unknownNode.getNodeType());
         assertEquals("point", unknownNode.getNodeParameter());
     }
 
     @Test
     public void testFeature() {
-        final Set<FeatureDefinition> features = baz.getFeatures();
-        assertEquals(1, features.size());
+        final Collection<? extends FeatureDefinition> features = baz.getFeatures();
+        assertEquals(3, features.size());
     }
 
     @Test
     public void testExtension() {
-        final List<ExtensionDefinition> extensions = baz.getExtensionSchemaNodes();
+        final Collection<? extends ExtensionDefinition> extensions = baz.getExtensionSchemaNodes();
         assertEquals(1, extensions.size());
-        final ExtensionDefinition extension = extensions.get(0);
+        final ExtensionDefinition extension = extensions.iterator().next();
         assertEquals("name", extension.getArgument());
         assertEquals(
             Optional.of("Takes as argument a name string. Makes the code generator use the given name in the #define."),
@@ -587,7 +553,7 @@ public class YangParserTest {
 
     @Test
     public void testNotification() {
-        final Set<NotificationDefinition> notifications = baz.getNotifications();
+        final Collection<? extends NotificationDefinition> notifications = baz.getNotifications();
         assertEquals(1, notifications.size());
 
         final NotificationDefinition notification = notifications.iterator().next();
@@ -615,7 +581,7 @@ public class YangParserTest {
 
     @Test
     public void testRpc() {
-        final Set<RpcDefinition> rpcs = baz.getRpcs();
+        final Collection<? extends RpcDefinition> rpcs = baz.getRpcs();
         assertEquals(1, rpcs.size());
 
         final RpcDefinition rpc = rpcs.iterator().next();
@@ -625,7 +591,7 @@ public class YangParserTest {
 
     @Test
     public void testTypePath() throws ParseException {
-        final Set<TypeDefinition<?>> types = bar.getTypeDefinitions();
+        final Collection<? extends TypeDefinition<?>> types = bar.getTypeDefinitions();
 
         // int32-ext1
         final Int32TypeDefinition int32ext1 = (Int32TypeDefinition) TestUtils.findTypedef(types, "int32-ext1");
@@ -645,7 +611,7 @@ public class YangParserTest {
 
     @Test
     public void testTypePath2() throws ParseException {
-        final Set<TypeDefinition<?>> types = bar.getTypeDefinitions();
+        final Collection<? extends TypeDefinition<?>> types = bar.getTypeDefinitions();
 
         // my-decimal-type
         final DecimalTypeDefinition myDecType = (DecimalTypeDefinition) TestUtils.findTypedef(types, "my-decimal-type");