package nl.tudelft.bw4t.client.environment;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import eis.EnvironmentListener;
import nl.tudelft.bw4t.client.controller.ClientController;
/**
* This class tests the EntityNotifiers class from the Environment package in the client.
* It tests whether entities are correctly notified when free, deleted or new.
*/
@RunWith(MockitoJUnitRunner.class)
@SuppressWarnings("unchecked")
public class EntityNotifiersTest {
private EnvironmentListener mockedEnvListener = Mockito.mock(eis.EnvironmentListener.class);
private EnvironmentListener mockedEnvListener2 = Mockito.mock(eis.EnvironmentListener.class);
private EnvironmentListener mockedEnvListener3 = Mockito.mock(eis.EnvironmentListener.class);
private RemoteEnvironment mockedRemEnv = Mockito.mock(RemoteEnvironment.class);
private Collection<String> mockedCollection = Mockito.mock(Collection.class);
private ClientController mockedGUI = Mockito.mock(ClientController.class);
@Before
public void createRemotes() {
ArrayList<EnvironmentListener> listenerList = new ArrayList<EnvironmentListener>();
listenerList.add(mockedEnvListener);
listenerList.add(mockedEnvListener2);
listenerList.add(mockedEnvListener3);
when(mockedRemEnv.getEnvironmentListeners()).thenReturn(listenerList);
}
@Test
public void notifyFreeEntityTest() {
EntityNotifiers.notifyFreeEntity("Bot1", mockedCollection, mockedRemEnv);
Mockito.verify(mockedEnvListener).handleFreeEntity(any(String.class), any(Collection.class));
Mockito.verify(mockedEnvListener2).handleFreeEntity(any(String.class), any(Collection.class));
Mockito.verify(mockedEnvListener3).handleFreeEntity(any(String.class), any(Collection.class));
}
@Test
public void notifyNewEntityTest() {
EntityNotifiers.notifyNewEntity("Bot1", mockedRemEnv);
Mockito.verify(mockedEnvListener).handleNewEntity(any(String.class));
Mockito.verify(mockedEnvListener2).handleNewEntity(any(String.class));
Mockito.verify(mockedEnvListener3).handleNewEntity(any(String.class));
}
@Test
public void notifyDeletedEntityTest() {
when(mockedRemEnv.getEntityController("Bot1")).thenReturn(mockedGUI);
EntityNotifiers.notifyDeletedEntity("Bot1", mockedCollection, mockedRemEnv);
//if(mockedRemEnv.getEntityToGUI().get("Bot1") != null) {
Mockito.verify(mockedGUI).stop();
//}
Mockito.verify(mockedEnvListener).handleDeletedEntity(any(String.class), any(Collection.class));
Mockito.verify(mockedEnvListener2).handleDeletedEntity(any(String.class), any(Collection.class));
Mockito.verify(mockedEnvListener3).handleDeletedEntity(any(String.class), any(Collection.class));
}
}