Make private methods static
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / test / java / org / opendaylight / controller / md / sal / binding / impl / test / Bug1333DataChangeListenerTest.java
index e7b03d9b146f432e0a4722f42a97905216d4a5a7..da18ae2a612eec649d09bbea40f6ab400b821ff1 100644 (file)
@@ -7,9 +7,6 @@
  */
 package org.opendaylight.controller.md.sal.binding.impl.test;
 
-import static org.opendaylight.controller.md.sal.binding.test.AssertCollections.assertContains;
-import static org.opendaylight.controller.md.sal.binding.test.AssertCollections.assertEmpty;
-import static org.opendaylight.controller.md.sal.binding.test.AssertCollections.assertNotContains;
 import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
 import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.TOP_FOO_KEY;
 import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.USES_ONE_KEY;
@@ -19,39 +16,50 @@ import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUti
 import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.top;
 import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.topLevelList;
 
+import com.google.common.collect.ImmutableSet;
+import java.util.Set;
 import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.binding.test.AbstractDataChangeListenerTest;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
+import org.opendaylight.controller.md.sal.binding.test.AbstractDataTreeChangeListenerTest;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeComplexUsesAugment;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.complex.from.grouping.ListViaUses;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.Top;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelList;
-import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 
 /**
- *
  * This testsuite tries to replicate bug 1333 and tests regresion of it
  * using test-model with similar construction as one reported.
  *
- *
+ * <p>
  * See  https://bugs.opendaylight.org/show_bug.cgi?id=1333 for Bug Description
- *
  */
