import static org.junit.Assert.fail;
import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Range;
import java.net.URI;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
public class TypesResolutionTest {
- private Set<Module> testedModules;
+ private SchemaContext context;
@Before
public void init() throws Exception {
- final StatementStreamSource yangFile = sourceForResource("/types/custom-types-test@2012-4-4.yang");
+ final StatementStreamSource yangFile = sourceForResource("/types/custom-types-test@2012-04-04.yang");
final StatementStreamSource yangFileDependency1 = sourceForResource("/ietf/iana-timezones@2012-07-09.yang");
final StatementStreamSource yangFileDependency2 = sourceForResource("/ietf/ietf-inet-types@2010-09-24.yang");
final StatementStreamSource yangFileDependency3 = sourceForResource("/ietf/ietf-yang-types@2010-09-24.yang");
-
- testedModules = TestUtils.parseYangSources(yangFile, yangFileDependency1, yangFileDependency2,
- yangFileDependency3).getModules();
- assertEquals(4, testedModules.size());
+ context = TestUtils.parseYangSources(yangFile, yangFileDependency1, yangFileDependency2, yangFileDependency3);
+ assertEquals(4, context.getModules().size());
}
@Test
public void testIPVersion() {
- Module tested = TestUtils.findModule(testedModules, "ietf-inet-types");
+ Module tested = TestUtils.findModule(context, "ietf-inet-types").get();
Set<TypeDefinition<?>> typedefs = tested.getTypeDefinitions();
assertEquals(14, typedefs.size());
@Test
public void testEnumeration() {
- Module tested = TestUtils.findModule(testedModules, "custom-types-test");
+ Module tested = TestUtils.findModule(context, "custom-types-test").get();
Set<TypeDefinition<?>> typedefs = tested.getTypeDefinitions();
TypeDefinition<?> type = TestUtils.findTypedef(typedefs, "ip-version");
@Test
public void testIpAddress() {
- Module tested = TestUtils.findModule(testedModules, "ietf-inet-types");
+ Module tested = TestUtils.findModule(context, "ietf-inet-types").get();
Set<TypeDefinition<?>> typedefs = tested.getTypeDefinitions();
TypeDefinition<?> type = TestUtils.findTypedef(typedefs, "ip-address");
UnionTypeDefinition baseType = (UnionTypeDefinition) type.getBaseType();
@Test
public void testDomainName() {
- Module tested = TestUtils.findModule(testedModules, "ietf-inet-types");
+ Module tested = TestUtils.findModule(context, "ietf-inet-types").get();
Set<TypeDefinition<?>> typedefs = tested.getTypeDefinitions();
StringTypeDefinition type = (StringTypeDefinition) TestUtils.findTypedef(typedefs, "domain-name");
assertNotNull(type.getBaseType());
+ "([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)" + "|\\.$";
assertEquals(expectedPattern, patterns.get(0).getRegularExpression());
- List<LengthConstraint> lengths = type.getLengthConstraints();
- assertEquals(1, lengths.size());
- LengthConstraint length = type.getLengthConstraints().get(0);
- assertEquals(Integer.valueOf(1), length.getMin());
- assertEquals(Integer.valueOf(253), length.getMax());
+ LengthConstraint lengths = type.getLengthConstraint().get();
+ assertEquals(1, lengths.getAllowedRanges().asRanges().size());
+ Range<Integer> length = lengths.getAllowedRanges().span();
+ assertEquals(Integer.valueOf(1), length.lowerEndpoint());
+ assertEquals(Integer.valueOf(253), length.upperEndpoint());
}
@Test
public void testInstanceIdentifier1() {
- Module tested = TestUtils.findModule(testedModules, "custom-types-test");
+ Module tested = TestUtils.findModule(context, "custom-types-test").get();
LeafSchemaNode leaf = (LeafSchemaNode) tested.getDataChildByName(
QName.create(tested.getQNameModule(), "inst-id-leaf1"));
InstanceIdentifierTypeDefinition leafType = (InstanceIdentifierTypeDefinition) leaf.getType();
@Test
public void testInstanceIdentifier2() {
- Module tested = TestUtils.findModule(testedModules, "custom-types-test");
+ Module tested = TestUtils.findModule(context, "custom-types-test").get();
LeafSchemaNode leaf = (LeafSchemaNode) tested.getDataChildByName(
QName.create(tested.getQNameModule(), "inst-id-leaf2"));
InstanceIdentifierTypeDefinition leafType = (InstanceIdentifierTypeDefinition) leaf.getType();
@Test
public void testIdentity() {
- Module tested = TestUtils.findModule(testedModules, "custom-types-test");
+ Module tested = TestUtils.findModule(context, "custom-types-test").get();
Set<IdentitySchemaNode> identities = tested.getIdentities();
assertEquals(5, identities.size());
IdentitySchemaNode cryptoAlg = null;
}
}
assertNotNull(cryptoAlg);
- IdentitySchemaNode baseIdentity = cryptoAlg.getBaseIdentity();
+ IdentitySchemaNode baseIdentity = Iterables.getOnlyElement(cryptoAlg.getBaseIdentities());
assertEquals("crypto-base", baseIdentity.getQName().getLocalName());
assertTrue(cryptoAlg.getDerivedIdentities().isEmpty());
- assertNull(baseIdentity.getBaseIdentity());
+ assertTrue(baseIdentity.getBaseIdentities().isEmpty());
assertNotNull(cryptoBase);
- assertNull(cryptoBase.getBaseIdentity());
+ assertTrue(cryptoBase.getBaseIdentities().isEmpty());
assertEquals(3, cryptoBase.getDerivedIdentities().size());
assertNotNull(cryptoId);
@Test
public void testBitsType1() {
- Module tested = TestUtils.findModule(testedModules, "custom-types-test");
+ Module tested = TestUtils.findModule(context, "custom-types-test").get();
LeafSchemaNode leaf = (LeafSchemaNode) tested.getDataChildByName(
QName.create(tested.getQNameModule(), "mybits"));
BitsTypeDefinition leafType = (BitsTypeDefinition) leaf.getType();
@Test
public void testBitsType2() {
- Module tested = TestUtils.findModule(testedModules, "custom-types-test");
+ Module tested = TestUtils.findModule(context, "custom-types-test").get();
Set<TypeDefinition<?>> typedefs = tested.getTypeDefinitions();
TypeDefinition<?> testedType = TestUtils.findTypedef(typedefs, "access-operations-type");
@Test
public void testIanaTimezones() {
- Module tested = TestUtils.findModule(testedModules, "iana-timezones");
+ Module tested = TestUtils.findModule(context, "iana-timezones").get();
Set<TypeDefinition<?>> typedefs = tested.getTypeDefinitions();
TypeDefinition<?> testedType = TestUtils.findTypedef(typedefs, "iana-timezone");
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(Optional.of(Revision.valueOf("2012-07-09")), testedTypeQName.getRevision());
assertEquals("iana-timezone", testedTypeQName.getLocalName());
EnumTypeDefinition enumType = (EnumTypeDefinition) testedType.getBaseType();
@Test
public void testObjectId128() {
- Module tested = TestUtils.findModule(testedModules, "ietf-yang-types");
+ Module tested = TestUtils.findModule(context, "ietf-yang-types").get();
Set<TypeDefinition<?>> typedefs = tested.getTypeDefinitions();
StringTypeDefinition testedType = (StringTypeDefinition) TestUtils.findTypedef(typedefs,
"object-identifier-128");
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(Optional.of(Revision.valueOf("2010-09-24")), testedTypeQName.getRevision());
assertEquals("object-identifier-128", testedTypeQName.getLocalName());
StringTypeDefinition testedTypeBase = testedType.getBaseType();
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(Optional.of(Revision.valueOf("2010-09-24")), testedTypeBaseQName.getRevision());
assertEquals("object-identifier", testedTypeBaseQName.getLocalName());
}
@Test
public void testIdentityref() {
- Module tested = TestUtils.findModule(testedModules, "custom-types-test");
+ Module tested = TestUtils.findModule(context, "custom-types-test").get();
Set<TypeDefinition<?>> typedefs = tested.getTypeDefinitions();
TypeDefinition<?> testedType = TestUtils.findTypedef(typedefs, "service-type-ref");
IdentityrefTypeDefinition baseType = (IdentityrefTypeDefinition) testedType.getBaseType();
QName identity = baseType.getIdentity().getQName();
assertEquals(URI.create("urn:custom.types.demo"), identity.getNamespace());
- assertEquals(TestUtils.createDate("2012-04-16"), identity.getRevision());
+ assertEquals(Optional.of(Revision.valueOf("2012-04-16")), identity.getRevision());
assertEquals("service-type", identity.getLocalName());
LeafSchemaNode type = (LeafSchemaNode) tested.getDataChildByName(QName.create(tested.getQNameModule(), "type"));
try {
final SchemaContext result = reactor.buildEffective();
fail("effective build should fail due to union in list; this is not allowed");
- } catch (Exception e) {
+ } catch (ReactorException e) {
assertEquals(SomeModifiersUnresolvedException.class, e.getClass());
assertTrue(e.getCause() instanceof SourceException);
assertTrue(e.getCause().getMessage().startsWith("union is not a YANG statement or use of extension"));