2 * Copyright (c) 2017 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;
15 import java.util.Iterator;
16 import java.util.List;
18 import java.util.stream.Collectors;
19 import org.junit.Test;
20 import org.opendaylight.yangtools.yang.common.QName;
21 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
22 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
23 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
24 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
26 public class Bug7037Test {
27 private static final String FOO_NS = "foo";
28 private static final String BAR_NS = "bar";
29 private static final String REV = "1970-01-01";
32 public void test() throws Exception {
33 final SchemaContext context = StmtTestUtils.parseYangSources("/bugs/bug7037");
34 assertNotNull(context);
36 final List<UnknownSchemaNode> unknownSchemaNodes = context.getUnknownSchemaNodes();
37 assertEquals(1, unknownSchemaNodes.size());
39 final UnknownSchemaNode first = unknownSchemaNodes.iterator().next();
40 final List<UnknownSchemaNode> firstUnknownNodes = first.getUnknownSchemaNodes();
41 assertEquals(1, firstUnknownNodes.size());
43 final UnknownSchemaNode barExtCont = firstUnknownNodes.iterator().next();
44 assertEquals(bar("container"), barExtCont.getNodeType());
45 assertEquals(foo("bar-ext-con"), barExtCont.getQName());
47 final DataSchemaNode root = context.getDataChildByName(foo("root"));
48 assertTrue(root instanceof ContainerSchemaNode);
50 final List<UnknownSchemaNode> rootUnknownNodes = root.getUnknownSchemaNodes();
51 assertEquals(2, rootUnknownNodes.size());
53 final Map<QName, UnknownSchemaNode> rootUnknownNodeMap = rootUnknownNodes.stream()
54 .collect(Collectors.toMap(u -> u.getNodeType(), u -> u));
56 final UnknownSchemaNode barExt = rootUnknownNodeMap.get(bar("bar-ext"));
57 final List<UnknownSchemaNode> barExtUnknownNodes = barExt.getUnknownSchemaNodes();
58 assertEquals(3, barExtUnknownNodes.size());
60 final Iterator<UnknownSchemaNode> iterator = barExtUnknownNodes.iterator();
61 UnknownSchemaNode barExtCont2 = null;
62 while(iterator.hasNext()) {
63 final UnknownSchemaNode next = iterator.next();
64 if(bar("container").equals(next.getNodeType())) {
69 assertNotNull(barExtCont2);
70 assertEquals(foo("bar-ext-con-2"), barExtCont2.getQName());
72 final UnknownSchemaNode fooExt = rootUnknownNodeMap.get(foo("foo-ext"));
73 final List<UnknownSchemaNode> fooUnknownNodes = fooExt.getUnknownSchemaNodes();
74 assertEquals(1, fooUnknownNodes.size());
76 final UnknownSchemaNode fooExtCont = fooUnknownNodes.iterator().next();
77 assertEquals(foo("container"), fooExtCont.getNodeType());
78 assertEquals(foo("foo-ext-con"), fooExtCont.getQName());
81 private static QName foo(final String localName) {
82 return QName.create(FOO_NS, REV, localName);
85 private static QName bar(final String localName) {
86 return QName.create(BAR_NS, REV, localName);