X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-api%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fapi%2FPathArgumentListTest.java;h=e2298784bbd6e16a4eefda9ccd770b584ad80a8c;hb=c4517068c0183a892703b26baf098c97bfb2a854;hp=1e30e8a1a61ec7385942e12c4ee93b11d27b451f;hpb=e688a40d8281f781153117a1d5c69bb34b0d6538;p=yangtools.git diff --git a/yang/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/PathArgumentListTest.java b/yang/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/PathArgumentListTest.java index 1e30e8a1a6..e2298784bb 100644 --- a/yang/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/PathArgumentListTest.java +++ b/yang/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/PathArgumentListTest.java @@ -7,17 +7,39 @@ */ package org.opendaylight.yangtools.yang.data.api; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.fail; +import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertTrue; + import com.google.common.collect.UnmodifiableIterator; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.NoSuchElementException; import org.junit.Test; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.common.XMLNamespace; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; public class PathArgumentListTest { private static final class TestClass extends PathArgumentList { @Override public UnmodifiableIterator iterator() { - return null; + return new UnmodifiableIterator<>() { + @Override + public boolean hasNext() { + return false; + } + + @Override + public PathArgument next() { + throw new NoSuchElementException(); + } + }; } @Override @@ -40,41 +62,56 @@ public class PathArgumentListTest { public void testProtections() { final PathArgumentList l = new TestClass(); - try { - l.remove(null); - fail(); - } catch (UnsupportedOperationException e) { - } - - try { - l.addAll(null); - fail(); - } catch (UnsupportedOperationException e) { - } - - try { - l.removeAll(null); - fail(); - } catch (UnsupportedOperationException e) { - } + assertThrows(UnsupportedOperationException.class, () -> l.remove(null)); + assertThrows(UnsupportedOperationException.class, () -> l.addAll(Collections.emptyList())); + assertThrows(UnsupportedOperationException.class, () -> l.removeAll(Collections.emptyList())); + assertThrows(UnsupportedOperationException.class, () -> l.retainAll(Collections.emptyList())); + assertThrows(UnsupportedOperationException.class, () -> l.clear()); + assertThrows(UnsupportedOperationException.class, () -> l.addAll(0, null)); + } - try { - l.retainAll(null); - fail(); - } catch (UnsupportedOperationException e) { - } + @Test + public void testPathArgument() { + final QNameModule qNameModule = QNameModule.create(XMLNamespace.of("urn:opendaylight.test2"), + Revision.of("2015-08-08")); + final QName qNameRoot = QName.create(qNameModule, "root"); + final QName qNameList = QName.create(qNameModule, "list"); + final QName qNameLeaf = QName.create(qNameModule, "leaf-a"); + final Map entryLeaf = new HashMap<>(); + entryLeaf.put(qNameList, "leaf"); + final NodeIdentifierWithPredicates nodeIdentifierWithPredicates = NodeIdentifierWithPredicates.of(qNameList, + entryLeaf); + final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.of(qNameRoot).node(qNameList) + .node(nodeIdentifierWithPredicates).node(qNameLeaf); + final PathArgument pathArgumentToRoot = yangInstanceIdentifier.getAncestor(1).getPathArguments().iterator() + .next(); + final StackedPathArguments stackedPathArguments = (StackedPathArguments)yangInstanceIdentifier + .getPathArguments(); + assertTrue(yangInstanceIdentifier.pathArgumentsEqual(yangInstanceIdentifier)); + assertEquals(pathArgumentToRoot, stackedPathArguments.get(0)); + assertEquals(4, stackedPathArguments.size()); + assertTrue(stackedPathArguments.contains(pathArgumentToRoot)); + assertEquals(0, stackedPathArguments.indexOf(pathArgumentToRoot)); + assertEquals(0, stackedPathArguments.lastIndexOf(pathArgumentToRoot)); - try { - l.clear(); - fail(); - } catch (UnsupportedOperationException e) { - } + final StackedReversePathArguments stackedReversePathArguments = + (StackedReversePathArguments)yangInstanceIdentifier.getReversePathArguments(); + final QName rootQname = pathArgumentToRoot.getNodeType(); + final QName leafQname = stackedReversePathArguments.get(0).getNodeType(); + assertEquals(qNameRoot, rootQname); + assertEquals(qNameLeaf, leafQname); + assertEquals(4, stackedReversePathArguments.size()); + assertTrue(stackedReversePathArguments.contains(pathArgumentToRoot)); + assertEquals(3, stackedReversePathArguments.indexOf(pathArgumentToRoot)); + assertEquals(3, stackedReversePathArguments.lastIndexOf(pathArgumentToRoot)); - try { - l.addAll(0, null); - fail(); - } catch (UnsupportedOperationException e) { - } + final StackedYangInstanceIdentifier stackedYangInstanceIdentifier = (StackedYangInstanceIdentifier) + yangInstanceIdentifier; + final StackedYangInstanceIdentifier stackedYangInstanceIdentifierClone = stackedYangInstanceIdentifier.clone(); + final YangInstanceIdentifier yangInstanceIdentifier1 = stackedYangInstanceIdentifier.getAncestor(4); + assertEquals(stackedYangInstanceIdentifier, stackedYangInstanceIdentifierClone); + assertEquals(stackedReversePathArguments, yangInstanceIdentifier1.getReversePathArguments()); + assertThrows(IllegalArgumentException.class, () -> stackedYangInstanceIdentifier.getAncestor(12)); } }