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.

61 lines
1.7 KiB

  1. package de.edu.hsfulda.ciip.tdd;
  2. import static org.hamcrest.CoreMatchers.equalTo;
  3. import static org.junit.Assert.assertThat;
  4. import static org.mockito.Mockito.mock;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.Collection;
  8. import java.util.Collections;
  9. import java.util.List;
  10. import org.junit.Test;
  11. import org.junit.runner.RunWith;
  12. import org.junit.runners.Parameterized;
  13. import org.junit.runners.Parameterized.Parameter;
  14. import org.junit.runners.Parameterized.Parameters;
  15. @RunWith(Parameterized.class)
  16. public class StatusDeadTest {
  17. private static State[] states = { mock(State.class, "alife"), new StateDead() };
  18. private static final int alife = 0;
  19. private static final int dead = 1;
  20. @Parameters(name = "{index}: condition: {0} expected: {2}")
  21. public static Collection<Object[]> data() {
  22. return Arrays
  23. .asList(new Object[][] { { "all dead", 0, dead }, { "one alife", 1, dead }, { "two alife", 2, dead },
  24. { "four alife", 4, dead }, { "five alife", 5, dead }, { "three alife", 3, alife } });
  25. }
  26. @Parameter // first data value (0) is default
  27. public /* NOT private */ String assertMessage;
  28. @Parameter(1)
  29. public /* NOT private */ int aliveneigborCount;
  30. @Parameter(2)
  31. public /* NOT private */ int expected;
  32. @Test
  33. public void calculateNextState() {
  34. // arrange
  35. List<State> neigborStates = new ArrayList<>();
  36. for (int i = 0; i < aliveneigborCount; i++)
  37. neigborStates.add(states[alife]);
  38. while (neigborStates.size() < 8) {
  39. neigborStates.add(states[dead]);
  40. }
  41. Collections.shuffle(neigborStates);
  42. // act
  43. State stateDead = states[dead];
  44. State result = stateDead.nextBy(neigborStates);
  45. // assert
  46. assertThat(assertMessage, result, equalTo(states[expected]));
  47. }
  48. }