X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fmodel%2Fparser%2Fimpl%2FYangModelParserTest.java;h=a42a4fa7494f167bdac812de641849dd4d4215b6;hp=e02d8321696983aff6457b8b1822931e70985c1d;hb=e028e5b6177c47d08f4f2da677759c4665da3f84;hpb=e2ef18c530a0bb668d7806c419fea95edd5aae53 diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserTest.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserTest.java index e02d832169..a42a4fa749 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserTest.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserTest.java @@ -1,229 +1,235 @@ -/* - * 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 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 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 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 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 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 expectedRegularExpressions = new HashSet(); - expectedRegularExpressions.add("[a-k]*"); - expectedRegularExpressions.add("[b-u]*"); - expectedRegularExpressions.add("[e-z]*"); - - Set actualRegularExpressions = new HashSet(); - List patterns = baseTypeCast.getPatterns(); - for(PatternConstraint pc : patterns) { - actualRegularExpressions.add(pc.getRegularExpression()); - } - - assertEquals(expectedRegularExpressions, actualRegularExpressions); - } - - @Test - public void testTypedefLengthsResolving() { - Set 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 actualLengths = baseTypeCast.getLengthStatements(); - assertEquals(1, actualLengths.size()); - assertEquals(7L, actualLengths.get(0).getMin()); - assertEquals(10L, actualLengths.get(0).getMax()); - } - - @Test - public void testTypeDef() { - Set 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 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 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 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()); - } - -} +/* + * 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.IntegerTypeDefinition; +import org.opendaylight.controller.yang.model.api.type.PatternConstraint; +import org.opendaylight.controller.yang.model.api.type.RangeConstraint; +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 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 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 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 ranges = baseTypeCast.getRangeStatements(); + assertEquals(2, ranges.size()); + RangeConstraint range = ranges.get(0); + assertEquals(2L, range.getMin()); + assertEquals(20L, range.getMax()); + } + + @Test + public void testTypedefPatternsResolving() { + Set 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 expectedRegularExpressions = new HashSet(); + expectedRegularExpressions.add("[a-k]*"); + expectedRegularExpressions.add("[b-u]*"); + expectedRegularExpressions.add("[e-z]*"); + + Set actualRegularExpressions = new HashSet(); + List patterns = baseTypeCast.getPatterns(); + for(PatternConstraint pc : patterns) { + actualRegularExpressions.add(pc.getRegularExpression()); + } + + assertEquals(expectedRegularExpressions, actualRegularExpressions); + } + + @Test + public void testTypedefLengthsResolving() { + Set 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-int-leaf"); + TypeDefinition baseType = testleaf.getType().getBaseType(); + assertTrue(testleaf.getType().getBaseType() instanceof IntegerTypeDefinition); + Int32 baseTypeCast = (Int32)baseType; + + Long[][] expectedRanges = new Long[3][2]; + expectedRanges[0] = new Long[]{10L, 20L}; + expectedRanges[1] = new Long[]{12L, 18L}; + expectedRanges[2] = new Long[]{14L, 16L}; + + List actualRanges = baseTypeCast.getRangeStatements(); + assertEquals(3, actualRanges.size()); + for(int i = 0; i < actualRanges.size(); i++) { + assertEquals(expectedRanges[i][0], actualRanges.get(i).getMin()); + assertEquals(expectedRanges[i][1], actualRanges.get(i).getMax()); + } + } + + @Test + public void testTypeDef() { + Set 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 ranges = baseTypeCast.getRangeStatements(); + assertEquals(2, ranges.size()); + RangeConstraint range = ranges.get(0); + assertEquals(2L, range.getMin()); + assertEquals(20L, range.getMax()); + } + + @Test + public void testTypedefDecimal1() { + Set 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 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()); + } + +}