Merge "Resolved policy sidepanel"
[groupbasedpolicy.git] / renderers / faas / src / test / java / org / opendaylight / groupbasedpolicy / renderer / faas / test / DataChangeListenerTester.java
1 package org.opendaylight.groupbasedpolicy.renderer.faas.test;
2
3 import static org.mockito.Mockito.mock;
4 import static org.mockito.Mockito.when;
5
6 import java.util.HashMap;
7 import java.util.HashSet;
8 import java.util.Map;
9 import java.util.Set;
10
11 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
12 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
13 import org.opendaylight.yangtools.yang.binding.DataObject;
14 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
15
16 public class DataChangeListenerTester {
17
18     private AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changeMock;
19     private DataChangeListener listener;
20
21     private Map<InstanceIdentifier<?>, DataObject> testData;
22     private Set<InstanceIdentifier<?>> removedPaths;
23
24     @SuppressWarnings("unchecked")
25     public DataChangeListenerTester(DataChangeListener listener) {
26         changeMock = mock(AsyncDataChangeEvent.class);
27         testData = new HashMap<>();
28         removedPaths = new HashSet<>();
29
30         this.listener = listener;
31
32         when(changeMock.getCreatedData()).thenReturn(testData);
33         when(changeMock.getOriginalData()).thenReturn(testData);
34         when(changeMock.getUpdatedData()).thenReturn(testData);
35         when(changeMock.getRemovedPaths()).thenReturn(removedPaths);
36     }
37
38     public AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> getChangeMock() {
39         return changeMock;
40     }
41
42     public DataChangeListenerTester setDataObject(InstanceIdentifier<? extends DataObject> iid, DataObject dataObject){
43         testData.clear();
44         return addDataObject(iid, dataObject);
45     }
46
47     public DataChangeListenerTester addDataObject(InstanceIdentifier<? extends DataObject> iid, DataObject dataObject){
48         testData.put(iid, dataObject);
49         return this;
50     }
51
52     public DataChangeListenerTester setRemovedPath(InstanceIdentifier<? extends DataObject> iid){
53         removedPaths.clear();
54         return addRemovedPath(iid);
55     }
56
57     public DataChangeListenerTester addRemovedPath(InstanceIdentifier<? extends DataObject> iid){
58         removedPaths.add(iid);
59         return this;
60     }
61
62     public void callOnDataChanged(){
63         listener.onDataChanged(changeMock);
64     }
65
66 }