/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
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<InstanceIdentifier<?>, DataObject> changeMock;
private DataChangeListener listener;
private Map<InstanceIdentifier<?>, DataObject> testData;
private Set<InstanceIdentifier<?>> 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<InstanceIdentifier<?>, DataObject> getChangeMock() {
return changeMock;
}
public DataChangeListenerTester setDataObject(InstanceIdentifier<? extends DataObject> iid, DataObject dataObject){
testData.clear();
return addDataObject(iid, dataObject);
}
public DataChangeListenerTester addDataObject(InstanceIdentifier<? extends DataObject> iid, DataObject dataObject){
testData.put(iid, dataObject);
return this;
}
public DataChangeListenerTester setRemovedPath(InstanceIdentifier<? extends DataObject> iid){
removedPaths.clear();
return addRemovedPath(iid);
}
public DataChangeListenerTester addRemovedPath(InstanceIdentifier<? extends DataObject> iid){
removedPaths.add(iid);
return this;
}
public void callOnDataChanged(){
listener.onDataChanged(changeMock);
}
}