-public class Bug1333DataChangeListenerTest extends AbstractDataChangeListenerTest{
+public class Bug1333DataChangeListenerTest extends AbstractDataTreeChangeListenerTest {
 
     private static final InstanceIdentifier<Top> TOP_PATH = InstanceIdentifier.create(Top.class);
 
-    private static final InstanceIdentifier<?> AUGMENT_WILDCARD = TOP_PATH.child(TopLevelList.class).augmentation(
-            TreeComplexUsesAugment.class);
+    private static final InstanceIdentifier<TreeComplexUsesAugment> AUGMENT_WILDCARD =
+            TOP_PATH.child(TopLevelList.class).augmentation(TreeComplexUsesAugment.class);
+
+    @Override
+    protected Set<YangModuleInfo> getModuleInfos() throws Exception {
+        return ImmutableSet.of(BindingReflections.getModuleInfo(Top.class),
+                BindingReflections.getModuleInfo(TreeComplexUsesAugment.class));
+    }
+
+    private static Top topWithListItem() {
+        return top(topLevelList(TOP_FOO_KEY, complexUsesAugment(USES_ONE_KEY, USES_TWO_KEY)));
+    }
 
-    public void writeTopWithListItem(final LogicalDatastoreType store) {
+    public Top writeTopWithListItem(final LogicalDatastoreType store) {
         ReadWriteTransaction tx = getDataBroker().newReadWriteTransaction();
-        Top topItem = top(topLevelList(TOP_FOO_KEY, complexUsesAugment(USES_ONE_KEY, USES_TWO_KEY)));
+        Top topItem = topWithListItem();
         tx.put(store, TOP_PATH, topItem);
         assertCommit(tx.submit());
+        return topItem;
     }
 
     public void deleteItem(final LogicalDatastoreType store, final InstanceIdentifier<?> path) {
@@ -62,82 +70,48 @@ public class Bug1333DataChangeListenerTest extends AbstractDataChangeListenerTes
 
     @Test
     public void writeTopWithListItemAugmentedListenTopSubtree() {
-        TestListener listener = createListener(CONFIGURATION,TOP_PATH, DataChangeScope.SUBTREE, false);
+        TestListener<Top> listener = createListener(CONFIGURATION, TOP_PATH, added(TOP_PATH, topWithListItem()));
 
         writeTopWithListItem(CONFIGURATION);
 
-        AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> event = listener.event();
-
-        assertContains(event.getCreatedData(), TOP_PATH);
-        assertContains(event.getCreatedData(), path(TOP_FOO_KEY));
-        assertContains(event.getCreatedData(), path(TOP_FOO_KEY, TreeComplexUsesAugment.class));
-        assertContains(event.getCreatedData(), path(TOP_FOO_KEY, USES_ONE_KEY));
-        assertContains(event.getCreatedData(), path(TOP_FOO_KEY, USES_TWO_KEY));
-
-        assertEmpty(event.getUpdatedData());
-        assertEmpty(event.getRemovedPaths());
+        listener.verify();
     }
 
     @Test
     public void writeTopWithListItemAugmentedListenAugmentSubtreeWildcarded() {
-        TestListener listener = createListener(CONFIGURATION,AUGMENT_WILDCARD, DataChangeScope.SUBTREE, false);
-        writeTopWithListItem(CONFIGURATION);
+        TestListener<TreeComplexUsesAugment> listener = createListener(CONFIGURATION, AUGMENT_WILDCARD,
+                added(path(TOP_FOO_KEY, TreeComplexUsesAugment.class), complexUsesAugment(USES_ONE_KEY, USES_TWO_KEY)));
 
-        AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> event = listener.event();
-
-        /*
-         * Event should not contain parent nodes
-         */
-        assertNotContains(event.getCreatedData(), TOP_PATH, path(TOP_FOO_KEY));
-
-        assertContains(event.getCreatedData(), path(TOP_FOO_KEY, TreeComplexUsesAugment.class));
-        assertContains(event.getCreatedData(), path(TOP_FOO_KEY, USES_ONE_KEY));
-        assertContains(event.getCreatedData(), path(TOP_FOO_KEY, USES_TWO_KEY));
+        writeTopWithListItem(CONFIGURATION);
 
-        assertEmpty(event.getUpdatedData());
-        assertEmpty(event.getRemovedPaths());
+        listener.verify();
     }
 
     @Test
     public void deleteAugmentChildListenTopSubtree() {
-        writeTopWithListItem(CONFIGURATION);
-        TestListener listener = createListener(CONFIGURATION, TOP_PATH, DataChangeScope.SUBTREE);
-        InstanceIdentifier<?> deletePath = path(TOP_FOO_KEY,USES_ONE_KEY);
-        deleteItem(CONFIGURATION,deletePath);
-
-        AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> event = listener.event();
+        Top top = writeTopWithListItem(CONFIGURATION);
 
+        TestListener<Top> listener = createListener(CONFIGURATION, TOP_PATH, added(TOP_PATH, top),
+                subtreeModified(TOP_PATH, top, top(topLevelList(TOP_FOO_KEY, complexUsesAugment(USES_TWO_KEY)))));
 
-        assertEmpty(event.getCreatedData());
+        InstanceIdentifier<ListViaUses> deletePath = path(TOP_FOO_KEY, USES_ONE_KEY);
+        deleteItem(CONFIGURATION, deletePath);
 
-        assertContains(event.getRemovedPaths(), deletePath);
-
-        assertContains(event.getUpdatedData(), TOP_PATH);
-        assertContains(event.getUpdatedData(), path(TOP_FOO_KEY));
-        assertContains(event.getUpdatedData(), path(TOP_FOO_KEY, TreeComplexUsesAugment.class));
-
-        assertNotContains(event.getCreatedData(), path(TOP_FOO_KEY, USES_TWO_KEY));
+        listener.verify();
     }
 
     @Test
     public void deleteAugmentChildListenAugmentSubtreeWildcarded() {
         writeTopWithListItem(CONFIGURATION);
 
-        TestListener listener = createListener(CONFIGURATION, AUGMENT_WILDCARD, DataChangeScope.SUBTREE, false);
-        InstanceIdentifier<?> deletePath = path(TOP_FOO_KEY,USES_ONE_KEY);
-        deleteItem(CONFIGURATION,deletePath);
-        AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> event = listener.event();
-
-        assertEmpty(event.getCreatedData());
+        TestListener<TreeComplexUsesAugment> listener = createListener(CONFIGURATION, AUGMENT_WILDCARD,
+                added(path(TOP_FOO_KEY, TreeComplexUsesAugment.class), complexUsesAugment(USES_ONE_KEY, USES_TWO_KEY)),
+                subtreeModified(path(TOP_FOO_KEY, TreeComplexUsesAugment.class),
+                    complexUsesAugment(USES_ONE_KEY, USES_TWO_KEY), complexUsesAugment(USES_TWO_KEY)));
 
-        assertContains(event.getUpdatedData(), path(TOP_FOO_KEY, TreeComplexUsesAugment.class));
+        InstanceIdentifier<?> deletePath = path(TOP_FOO_KEY, USES_ONE_KEY);
+        deleteItem(CONFIGURATION, deletePath);
 
-        /*
-         * Event should not contain parent nodes
-         */
-        assertNotContains(event.getUpdatedData(), TOP_PATH, path(TOP_FOO_KEY));
-
-        assertContains(event.getRemovedPaths(), deletePath);
+        listener.verify();
     }
-
 }