Renamed Data(ReadOnly|WriteOnly) to DataTree(Read|Write)
[mdsal.git] / dom / mdsal-dom-inmemory-datastore / src / test / java / org / opendaylight / controller / md / sal / dom / store / impl / WildcardedScopeSubtreeTest.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.md.sal.dom.store.impl;
9
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
13
14 import org.opendaylight.mdsal.common.api.AsyncDataChangeEvent;
15 import org.opendaylight.mdsal.common.api.AsyncDataBroker.DataChangeScope;
16
17 import java.util.concurrent.ExecutionException;
18 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
19 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
20
21 public class WildcardedScopeSubtreeTest extends DefaultDataChangeListenerTestSuite {
22
23     private static final YangInstanceIdentifier TOP_LEVEL_LIST_ALL = TOP_LEVEL.node(TestModel.OUTER_LIST_QNAME).node(
24             TestModel.OUTER_LIST_QNAME);
25
26     @Override
27     protected void customizeTask(final DatastoreTestTask task) {
28         task.changeListener(TOP_LEVEL_LIST_ALL, DataChangeScope.SUBTREE);
29     }
30
31     @Override
32     public void putTopLevelOneNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
33
34         final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
35
36         assertNotContains(change.getCreatedData(), TOP_LEVEL);
37         assertContains(change.getCreatedData(), path(FOO), path(FOO, BAR));
38         assertEmpty(change.getUpdatedData());
39         assertEmpty(change.getRemovedPaths());
40
41     }
42
43     @Override
44     public void replaceTopLevelNestedChanged(final DatastoreTestTask task) throws InterruptedException,
45             ExecutionException {
46
47         final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
48         assertNotNull(change);
49
50         assertContains(change.getCreatedData(), path(FOO, BAZ));
51         assertContains(change.getUpdatedData(), path(FOO));
52         assertNotContains(change.getUpdatedData(), TOP_LEVEL);
53         assertContains(change.getRemovedPaths(), path(FOO, BAR));
54
55     }
56
57     @Override
58     protected void putTopLevelWithTwoNested(final DatastoreTestTask task) throws InterruptedException,
59             ExecutionException {
60
61         final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
62         assertNotNull(change);
63         assertFalse(change.getCreatedData().isEmpty());
64
65         assertContains(change.getCreatedData(), path(FOO), path(FOO, BAR), path(FOO, BAZ));
66         assertNotContains(change.getCreatedData(), TOP_LEVEL);
67         assertEmpty(change.getUpdatedData());
68         assertEmpty(change.getRemovedPaths());
69
70     }
71
72     @Override
73     protected void twoNestedExistsOneIsDeleted(final DatastoreTestTask task) throws InterruptedException,
74             ExecutionException {
75
76         final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
77         assertNotNull(change);
78         assertTrue(change.getCreatedData().isEmpty());
79         assertContains(change.getUpdatedData(), path(FOO));
80         assertNotContains(change.getUpdatedData(), TOP_LEVEL);
81         assertContains(change.getRemovedPaths(),path(FOO, BAZ));
82     }
83
84     @Override
85     public void nestedListExistsRootDeleted(final DatastoreTestTask task) throws InterruptedException,
86             ExecutionException {
87
88         final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
89
90         assertEmpty(change.getCreatedData());
91         assertEmpty(change.getUpdatedData());
92
93         assertNotContains(change.getUpdatedData(), TOP_LEVEL);
94         assertContains(change.getRemovedPaths(), path(FOO),path(FOO, BAZ),path(FOO,BAR));
95     }
96
97     @Override
98     protected void existingOneNestedWriteAdditionalNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
99         final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
100
101         assertContains(change.getCreatedData(), path(FOO,BAZ));
102         assertNotContains(change.getCreatedData(), path(FOO,BAR));
103         assertContains(change.getUpdatedData(), path(FOO));
104         assertNotContains(change.getUpdatedData(), TOP_LEVEL);
105         assertEmpty(change.getRemovedPaths());
106     }
107
108     @Override
109     protected void existingTopWriteTwoNested(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
110         final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
111
112         assertContains(change.getCreatedData(), path(FOO,BAR),path(FOO,BAZ));
113         assertContains(change.getUpdatedData(), path(FOO));
114         assertNotContains(change.getUpdatedData(), TOP_LEVEL, path(FOO,BAR));
115         assertEmpty(change.getRemovedPaths());
116     }
117
118     @Override
119     protected void existingTopWriteSibling(final DatastoreTestTask task) throws InterruptedException, ExecutionException {
120         final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change = task.getChangeEvent();
121
122         assertContains(change.getCreatedData(), path(FOO_SIBLING));
123         assertNotContains(change.getUpdatedData(), path(FOO), TOP_LEVEL);
124         assertEmpty(change.getRemovedPaths());
125     }
126 }