Enable checkstyle in yang-model-util
[yangtools.git] / yang / yang-model-util / src / test / java / org / opendaylight / yangtools / yang / model / util / DataNodeIteratorTest.java
index f5b27059eee979b39c9182bae72bbd858d96b48c..aae6a5ef3bc331b6f95cd4cfece9461e6c5095a4 100644 (file)
@@ -7,17 +7,29 @@
  */
 package org.opendaylight.yangtools.yang.model.util;
 
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-
-import java.util.Collections;
-import java.util.NoSuchElementException;
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 
+import com.google.common.collect.Sets;
+import java.util.Collections;
+import java.util.NoSuchElementException;
+import java.util.Set;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
+
 public class DataNodeIteratorTest {
 
     private DataNodeIterator dataNodeIterator;
@@ -28,12 +40,12 @@ public class DataNodeIteratorTest {
         this.dataNodeIterator = new DataNodeIterator(dataNodeContainer);
     }
 
-    @Test(expected=IllegalArgumentException.class)
+    @Test(expected = IllegalArgumentException.class)
     public void createDataNodeIteratorWithNullArgument() {
         new DataNodeIterator(null);
     }
 
-    @Test(expected=UnsupportedOperationException.class)
+    @Test(expected = UnsupportedOperationException.class)
     public void removeFromEmptyDataNodeContainer() {
         dataNodeIterator.remove();
     }
@@ -52,4 +64,60 @@ public class DataNodeIteratorTest {
         assertEquals("Should be empty list", Collections.EMPTY_LIST, dataNodeIterator.allGroupings());
         assertEquals("Should be empty list", Collections.EMPTY_LIST, dataNodeIterator.allLists());
     }
-}
\ No newline at end of file
+
+    @Test
+    public void testTraversal() {
+        final Module mockedModule = mock(Module.class);
+
+        final ContainerSchemaNode mockedAugmentingContainer = mock(ContainerSchemaNode.class);
+        doReturn(true).when(mockedAugmentingContainer).isAugmenting();
+
+        final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
+
+        final ListSchemaNode mockedList = mock(ListSchemaNode.class);
+
+        final ChoiceSchemaNode mockedChoice = mock(ChoiceSchemaNode.class);
+        final ChoiceCaseNode mockedCase1 = mock(ChoiceCaseNode.class);
+        final ChoiceCaseNode mockedCase2 = mock(ChoiceCaseNode.class);
+        final Set<ChoiceCaseNode> cases = Sets.newHashSet(mockedCase1, mockedCase2);
+        doReturn(cases).when(mockedChoice).getCases();
+
+        final Set<DataSchemaNode> childNodes = Sets.newHashSet(mockedAugmentingContainer, mockedContainer, mockedList,
+                mockedChoice);
+        doReturn(childNodes).when(mockedModule).getChildNodes();
+
+        final NotificationDefinition mockedNotification = mock(NotificationDefinition.class);
+        final ContainerSchemaNode mockedContainerInNotification = mock(ContainerSchemaNode.class);
+        final Set<DataSchemaNode> notificationChildNodes = Sets.newHashSet(mockedContainerInNotification);
+        doReturn(notificationChildNodes).when(mockedNotification).getChildNodes();
+        final Set<NotificationDefinition> notifications = Sets.newHashSet(mockedNotification);
+
+        doReturn(notifications).when(mockedModule).getNotifications();
+
+        final RpcDefinition mockedRpc = mock(RpcDefinition.class);
+        final ContainerSchemaNode mockedContainerInRpcInput = mock(ContainerSchemaNode.class);
+        final ListSchemaNode mockedListInRpcInputContainer = mock(ListSchemaNode.class);
+        final Set<DataSchemaNode> rpcInputChildNodes = Sets.newHashSet(mockedListInRpcInputContainer);
+        doReturn(rpcInputChildNodes).when(mockedContainerInRpcInput).getChildNodes();
+        doReturn(mockedContainerInRpcInput).when(mockedRpc).getInput();
+        final Set<RpcDefinition> rpcs = Sets.newHashSet(mockedRpc);
+
+        doReturn(rpcs).when(mockedModule).getRpcs();
+
+        final GroupingDefinition mockedGrouping = mock(GroupingDefinition.class);
+        final Set<GroupingDefinition> groupings = Sets.newHashSet(mockedGrouping);
+
+        doReturn(groupings).when(mockedModule).getGroupings();
+
+        final DataNodeIterator dataNodeIterator = new DataNodeIterator(mockedModule);
+        assertFalse(dataNodeIterator.allContainers().contains(mockedAugmentingContainer));
+        assertTrue(dataNodeIterator.allContainers().contains(mockedContainer));
+        assertTrue(dataNodeIterator.allLists().contains(mockedList));
+        assertTrue(dataNodeIterator.allChoices().contains(mockedChoice));
+        assertTrue(dataNodeIterator.allChoices().get(0).getCases().contains(mockedCase1));
+        assertTrue(dataNodeIterator.allChoices().get(0).getCases().contains(mockedCase2));
+        assertTrue(dataNodeIterator.allContainers().contains(mockedContainerInNotification));
+        assertTrue(dataNodeIterator.allLists().contains(mockedListInRpcInputContainer));
+        assertTrue(dataNodeIterator.allGroupings().contains(mockedGrouping));
+    }
+}