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%2Fparser%2Fimpl%2FTypesResolutionTest.java;h=8f49fecc8e473f735a5d59d9b53db927493fa628;hp=71d14a57343c10245795581159711d715b021821;hb=0df356fd6dd1e24f82a4afaa6c824517d354fb20;hpb=06aa5ce746e29a3760688b2ef2817f50bec5ea7a diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java index 71d14a5734..8f49fecc8e 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.yang.parser.impl; import static org.junit.Assert.*; +import java.io.FileNotFoundException; import java.net.URI; import java.util.List; import java.util.Set; @@ -19,25 +20,26 @@ import org.opendaylight.controller.yang.common.QName; import org.opendaylight.controller.yang.model.api.IdentitySchemaNode; import org.opendaylight.controller.yang.model.api.LeafSchemaNode; import org.opendaylight.controller.yang.model.api.Module; +import org.opendaylight.controller.yang.model.api.Status; import org.opendaylight.controller.yang.model.api.TypeDefinition; import org.opendaylight.controller.yang.model.api.type.BitsTypeDefinition.Bit; import org.opendaylight.controller.yang.model.api.type.EnumTypeDefinition.EnumPair; 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.StringTypeDefinition; import org.opendaylight.controller.yang.model.util.BitsType; import org.opendaylight.controller.yang.model.util.EnumerationType; import org.opendaylight.controller.yang.model.util.ExtendedType; import org.opendaylight.controller.yang.model.util.IdentityrefType; import org.opendaylight.controller.yang.model.util.InstanceIdentifier; -import org.opendaylight.controller.yang.model.util.StringType; import org.opendaylight.controller.yang.model.util.UnionType; public class TypesResolutionTest { private Set testedModules; @Before - public void init() { - testedModules = TestUtils.loadModules("src/test/resources/types"); + public void init() throws FileNotFoundException { + testedModules = TestUtils.loadModules(getClass().getResource("/types").getPath()); } @Test @@ -47,10 +49,8 @@ public class TypesResolutionTest { assertEquals(14, typedefs.size()); TypeDefinition type = TestUtils.findTypedef(typedefs, "ip-version"); - assertTrue(type.getDescription().contains( - "This value represents the version of the IP protocol.")); - assertTrue(type.getReference().contains( - "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification")); + assertTrue(type.getDescription().contains("This value represents the version of the IP protocol.")); + assertTrue(type.getReference().contains("RFC 2460: Internet Protocol, Version 6 (IPv6) Specification")); EnumerationType enumType = (EnumerationType) type.getBaseType(); List values = enumType.getValues(); @@ -59,21 +59,17 @@ public class TypesResolutionTest { EnumPair value0 = values.get(0); assertEquals("unknown", value0.getName()); assertEquals(0, (int) value0.getValue()); - assertEquals( - "An unknown or unspecified version of the Internet protocol.", - value0.getDescription()); + assertEquals("An unknown or unspecified version of the Internet protocol.", value0.getDescription()); EnumPair value1 = values.get(1); assertEquals("ipv4", value1.getName()); assertEquals(1, (int) value1.getValue()); - assertEquals("The IPv4 protocol as defined in RFC 791.", - value1.getDescription()); + assertEquals("The IPv4 protocol as defined in RFC 791.", value1.getDescription()); EnumPair value2 = values.get(2); assertEquals("ipv6", value2.getName()); assertEquals(2, (int) value2.getValue()); - assertEquals("The IPv6 protocol as defined in RFC 2460.", - value2.getDescription()); + assertEquals("The IPv6 protocol as defined in RFC 2460.", value2.getDescription()); } @Test @@ -89,27 +85,22 @@ public class TypesResolutionTest { EnumPair value0 = values.get(0); assertEquals("unknown", value0.getName()); assertEquals(0, (int) value0.getValue()); - assertEquals( - "An unknown or unspecified version of the Internet protocol.", - value0.getDescription()); + assertEquals("An unknown or unspecified version of the Internet protocol.", value0.getDescription()); EnumPair value1 = values.get(1); assertEquals("ipv4", value1.getName()); assertEquals(19, (int) value1.getValue()); - assertEquals("The IPv4 protocol as defined in RFC 791.", - value1.getDescription()); + assertEquals("The IPv4 protocol as defined in RFC 791.", value1.getDescription()); EnumPair value2 = values.get(2); assertEquals("ipv6", value2.getName()); assertEquals(7, (int) value2.getValue()); - assertEquals("The IPv6 protocol as defined in RFC 2460.", - value2.getDescription()); + assertEquals("The IPv6 protocol as defined in RFC 2460.", value2.getDescription()); EnumPair value3 = values.get(3); assertEquals("default", value3.getName()); assertEquals(20, (int) value3.getValue()); - assertEquals("default ip", - value3.getDescription()); + assertEquals("default ip", value3.getDescription()); } @Test @@ -121,82 +112,75 @@ public class TypesResolutionTest { List> unionTypes = baseType.getTypes(); ExtendedType ipv4 = (ExtendedType) unionTypes.get(0); - StringType ipv4Base = (StringType) ipv4.getBaseType(); + assertTrue(ipv4.getBaseType() instanceof StringTypeDefinition); String expectedPattern = "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}" - + "([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" - + "(%[\\p{N}\\p{L}]+)?"; - assertEquals(expectedPattern, ipv4Base.getPatterns().get(0) - .getRegularExpression()); + + "([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" + "(%[\\p{N}\\p{L}]+)?"; + assertEquals(expectedPattern, ipv4.getPatterns().get(0).getRegularExpression()); + + TypeDefinition ipv4Address = TestUtils.findTypedef(typedefs, "ipv4-address"); + assertEquals(ipv4Address, ipv4); ExtendedType ipv6 = (ExtendedType) unionTypes.get(1); - StringType ipv6Base = (StringType) ipv6.getBaseType(); - List ipv6Patterns = ipv6Base.getPatterns(); + assertTrue(ipv6.getBaseType() instanceof StringTypeDefinition); + List ipv6Patterns = ipv6.getPatterns(); expectedPattern = "((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}" - + "((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|" - + "(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}" - + "(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))" - + "(%[\\p{N}\\p{L}]+)?"; - assertEquals(expectedPattern, ipv6Patterns.get(0) - .getRegularExpression()); - - expectedPattern = "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|" - + "((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)" + "(%.+)?"; - assertEquals(expectedPattern, ipv6Patterns.get(1) - .getRegularExpression()); + + "((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|" + "(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}" + + "(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))" + "(%[\\p{N}\\p{L}]+)?"; + assertEquals(expectedPattern, ipv6Patterns.get(0).getRegularExpression()); + + TypeDefinition ipv6Address = TestUtils.findTypedef(typedefs, "ipv6-address"); + assertEquals(ipv6Address, ipv6); + + expectedPattern = "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|" + "((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)" + + "(%.+)?"; + assertEquals(expectedPattern, ipv6Patterns.get(1).getRegularExpression()); } @Test public void testDomainName() { Module tested = TestUtils.findModule(testedModules, "ietf-inet-types"); Set> typedefs = tested.getTypeDefinitions(); - TypeDefinition type = TestUtils.findTypedef(typedefs, "domain-name"); - StringType baseType = (StringType) type.getBaseType(); - List patterns = baseType.getPatterns(); + ExtendedType type = (ExtendedType) TestUtils.findTypedef(typedefs, "domain-name"); + assertTrue(type.getBaseType() instanceof StringTypeDefinition); + List patterns = type.getPatterns(); assertEquals(1, patterns.size()); String expectedPattern = "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*" - + "([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)" - + "|\\."; + + "([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)" + "|\\."; assertEquals(expectedPattern, patterns.get(0).getRegularExpression()); - List lengths = baseType.getLengthStatements(); + List lengths = type.getLengths(); assertEquals(1, lengths.size()); - LengthConstraint length = baseType.getLengthStatements().get(0); + LengthConstraint length = type.getLengths().get(0); assertEquals(1L, length.getMin()); assertEquals(253L, length.getMax()); } @Test public void testInstanceIdentifier1() { - Module tested = TestUtils - .findModule(testedModules, "custom-types-test"); - LeafSchemaNode leaf = (LeafSchemaNode) tested - .getDataChildByName("inst-id-leaf1"); + Module tested = TestUtils.findModule(testedModules, "custom-types-test"); + LeafSchemaNode leaf = (LeafSchemaNode) tested.getDataChildByName("inst-id-leaf1"); InstanceIdentifier leafType = (InstanceIdentifier) leaf.getType(); assertFalse(leafType.requireInstance()); } @Test public void testInstanceIdentifier2() { - Module tested = TestUtils - .findModule(testedModules, "custom-types-test"); - LeafSchemaNode leaf = (LeafSchemaNode) tested - .getDataChildByName("inst-id-leaf2"); + Module tested = TestUtils.findModule(testedModules, "custom-types-test"); + LeafSchemaNode leaf = (LeafSchemaNode) tested.getDataChildByName("inst-id-leaf2"); InstanceIdentifier leafType = (InstanceIdentifier) leaf.getType(); assertTrue(leafType.requireInstance()); } @Test public void testIdentity() { - Module tested = TestUtils - .findModule(testedModules, "custom-types-test"); + Module tested = TestUtils.findModule(testedModules, "custom-types-test"); Set identities = tested.getIdentities(); IdentitySchemaNode testedIdentity = null; for (IdentitySchemaNode id : identities) { if (id.getQName().getLocalName().equals("crypto-alg")) { testedIdentity = id; IdentitySchemaNode baseIdentity = id.getBaseIdentity(); - assertEquals("crypto-base", baseIdentity.getQName() - .getLocalName()); + assertEquals("crypto-base", baseIdentity.getQName().getLocalName()); assertNull(baseIdentity.getBaseIdentity()); } } @@ -205,10 +189,8 @@ public class TypesResolutionTest { @Test public void testBitsType1() { - Module tested = TestUtils - .findModule(testedModules, "custom-types-test"); - LeafSchemaNode leaf = (LeafSchemaNode) tested - .getDataChildByName("mybits"); + Module tested = TestUtils.findModule(testedModules, "custom-types-test"); + LeafSchemaNode leaf = (LeafSchemaNode) tested.getDataChildByName("mybits"); BitsType leafType = (BitsType) leaf.getType(); List bits = leafType.getBits(); assertEquals(3, bits.size()); @@ -228,11 +210,9 @@ public class TypesResolutionTest { @Test public void testBitsType2() { - Module tested = TestUtils - .findModule(testedModules, "custom-types-test"); + Module tested = TestUtils.findModule(testedModules, "custom-types-test"); Set> typedefs = tested.getTypeDefinitions(); - TypeDefinition testedType = TestUtils.findTypedef(typedefs, - "access-operations-type"); + TypeDefinition testedType = TestUtils.findTypedef(typedefs, "access-operations-type"); BitsType bitsType = (BitsType) testedType.getBaseType(); List bits = bitsType.getBits(); @@ -254,25 +234,20 @@ public class TypesResolutionTest { assertEquals(502L, (long) bit4.getPosition()); } - @Test public void testIanaTimezones() { Module tested = TestUtils.findModule(testedModules, "iana-timezones"); Set> typedefs = tested.getTypeDefinitions(); - TypeDefinition testedType = TestUtils.findTypedef(typedefs, - "iana-timezone"); - /* - // FIXME: Refactor sources not to be timezone specific. - String expectedDesc = "A timezone location as defined by the IANA timezone\n database (http://www.iana.org/time-zones)"; - assertEquals(expectedDesc, testedType.getDescription()); + TypeDefinition testedType = TestUtils.findTypedef(typedefs, "iana-timezone"); + + String expectedDesc = "A timezone location as defined by the IANA timezone"; + assertTrue(testedType.getDescription().contains(expectedDesc)); assertNull(testedType.getReference()); assertEquals(Status.CURRENT, testedType.getStatus()); - */ + QName testedTypeQName = testedType.getQName(); - assertEquals(URI.create("urn:ietf:params:xml:ns:yang:iana-timezones"), - testedTypeQName.getNamespace()); - assertEquals(TestUtils.createDate("2012-07-09"), - testedTypeQName.getRevision()); + assertEquals(URI.create("urn:ietf:params:xml:ns:yang:iana-timezones"), testedTypeQName.getNamespace()); + assertEquals(TestUtils.createDate("2012-07-09"), testedTypeQName.getRevision()); assertEquals("ianatz", testedTypeQName.getPrefix()); assertEquals("iana-timezone", testedTypeQName.getLocalName()); @@ -283,59 +258,52 @@ public class TypesResolutionTest { EnumPair enum168 = values.get(168); assertEquals("America/Danmarkshavn", enum168.getName()); assertEquals(168, (int) enum168.getValue()); - assertEquals("east coast, north of Scoresbysund", - enum168.getDescription()); + assertEquals("east coast, north of Scoresbysund", enum168.getDescription()); EnumPair enum374 = values.get(374); assertEquals("America/Indiana/Winamac", enum374.getName()); assertEquals(374, (int) enum374.getValue()); - assertEquals("Eastern Time - Indiana - Pulaski County", - enum374.getDescription()); + assertEquals("Eastern Time - Indiana - Pulaski County", enum374.getDescription()); } @Test public void testObjectId128() { Module tested = TestUtils.findModule(testedModules, "ietf-yang-types"); Set> typedefs = tested.getTypeDefinitions(); - ExtendedType testedType = (ExtendedType) TestUtils.findTypedef( - typedefs, "object-identifier-128"); + ExtendedType testedType = (ExtendedType) TestUtils.findTypedef(typedefs, "object-identifier-128"); + + List patterns = testedType.getPatterns(); + assertEquals(1, patterns.size()); + PatternConstraint pattern = patterns.get(0); + assertEquals("\\d*(\\.\\d*){1,127}", pattern.getRegularExpression()); QName testedTypeQName = testedType.getQName(); - assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-yang-types"), - testedTypeQName.getNamespace()); - assertEquals(TestUtils.createDate("2010-09-24"), - testedTypeQName.getRevision()); + assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-yang-types"), testedTypeQName.getNamespace()); + assertEquals(TestUtils.createDate("2010-09-24"), testedTypeQName.getRevision()); assertEquals("yang", testedTypeQName.getPrefix()); assertEquals("object-identifier-128", testedTypeQName.getLocalName()); ExtendedType testedTypeBase = (ExtendedType) testedType.getBaseType(); + patterns = testedTypeBase.getPatterns(); + assertEquals(1, patterns.size()); - List patterns = testedTypeBase.getPatterns(); - assertEquals(2, patterns.size()); - PatternConstraint pattern1 = patterns.get(0); - assertEquals("\\d*(\\.\\d*){1,127}", pattern1.getRegularExpression()); - PatternConstraint pattern2 = patterns.get(1); - assertEquals( - "(([0-1](\\.[1-3]?[0-9]))|(2\\.(0|([1-9]\\d*))))(\\.(0|([1-9]\\d*)))*", - pattern2.getRegularExpression()); + pattern = patterns.get(0); + assertEquals("(([0-1](\\.[1-3]?[0-9]))|(2\\.(0|([1-9]\\d*))))(\\.(0|([1-9]\\d*)))*", + pattern.getRegularExpression()); QName testedTypeBaseQName = testedTypeBase.getQName(); - assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-yang-types"), - testedTypeBaseQName.getNamespace()); - assertEquals(TestUtils.createDate("2010-09-24"), - testedTypeBaseQName.getRevision()); + assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-yang-types"), testedTypeBaseQName.getNamespace()); + assertEquals(TestUtils.createDate("2010-09-24"), testedTypeBaseQName.getRevision()); assertEquals("yang", testedTypeBaseQName.getPrefix()); assertEquals("object-identifier", testedTypeBaseQName.getLocalName()); } @Test public void testIdentityref() { - Module tested = TestUtils - .findModule(testedModules, "custom-types-test"); + Module tested = TestUtils.findModule(testedModules, "custom-types-test"); Set> typedefs = tested.getTypeDefinitions(); - TypeDefinition testedType = TestUtils.findTypedef(typedefs, - "service-type-ref"); - IdentityrefType baseType = (IdentityrefType)testedType.getBaseType(); + TypeDefinition testedType = TestUtils.findTypedef(typedefs, "service-type-ref"); + IdentityrefType baseType = (IdentityrefType) testedType.getBaseType(); QName identity = baseType.getIdentity(); assertEquals(URI.create("urn:simple.container.demo"), identity.getNamespace()); assertEquals(TestUtils.createDate("2012-04-16"), identity.getRevision());