2 * Copyright (c) 2015 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.api;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertTrue;
13 import static org.junit.Assert.fail;
15 import com.google.common.collect.UnmodifiableIterator;
17 import java.util.Collections;
18 import java.util.HashMap;
20 import java.util.NoSuchElementException;
21 import org.junit.Test;
22 import org.opendaylight.yangtools.yang.common.QName;
23 import org.opendaylight.yangtools.yang.common.QNameModule;
24 import org.opendaylight.yangtools.yang.common.Revision;
25 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
27 public class PathArgumentListTest {
28 private static final class TestClass extends PathArgumentList {
30 public UnmodifiableIterator<PathArgument> iterator() {
31 return new UnmodifiableIterator<PathArgument>() {
33 public boolean hasNext() {
38 public PathArgument next() {
39 throw new NoSuchElementException();
45 public PathArgument get(final int index) {
56 public void testIsEmpty() {
57 assertFalse(new TestClass().isEmpty());
61 public void testProtections() {
62 final PathArgumentList l = new TestClass();
67 } catch (UnsupportedOperationException e) {
72 l.addAll(Collections.emptyList());
74 } catch (UnsupportedOperationException e) {
79 l.removeAll(Collections.emptyList());
81 } catch (UnsupportedOperationException e) {
86 l.retainAll(Collections.emptyList());
88 } catch (UnsupportedOperationException e) {
95 } catch (UnsupportedOperationException e) {
102 } catch (UnsupportedOperationException e) {
108 public void testPathArgument() {
109 final QNameModule qNameModule = QNameModule.create(URI.create("urn:opendaylight.test2"),
110 Revision.of("2015-08-08"));
111 final QName qNameRoot = QName.create(qNameModule, "root");
112 final QName qNameList = QName.create(qNameModule, "list");
113 final QName qNameLeaf = QName.create(qNameModule, "leaf-a");
114 final Map<QName, Object> entryLeaf = new HashMap<>();
115 entryLeaf.put(qNameList, "leaf");
116 final YangInstanceIdentifier.NodeIdentifierWithPredicates nodeIdentifierWithPredicates =
117 new YangInstanceIdentifier.NodeIdentifierWithPredicates(qNameList , entryLeaf);
118 final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.of(qNameRoot).node(qNameList)
119 .node(nodeIdentifierWithPredicates).node(qNameLeaf);
120 final PathArgument pathArgumentToRoot = yangInstanceIdentifier.getAncestor(1).getPathArguments().iterator()
122 final StackedPathArguments stackedPathArguments = (StackedPathArguments)yangInstanceIdentifier
124 assertTrue(yangInstanceIdentifier.pathArgumentsEqual(yangInstanceIdentifier));
125 assertEquals(pathArgumentToRoot, stackedPathArguments.get(0));
126 assertEquals(4, stackedPathArguments.size());
127 assertTrue(stackedPathArguments.contains(pathArgumentToRoot));
128 assertEquals(0, stackedPathArguments.indexOf(pathArgumentToRoot));
129 assertEquals(0, stackedPathArguments.lastIndexOf(pathArgumentToRoot));
131 final StackedReversePathArguments stackedReversePathArguments =
132 (StackedReversePathArguments)yangInstanceIdentifier.getReversePathArguments();
133 final QName rootQname = pathArgumentToRoot.getNodeType();
134 final QName leafQname = stackedReversePathArguments.get(0).getNodeType();
135 assertEquals(qNameRoot, rootQname);
136 assertEquals(qNameLeaf, leafQname);
137 assertEquals(4, stackedReversePathArguments.size());
138 assertTrue(stackedReversePathArguments.contains(pathArgumentToRoot));
139 assertEquals(3, stackedReversePathArguments.indexOf(pathArgumentToRoot));
140 assertEquals(3, stackedReversePathArguments.lastIndexOf(pathArgumentToRoot));
142 final StackedYangInstanceIdentifier stackedYangInstanceIdentifier = (StackedYangInstanceIdentifier)
143 yangInstanceIdentifier;
144 final StackedYangInstanceIdentifier stackedYangInstanceIdentifierClone = stackedYangInstanceIdentifier.clone();
145 final YangInstanceIdentifier yangInstanceIdentifier1 = stackedYangInstanceIdentifier.getAncestor(4);
146 assertEquals(stackedYangInstanceIdentifier, stackedYangInstanceIdentifierClone);
147 assertEquals(stackedReversePathArguments, yangInstanceIdentifier1.getReversePathArguments());
150 stackedYangInstanceIdentifier.getAncestor(12);
152 } catch (IllegalArgumentException e) {