package org.opendaylight.groupbasedpolicy.renderer.faas.test; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.opendaylight.controller.md.sal.binding.api.DataChangeListener; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class DataChangeListenerTester { private AsyncDataChangeEvent, DataObject> changeMock; private DataChangeListener listener; private Map, DataObject> testData; private Set> removedPaths; @SuppressWarnings("unchecked") public DataChangeListenerTester(DataChangeListener listener) { changeMock = mock(AsyncDataChangeEvent.class); testData = new HashMap<>(); removedPaths = new HashSet<>(); this.listener = listener; when(changeMock.getCreatedData()).thenReturn(testData); when(changeMock.getOriginalData()).thenReturn(testData); when(changeMock.getUpdatedData()).thenReturn(testData); when(changeMock.getRemovedPaths()).thenReturn(removedPaths); } public AsyncDataChangeEvent, DataObject> getChangeMock() { return changeMock; } public DataChangeListenerTester setDataObject(InstanceIdentifier iid, DataObject dataObject){ testData.clear(); return addDataObject(iid, dataObject); } public DataChangeListenerTester addDataObject(InstanceIdentifier iid, DataObject dataObject){ testData.put(iid, dataObject); return this; } public DataChangeListenerTester setRemovedPath(InstanceIdentifier iid){ removedPaths.clear(); return addRemovedPath(iid); } public DataChangeListenerTester addRemovedPath(InstanceIdentifier iid){ removedPaths.add(iid); return this; } public void callOnDataChanged(){ listener.onDataChanged(changeMock); } }