Update the API generation code and code generation sample
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / test / java / org / opendaylight / controller / yang / model / parser / impl / YangModelParserTest.java
index e02d8321696983aff6457b8b1822931e70985c1d..a42a4fa7494f167bdac812de641849dd4d4215b6 100644 (file)
-/*
- * Copyright (c) 2013 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.controller.yang.model.parser.impl;
-
-import static org.junit.Assert.*;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.yang.model.api.AugmentationSchema;
-import org.opendaylight.controller.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.controller.yang.model.api.LeafSchemaNode;
-import org.opendaylight.controller.yang.model.api.ListSchemaNode;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
-import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
-import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.api.type.StringTypeDefinition;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.model.util.Decimal64;
-import org.opendaylight.controller.yang.model.util.Int32;
-import org.opendaylight.controller.yang.model.util.StringType;
-
-public class YangModelParserTest {
-
-    private final String testFile1 = "src/test/resources/model/testfile1.yang";
-    private final String testFile2 = "src/test/resources/model/testfile2.yang";
-    private YangModelParser tested;
-
-    @Before
-    public void init() {
-        tested = new YangModelParserImpl();
-    }
-
-    @Test
-    public void testAugment() {
-        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
-        assertEquals(2, modules.size());
-
-        Module m2 = null;
-        for(Module m : modules) {
-            if(m.getName().equals("types2")) {
-                m2 = m;
-            }
-        }
-        assertNotNull(m2);
-
-        AugmentationSchema augment = m2.getAugmentations().iterator().next();
-        assertNotNull(augment);
-    }
-
-    @Test
-    public void testAugmentTarget() {
-        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
-        assertEquals(2, modules.size());
-
-        Module m1 = null;
-        for(Module m : modules) {
-            if(m.getName().equals("types1")) {
-                m1 = m;
-            }
-        }
-        assertNotNull(m1);
-
-        ContainerSchemaNode container = (ContainerSchemaNode)m1.getDataChildByName("interfaces");
-        assertNotNull(container);
-
-        ListSchemaNode list = (ListSchemaNode)container.getDataChildByName("ifEntry");
-        assertNotNull(list);
-        assertEquals(1, list.getAvailableAugmentations().size());
-
-        LeafSchemaNode leaf = (LeafSchemaNode)list.getDataChildByName("ds0ChannelNumber");
-        assertNotNull(leaf);
-    }
-
-    @Test
-    public void testTypedefRangesResolving() {
-        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
-        assertEquals(2, modules.size());
-
-        Module m1 = null;
-        for(Module m : modules) {
-            if(m.getName().equals("types1")) {
-                m1 = m;
-            }
-        }
-        assertNotNull(m1);
-
-        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("testleaf");
-        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
-        assertTrue(testleaf.getType().getBaseType() instanceof Int32);
-        Int32 baseTypeCast = (Int32)baseType;
-        List<RangeConstraint> ranges = baseTypeCast.getRangeStatements();
-        assertEquals(1, ranges.size());
-        RangeConstraint range = ranges.get(0);
-        assertEquals(11L, range.getMin());
-        assertEquals(20L, range.getMax());
-    }
-
-    @Test
-    public void testTypedefPatternsResolving() {
-        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
-        assertEquals(2, modules.size());
-
-        Module m1 = null;
-        for(Module m : modules) {
-            if(m.getName().equals("types1")) {
-                m1 = m;
-            }
-        }
-        assertNotNull(m1);
-
-        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-string-leaf");
-        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
-        assertTrue(testleaf.getType().getBaseType() instanceof StringType);
-        StringType baseTypeCast = (StringType)baseType;
-
-        Set<String> expectedRegularExpressions = new HashSet<String>();
-        expectedRegularExpressions.add("[a-k]*");
-        expectedRegularExpressions.add("[b-u]*");
-        expectedRegularExpressions.add("[e-z]*");
-
-        Set<String> actualRegularExpressions = new HashSet<String>();
-        List<PatternConstraint> patterns = baseTypeCast.getPatterns();
-        for(PatternConstraint pc : patterns) {
-            actualRegularExpressions.add(pc.getRegularExpression());
-        }
-
-        assertEquals(expectedRegularExpressions, actualRegularExpressions);
-    }
-
-    @Test
-    public void testTypedefLengthsResolving() {
-        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
-        assertEquals(2, modules.size());
-
-        Module m1 = null;
-        for(Module m : modules) {
-            if(m.getName().equals("types1")) {
-                m1 = m;
-            }
-        }
-        assertNotNull(m1);
-
-        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("leaf-with-length");
-        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
-        assertTrue(testleaf.getType().getBaseType() instanceof StringTypeDefinition);
-        StringType baseTypeCast = (StringType)baseType;
-
-        List<LengthConstraint> actualLengths = baseTypeCast.getLengthStatements();
-        assertEquals(1, actualLengths.size());
-        assertEquals(7L, actualLengths.get(0).getMin());
-        assertEquals(10L, actualLengths.get(0).getMax());
-    }
-
-    @Test
-    public void testTypeDef() {
-        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
-        assertEquals(2, modules.size());
-
-        Module m2 = null;
-        for(Module m : modules) {
-            if(m.getName().equals("types2")) {
-                m2 = m;
-            }
-        }
-        assertNotNull(m2);
-
-        LeafSchemaNode testleaf = (LeafSchemaNode)m2.getDataChildByName("nested-type-leaf");
-        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
-        assertTrue(testleaf.getType().getBaseType() instanceof Int32);
-        Int32 baseTypeCast = (Int32)baseType;
-        List<RangeConstraint> ranges = baseTypeCast.getRangeStatements();
-        assertEquals(1, ranges.size());
-        RangeConstraint range = ranges.get(0);
-        assertEquals(11L, range.getMin());
-        assertEquals(20L, range.getMax());
-    }
-
-    @Test
-    public void testTypedefDecimal1() {
-        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
-        assertEquals(2, modules.size());
-
-        Module m1 = null;
-        for(Module m : modules) {
-            if(m.getName().equals("types1")) {
-                m1 = m;
-            }
-        }
-        assertNotNull(m1);
-
-        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-decimal-leaf");
-        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
-        assertTrue(testleaf.getType().getBaseType() instanceof Decimal64);
-        Decimal64 baseTypeCast = (Decimal64)baseType;
-        assertEquals(4, (int)baseTypeCast.getFractionDigits());
-    }
-
-    @Test
-    public void testTypedefDecimal2() {
-        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);
-        assertEquals(2, modules.size());
-
-        Module m1 = null;
-        for(Module m : modules) {
-            if(m.getName().equals("types1")) {
-                m1 = m;
-            }
-        }
-        assertNotNull(m1);
-
-        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-decimal-leaf2");
-        TypeDefinition<?> baseType = testleaf.getType().getBaseType();
-        assertTrue(testleaf.getType().getBaseType() instanceof Decimal64);
-        Decimal64 baseTypeCast = (Decimal64)baseType;
-        assertEquals(5, (int)baseTypeCast.getFractionDigits());
-    }
-
-}
+/*\r
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.controller.yang.model.parser.impl;\r
+\r
+import static org.junit.Assert.*;\r
+\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.opendaylight.controller.yang.model.api.AugmentationSchema;\r
+import org.opendaylight.controller.yang.model.api.ContainerSchemaNode;\r
+import org.opendaylight.controller.yang.model.api.LeafSchemaNode;\r
+import org.opendaylight.controller.yang.model.api.ListSchemaNode;\r
+import org.opendaylight.controller.yang.model.api.Module;\r
+import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
+import org.opendaylight.controller.yang.model.api.type.IntegerTypeDefinition;\r
+import org.opendaylight.controller.yang.model.api.type.PatternConstraint;\r
+import org.opendaylight.controller.yang.model.api.type.RangeConstraint;\r
+import org.opendaylight.controller.yang.model.parser.api.YangModelParser;\r
+import org.opendaylight.controller.yang.model.util.Decimal64;\r
+import org.opendaylight.controller.yang.model.util.Int32;\r
+import org.opendaylight.controller.yang.model.util.StringType;\r
+\r
+public class YangModelParserTest {\r
+\r
+    private final String testFile1 = "src/test/resources/model/testfile1.yang";\r
+    private final String testFile2 = "src/test/resources/model/testfile2.yang";\r
+    private YangModelParser tested;\r
+\r
+    @Before\r
+    public void init() {\r
+        tested = new YangModelParserImpl();\r
+    }\r
+\r
+    @Test\r
+    public void testAugment() {\r
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);\r
+        assertEquals(2, modules.size());\r
+\r
+        Module m2 = null;\r
+        for(Module m : modules) {\r
+            if(m.getName().equals("types2")) {\r
+                m2 = m;\r
+            }\r
+        }\r
+        assertNotNull(m2);\r
+\r
+        AugmentationSchema augment = m2.getAugmentations().iterator().next();\r
+        assertNotNull(augment);\r
+    }\r
+\r
+    @Test\r
+    public void testAugmentTarget() {\r
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);\r
+        assertEquals(2, modules.size());\r
+\r
+        Module m1 = null;\r
+        for(Module m : modules) {\r
+            if(m.getName().equals("types1")) {\r
+                m1 = m;\r
+            }\r
+        }\r
+        assertNotNull(m1);\r
+\r
+        ContainerSchemaNode container = (ContainerSchemaNode)m1.getDataChildByName("interfaces");\r
+        assertNotNull(container);\r
+\r
+        ListSchemaNode list = (ListSchemaNode)container.getDataChildByName("ifEntry");\r
+        assertNotNull(list);\r
+        assertEquals(1, list.getAvailableAugmentations().size());\r
+\r
+        LeafSchemaNode leaf = (LeafSchemaNode)list.getDataChildByName("ds0ChannelNumber");\r
+        assertNotNull(leaf);\r
+    }\r
+\r
+    @Test\r
+    public void testTypedefRangesResolving() {\r
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);\r
+        assertEquals(2, modules.size());\r
+\r
+        Module m1 = null;\r
+        for(Module m : modules) {\r
+            if(m.getName().equals("types1")) {\r
+                m1 = m;\r
+            }\r
+        }\r
+        assertNotNull(m1);\r
+\r
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("testleaf");\r
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();\r
+        assertTrue(testleaf.getType().getBaseType() instanceof Int32);\r
+        Int32 baseTypeCast = (Int32)baseType;\r
+        List<RangeConstraint> ranges = baseTypeCast.getRangeStatements();\r
+        assertEquals(2, ranges.size());\r
+        RangeConstraint range = ranges.get(0);\r
+        assertEquals(2L, range.getMin());\r
+        assertEquals(20L, range.getMax());\r
+    }\r
+\r
+    @Test\r
+    public void testTypedefPatternsResolving() {\r
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);\r
+        assertEquals(2, modules.size());\r
+\r
+        Module m1 = null;\r
+        for(Module m : modules) {\r
+            if(m.getName().equals("types1")) {\r
+                m1 = m;\r
+            }\r
+        }\r
+        assertNotNull(m1);\r
+\r
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-string-leaf");\r
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();\r
+        assertTrue(testleaf.getType().getBaseType() instanceof StringType);\r
+        StringType baseTypeCast = (StringType)baseType;\r
+\r
+        Set<String> expectedRegularExpressions = new HashSet<String>();\r
+        expectedRegularExpressions.add("[a-k]*");\r
+        expectedRegularExpressions.add("[b-u]*");\r
+        expectedRegularExpressions.add("[e-z]*");\r
+\r
+        Set<String> actualRegularExpressions = new HashSet<String>();\r
+        List<PatternConstraint> patterns = baseTypeCast.getPatterns();\r
+        for(PatternConstraint pc : patterns) {\r
+            actualRegularExpressions.add(pc.getRegularExpression());\r
+        }\r
+\r
+        assertEquals(expectedRegularExpressions, actualRegularExpressions);\r
+    }\r
+\r
+    @Test\r
+    public void testTypedefLengthsResolving() {\r
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);\r
+        assertEquals(2, modules.size());\r
+\r
+        Module m1 = null;\r
+        for(Module m : modules) {\r
+            if(m.getName().equals("types1")) {\r
+                m1 = m;\r
+            }\r
+        }\r
+        assertNotNull(m1);\r
+\r
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-int-leaf");\r
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();\r
+        assertTrue(testleaf.getType().getBaseType() instanceof IntegerTypeDefinition);\r
+        Int32 baseTypeCast = (Int32)baseType;\r
+\r
+        Long[][] expectedRanges = new Long[3][2];\r
+        expectedRanges[0] = new Long[]{10L, 20L};\r
+        expectedRanges[1] = new Long[]{12L, 18L};\r
+        expectedRanges[2] = new Long[]{14L, 16L};\r
+\r
+        List<RangeConstraint> actualRanges = baseTypeCast.getRangeStatements();\r
+        assertEquals(3, actualRanges.size());\r
+        for(int i = 0; i < actualRanges.size(); i++) {\r
+            assertEquals(expectedRanges[i][0], actualRanges.get(i).getMin());\r
+            assertEquals(expectedRanges[i][1], actualRanges.get(i).getMax());\r
+        }\r
+    }\r
+\r
+    @Test\r
+    public void testTypeDef() {\r
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);\r
+        assertEquals(2, modules.size());\r
+\r
+        Module m2 = null;\r
+        for(Module m : modules) {\r
+            if(m.getName().equals("types2")) {\r
+                m2 = m;\r
+            }\r
+        }\r
+        assertNotNull(m2);\r
+\r
+        LeafSchemaNode testleaf = (LeafSchemaNode)m2.getDataChildByName("nested-type-leaf");\r
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();\r
+        assertTrue(testleaf.getType().getBaseType() instanceof Int32);\r
+        Int32 baseTypeCast = (Int32)baseType;\r
+        List<RangeConstraint> ranges = baseTypeCast.getRangeStatements();\r
+        assertEquals(2, ranges.size());\r
+        RangeConstraint range = ranges.get(0);\r
+        assertEquals(2L, range.getMin());\r
+        assertEquals(20L, range.getMax());\r
+    }\r
+\r
+    @Test\r
+    public void testTypedefDecimal1() {\r
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);\r
+        assertEquals(2, modules.size());\r
+\r
+        Module m1 = null;\r
+        for(Module m : modules) {\r
+            if(m.getName().equals("types1")) {\r
+                m1 = m;\r
+            }\r
+        }\r
+        assertNotNull(m1);\r
+\r
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-decimal-leaf");\r
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();\r
+        assertTrue(testleaf.getType().getBaseType() instanceof Decimal64);\r
+        Decimal64 baseTypeCast = (Decimal64)baseType;\r
+        assertEquals(4, (int)baseTypeCast.getFractionDigits());\r
+    }\r
+\r
+    @Test\r
+    public void testTypedefDecimal2() {\r
+        Set<Module> modules = tested.parseYangModels(testFile1, testFile2);\r
+        assertEquals(2, modules.size());\r
+\r
+        Module m1 = null;\r
+        for(Module m : modules) {\r
+            if(m.getName().equals("types1")) {\r
+                m1 = m;\r
+            }\r
+        }\r
+        assertNotNull(m1);\r
+\r
+        LeafSchemaNode testleaf = (LeafSchemaNode)m1.getDataChildByName("test-decimal-leaf2");\r
+        TypeDefinition<?> baseType = testleaf.getType().getBaseType();\r
+        assertTrue(testleaf.getType().getBaseType() instanceof Decimal64);\r
+        Decimal64 baseTypeCast = (Decimal64)baseType;\r
+        assertEquals(5, (int)baseTypeCast.getFractionDigits());\r
+    }\r
+\r
+}\r