package nl.tudelft.bw4t.client.controller; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import eis.iilang.Identifier; import eis.iilang.Parameter; import eis.iilang.ParameterList; import eis.iilang.Percept; import java.util.LinkedList; import nl.tudelft.bw4t.client.agent.HumanAgent; import nl.tudelft.bw4t.client.environment.RemoteEnvironment; import nl.tudelft.bw4t.client.gui.BW4TClientGUI; import nl.tudelft.bw4t.map.NewMap; import nl.tudelft.bw4t.map.Point; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class ClientControllerTest { @Mock RemoteEnvironment remoteEnvironment; @Mock NewMap map; @Mock HumanAgent humanAgent; @Mock BW4TClientGUI clientGUI; private ClientController clientController; private LinkedList<Percept> listOfPercepts; private String entityID = "entityID"; @Before public void setUp() throws Exception { listOfPercepts = new LinkedList<Percept>(); when(map.getArea()).thenReturn(new Point(1.0, 1.0)); when(remoteEnvironment.getMap()).thenReturn(map); clientController = new ClientController(remoteEnvironment, entityID); clientController.setGui(clientGUI); Thread.sleep(1); clientController.getMapController().setRunning(false); } @After public void tearDown() throws Exception { } @Test public void testClientControllerRemoteEnvironmentNewMapString() { ClientController testController = new ClientController(remoteEnvironment, entityID); assertNotNull(testController); assertEquals(remoteEnvironment, testController.getEnvironment()); assertEquals(map, testController.getMapController().getMap()); assertEquals(entityID, testController.getMapController().getTheBot().getName()); } @Test public void testClientControllerRemoteEnvironmentNewMapStringHumanAgent() { ClientController testController = new ClientController(remoteEnvironment, entityID, humanAgent); assertEquals(humanAgent,testController.getHumanAgent()); } @Test public void testGetToBePerformedAction() { listOfPercepts.add(new Percept("testPercept")); clientController.setToBePerformedAction(listOfPercepts); assertEquals(listOfPercepts, clientController.getToBePerformedAction()); } @Test public void testHandlePerceptsPlayer() { Parameter parameter = new Identifier("TestPlayer"); Percept percept = new Percept("player"); percept.addParameter(parameter); listOfPercepts.add(percept); clientController.setToBePerformedAction(listOfPercepts); clientController.handlePercepts(listOfPercepts); assertEquals("TestPlayer", clientController.getOtherPlayers().iterator().next()); } @Test public void testHandlePerceptsMessage() { Parameter parameter1 = new Identifier("TestSender"); Parameter parameter2 = new Identifier("TestMessage"); ParameterList parameterList = new ParameterList(); parameterList.add(parameter1); parameterList.add(parameter2); Percept percept = new Percept("message"); percept.addParameter(parameterList); listOfPercepts.add(percept); clientController.setToBePerformedAction(listOfPercepts); clientController.handlePercepts(listOfPercepts); assertEquals("TestSender: TestMessage", clientController.getBotChatHistory().get(0)); } @Test public void testHandlePerceptsOther() { Percept percept = new Percept("test"); listOfPercepts.add(percept); clientController.setToBePerformedAction(listOfPercepts); clientController.handlePercepts(listOfPercepts); } @Test public void testUpdateRenderer() { testHandlePerceptsMessage(); clientController.updateGUI(); verify(clientGUI, times(2)).update(); } }