X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fstmt%2Ftest%2FBug3874ExtensionTest.java;fp=yang%2Fyang-parser-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fstmt%2Ftest%2FBug3874ExtensionTest.java;h=e27d6e0db1e9eaf4e1fe68d2ec52e1cb31519273;hb=ea32c2c6fac2ebe9d0e30c9c4e5279c5ef0d2314;hp=0000000000000000000000000000000000000000;hpb=be4eb06cff027288c5d61c5e561beffed68971e8;p=yangtools.git diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug3874ExtensionTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug3874ExtensionTest.java new file mode 100644 index 0000000000..e27d6e0db1 --- /dev/null +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug3874ExtensionTest.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2015 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.yangtools.yang.stmt.test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.FileNotFoundException; +import java.net.URI; +import java.net.URISyntaxException; +import java.text.ParseException; +import java.util.Date; +import java.util.List; +import org.junit.Test; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; +import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; +import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.AnyxmlSchemaLocationEffectiveStatementImpl; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.YangModeledAnyXmlEffectiveStatementImpl; + +public class Bug3874ExtensionTest { + + @Test + public void test() throws SourceException, FileNotFoundException, ReactorException, URISyntaxException, ParseException { + SchemaContext context = StmtTestUtils.parseYangSources("/bugs/bug3874"); + + Date revision = SimpleDateFormatUtil.getRevisionFormat().parse("1970-01-01"); + QNameModule foo = QNameModule.create(new URI("foo"), revision); + QName myContainer2QName = QName.create(foo, "my-container-2"); + QName myAnyXmlDataQName = QName.create(foo, "my-anyxml-data"); + + DataSchemaNode dataChildByName = context.getDataChildByName(myAnyXmlDataQName); + assertTrue(dataChildByName instanceof YangModeledAnyXmlEffectiveStatementImpl); + YangModeledAnyXmlEffectiveStatementImpl yangModeledAnyXml = (YangModeledAnyXmlEffectiveStatementImpl) dataChildByName; + + SchemaNode myContainer2 = SchemaContextUtil.findDataSchemaNode(context, SchemaPath.create(true, myContainer2QName)); + assertTrue(myContainer2 instanceof ContainerSchemaNode); + assertEquals(myContainer2, yangModeledAnyXml.getSchemaOfAnyXmlData()); + + List unknownSchemaNodes = yangModeledAnyXml.getUnknownSchemaNodes(); + assertEquals(1, unknownSchemaNodes.size()); + + UnknownSchemaNode next = unknownSchemaNodes.iterator().next(); + assertTrue(next instanceof UnknownSchemaNode); + assertTrue(next instanceof AnyxmlSchemaLocationEffectiveStatementImpl); + AnyxmlSchemaLocationEffectiveStatementImpl anyxmlSchemaLocationUnknownNode= (AnyxmlSchemaLocationEffectiveStatementImpl) next; + assertEquals(SupportedExtensionsMapping.ANYXML_SCHEMA_LOCATION.getStatementName(), anyxmlSchemaLocationUnknownNode.getNodeType()); + assertEquals(SupportedExtensionsMapping.ANYXML_SCHEMA_LOCATION.getStatementName(), anyxmlSchemaLocationUnknownNode.getQName()); + } +}