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.data.impl.schema;
10 import static org.junit.jupiter.api.Assertions.assertNotNull;
11 import static org.junit.jupiter.api.Assertions.assertTrue;
13 import org.junit.jupiter.api.Test;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
16 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
18 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
19 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
20 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
23 * Schema structure of document is:
45 class NormalizedNodeUtilsTest {
46 private static final QName ROOT_QNAME = QName.create("urn:opendaylight:controller:sal:dom:store:test", "2014-03-13",
48 private static final QName LIST_A_QNAME = QName.create(ROOT_QNAME, "list-a");
49 private static final QName LIST_B_QNAME = QName.create(ROOT_QNAME, "list-b");
50 private static final QName LEAF_A_QNAME = QName.create(ROOT_QNAME, "leaf-a");
51 private static final QName LEAF_B_QNAME = QName.create(ROOT_QNAME, "leaf-b");
52 private static final String FOO = "foo";
53 private static final String BAR = "bar";
54 private static final String ONE = "one";
55 private static final String TWO = "two";
57 private static final YangInstanceIdentifier LIST_A_FOO_PATH = YangInstanceIdentifier.builder()
59 .nodeWithKey(LIST_A_QNAME, LEAF_A_QNAME, FOO)
61 private static final YangInstanceIdentifier LIST_B_TWO_PATH = YangInstanceIdentifier.builder()
63 .nodeWithKey(LIST_A_QNAME, LEAF_A_QNAME, BAR)
65 .nodeWithKey(LIST_B_QNAME,LEAF_B_QNAME,TWO)
69 * Returns a test document.
84 * @return A test document
86 private static NormalizedNode createDocumentOne() {
87 return ImmutableNodes.newContainerBuilder()
88 .withNodeIdentifier(new NodeIdentifier(ROOT_QNAME))
89 .withChild(ImmutableNodes.newSystemMapBuilder()
90 .withNodeIdentifier(new NodeIdentifier(LIST_A_QNAME))
91 .withChild(ImmutableNodes.newMapEntryBuilder()
92 .withNodeIdentifier(NodeIdentifierWithPredicates.of(LIST_A_QNAME, LEAF_A_QNAME, FOO))
93 .withChild(ImmutableNodes.leafNode(LEAF_A_QNAME, FOO))
95 .withChild(ImmutableNodes.newMapEntryBuilder()
96 .withNodeIdentifier(NodeIdentifierWithPredicates.of(LIST_A_QNAME, LEAF_A_QNAME, BAR))
97 .withChild(ImmutableNodes.leafNode(LEAF_A_QNAME, BAR))
98 .withChild(ImmutableNodes.newSystemMapBuilder()
99 .withNodeIdentifier(new NodeIdentifier(LIST_B_QNAME))
100 .withChild(ImmutableNodes.newMapEntryBuilder()
101 .withNodeIdentifier(NodeIdentifierWithPredicates.of(LIST_B_QNAME, LEAF_B_QNAME, ONE))
102 .withChild(ImmutableNodes.leafNode(LEAF_B_QNAME, ONE))
104 .withChild(ImmutableNodes.newMapEntryBuilder()
105 .withNodeIdentifier(NodeIdentifierWithPredicates.of(LIST_B_QNAME, LEAF_B_QNAME, TWO))
106 .withChild(ImmutableNodes.leafNode(LEAF_B_QNAME, TWO))
115 void findNodeTest() {
116 final var tree = createDocumentOne();
119 final var listFooResult = NormalizedNodes.findNode(tree, LIST_A_FOO_PATH);
120 assertTrue(listFooResult.isPresent());
122 final var listTwoResult = NormalizedNodes.findNode(tree, LIST_B_TWO_PATH);
123 assertTrue(listTwoResult.isPresent());