2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.yangtools.yang.stmt;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertTrue;
14 import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource;
16 import java.util.List;
17 import org.junit.Test;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
20 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
21 import org.opendaylight.yangtools.yang.model.api.Module;
22 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
23 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
24 import org.opendaylight.yangtools.yang.parser.impl.DefaultReactors;
25 import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
27 public class ExtensionStmtTest {
29 public void testExtensionDefinition() throws ReactorException {
30 final SchemaContext result = DefaultReactors.defaultReactor().newBuild()
31 .addSource(sourceForResource("/model/bar.yang"))
33 assertNotNull(result);
35 final Module testModule = result.findModules("bar").iterator().next();
36 assertNotNull(testModule);
38 assertEquals(1, testModule.getExtensionSchemaNodes().size());
40 final List<ExtensionDefinition> extensions = testModule.getExtensionSchemaNodes();
41 final ExtensionDefinition extension = extensions.get(0);
42 assertEquals("opendaylight", extension.getQName().getLocalName());
43 assertEquals("name", extension.getArgument());
44 assertTrue(extension.isYinElement());
48 public void testExtensionUsage() throws ReactorException {
49 final SchemaContext result = DefaultReactors.defaultReactor().newBuild()
50 .addSource(sourceForResource("/semantic-statement-parser/ext-typedef.yang"))
51 .addSource(sourceForResource("/semantic-statement-parser/ext-use.yang"))
53 assertNotNull(result);
55 final Module testModule1 = result.findModules("ext-typedef").iterator().next();
56 assertNotNull(testModule1);
58 assertEquals(1, testModule1.getExtensionSchemaNodes().size());
60 final List<ExtensionDefinition> extensions = testModule1.getExtensionSchemaNodes();
61 final ExtensionDefinition extensionDefinition = extensions.get(0);
63 final Module testModule2 = result.findModules("ext-use").iterator().next();
64 assertNotNull(testModule2);
66 final LeafSchemaNode leaf = (LeafSchemaNode) testModule2.getDataChildByName(
67 QName.create(testModule2.getQNameModule(), "value"));
70 assertEquals(1, leaf.getUnknownSchemaNodes().size());
71 final List<UnknownSchemaNode> unknownNodes = leaf.getUnknownSchemaNodes();
72 final UnknownSchemaNode extensionUse = unknownNodes.get(0);
73 assertEquals(extensionDefinition.getQName().getLocalName(), extensionUse.getExtensionDefinition().getQName()
75 assertEquals(extensionDefinition.getArgument(), extensionUse.getExtensionDefinition().getArgument());
77 assertEquals("key:value", extensionUse.getNodeParameter());