Merge "EPG CRUD"
[groupbasedpolicy.git] / renderers / ofoverlay / src / test / java / org / opendaylight / groupbasedpolicy / renderer / ofoverlay / test / DataChangeListenerTester.java
1 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.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.DataBroker;
12 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
13 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
14 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.EndpointManager;
15 import org.opendaylight.yangtools.yang.binding.DataObject;
16 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
17
18 public class DataChangeListenerTester {
19
20     private AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changeMock;
21     private DataChangeListener listener;
22
23     private Map<InstanceIdentifier<?>, DataObject> testData;
24     private Set<InstanceIdentifier<?>> removedPaths;
25
26     @SuppressWarnings("unchecked")
27     public DataChangeListenerTester(DataChangeListener listener) {
28         changeMock = mock(AsyncDataChangeEvent.class);
29         testData = new HashMap<>();
30         removedPaths = new HashSet<>();
31
32         this.listener = listener;
33
34         when(changeMock.getCreatedData()).thenReturn(testData);
35         when(changeMock.getOriginalData()).thenReturn(testData);
36         when(changeMock.getUpdatedData()).thenReturn(testData);
37         when(changeMock.getRemovedPaths()).thenReturn(removedPaths);
38     }
39
40     public DataChangeListenerTester setDataObject(InstanceIdentifier<DataObject> iid, DataObject dataObject){
41         testData.clear();
42         return addDataObject(iid, dataObject);
43     }
44
45     public DataChangeListenerTester addDataObject(InstanceIdentifier<DataObject> iid, DataObject dataObject){
46         testData.put(iid, dataObject);
47         return this;
48     }
49
50     public DataChangeListenerTester setRemovedPath(InstanceIdentifier<DataObject> iid){
51         removedPaths.clear();
52         return addRemovedPath(iid);
53     }
54
55     public DataChangeListenerTester addRemovedPath(InstanceIdentifier<DataObject> iid){
56         removedPaths.add(iid);
57         return this;
58     }
59
60     public void callOnDataChanged(){
61         listener.onDataChanged(changeMock);
62     }
63 }