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
8 package org.opendaylight.yangtools.yang.stmt;
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.junit.jupiter.api.Assertions.fail;
13 import org.junit.jupiter.api.Test;
14 import org.opendaylight.yangtools.yang.common.XMLNamespace;
15 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
16 import org.opendaylight.yangtools.yang.model.api.Module;
17 import org.opendaylight.yangtools.yang.model.api.stmt.UnrecognizedStatement;
19 class Bug4456Test extends AbstractYangTest {
22 final var schema = assertEffectiveModelDir("/bugs/bug4456");
24 var modules = schema.findModules(XMLNamespace.of("foo"));
25 assertEquals(1, modules.size());
26 Module moduleFoo = modules.iterator().next();
28 var extensionSchemaNodes = moduleFoo.getExtensionSchemaNodes();
29 assertEquals(5, extensionSchemaNodes.size());
30 for (ExtensionDefinition extensionDefinition : extensionSchemaNodes) {
32 var unknownSchemaNodes = extensionDefinition.asEffectiveStatement()
33 .getDeclared().declaredSubstatements(UnrecognizedStatement.class);
34 assertEquals(1, unknownSchemaNodes.size());
35 UnrecognizedStatement unknownSchemaNode = unknownSchemaNodes.iterator().next();
36 String unknownNodeExtensionDefName = unknownSchemaNode.statementDefinition().getStatementName()
39 var subUnknownSchemaNodes = unknownSchemaNode.declaredSubstatements(UnrecognizedStatement.class);
40 assertEquals(1, subUnknownSchemaNodes.size());
41 UnrecognizedStatement subUnknownSchemaNode = subUnknownSchemaNodes.iterator().next();
42 String subUnknownNodeExtensionDefName = subUnknownSchemaNode.statementDefinition().getStatementName()
45 switch (extensionDefinition.getQName().getLocalName()) {
47 assertEquals("b", unknownNodeExtensionDefName);
48 assertEquals("c", subUnknownNodeExtensionDefName);
51 assertEquals("c", unknownNodeExtensionDefName);
52 assertEquals("a", subUnknownNodeExtensionDefName);
55 assertEquals("a", unknownNodeExtensionDefName);
56 assertEquals("b", subUnknownNodeExtensionDefName);
59 assertEquals("r", unknownNodeExtensionDefName);
60 assertEquals("r2", subUnknownNodeExtensionDefName);
63 assertEquals("r2", unknownNodeExtensionDefName);
64 assertEquals("r", subUnknownNodeExtensionDefName);
67 fail("Unexpected extension definition");