You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.2 KiB

  1. package de.edu.hsfulda.ccip.tdd.withdependencies;
  2. import static org.junit.Assert.assertThat;
  3. import java.util.Arrays;
  4. import java.util.Collections;
  5. import java.util.List;
  6. import org.hamcrest.CoreMatchers;
  7. import org.junit.Ignore;
  8. import org.junit.jupiter.api.BeforeEach;
  9. import org.junit.jupiter.api.Test;
  10. import org.mockito.ArgumentCaptor;
  11. import org.mockito.Mockito;
  12. class GameOfLifeCellTest {
  13. private GameOfLifeStatus status = Mockito.mock(GameOfLifeStatus.class, "initial state");
  14. private GameOfLifeCell gameOfLifeCell;
  15. private List<GameOfLifeCell> neighbors;
  16. private GameOfLifeCell neigborCell = Mockito.mock(GameOfLifeCell.class);
  17. @BeforeEach
  18. void setUp() throws Exception {
  19. gameOfLifeCell = new GameOfLifeCell(status);
  20. neighbors = Arrays.asList(neigborCell, neigborCell, neigborCell, neigborCell, neigborCell, neigborCell,
  21. neigborCell, neigborCell);
  22. for (GameOfLifeCell neighbor : neighbors) {
  23. gameOfLifeCell.addNeighbor(neighbor);
  24. }
  25. }
  26. @Test
  27. void passesNeighborStatusToOwn() {
  28. gameOfLifeCell.caclulateNextState();
  29. ArgumentCaptor<List<GameOfLifeStatus>> listOfNeghborStates = ArgumentCaptor.forClass(List.class);
  30. Mockito.verify(status).calculateNextBy(listOfNeghborStates.capture());
  31. assertThat("all neighbor states", listOfNeghborStates.getValue().size(),
  32. CoreMatchers.equalTo(neighbors.size()));
  33. }
  34. @Test
  35. void doesNotChangeStateWhenCalculating() {
  36. GameOfLifeStatus newState = Mockito.mock(GameOfLifeStatus.class);
  37. Mockito.doReturn(newState).when(status).calculateNextBy(Mockito.anyList());
  38. gameOfLifeCell.caclulateNextState();
  39. GameOfLifeStatus currentState = gameOfLifeCell.getState();
  40. Mockito.verify(status).calculateNextBy(Mockito.anyList());
  41. assertThat("status not changed", currentState, CoreMatchers.equalTo(status));
  42. }
  43. @Test
  44. void changesStateWhenRequested() {
  45. GameOfLifeStatus newState = Mockito.mock(GameOfLifeStatus.class, "new state");
  46. Mockito.doReturn(newState).when(status).calculateNextBy(Mockito.anyList());
  47. gameOfLifeCell.caclulateNextState();
  48. gameOfLifeCell.updateState();
  49. GameOfLifeStatus currentState = gameOfLifeCell.getState();
  50. Mockito.verify(status).calculateNextBy(Mockito.anyList());
  51. assertThat("status changed", currentState, CoreMatchers.equalTo(newState));
  52. }
  53. }