import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.hasItems;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
@RunWith(Enclosed.class)
public class SpaceTest {
public static class 誕生_死んでいるセルに隣接する生きたセルがちょうど3つならば {
private Space space;
@Before
public void setUp() {
space = new Space(new Integer[][] {{1,1,0},{1,0,0},{0,0,0}});
}
@Test
public void 次の世代で誕生する() {
assertThat(space.nextTime().cell(1,1).isAlive(), is(true));
}
}
public static class 生存_2_生きているセルに隣接する生きたセルが2つならば_次の世代でも生存する {
private Space space;
@Before
public void setUp() {
space = new Space(new Integer[][] {{1,1,0},{0,1,0},{0,0,0}});
}
@Test
public void 次の世代で生存する() {
assertThat(space.nextTime().cell(1,1).isAlive(), is(true));
}
}
public static class 生存_3_生きているセルに隣接する生きたセルが3つならば_次の世代でも生存する {
private Space space;
@Before
public void setUp() {
space = new Space(new Integer[][] {{1,1,1},{0,1,0},{0,0,0}});
}
@Test
public void 次の世代で生存する() {
assertThat(space.nextTime().cell(1,1).isAlive(), is(true));
}
}
public static class 死滅_過疎_生きているセルに隣接する生きたセルが1つ以下ならば_過疎により死滅する {
private Space space;
@Before
public void setUp() {
space = new Space(new Integer[][] {{0,1,0},{0,1,0},{0,0,0}});
}
@Test
public void 次の世代で死滅する() {
assertThat(space.nextTime().cell(1,1).isAlive(), is(false));
}
}
public static class 死滅_過密_生きているセルに隣接する生きたセルが4つ以上ならば_過密により死滅する {
private Space space;
@Before
public void setUp() {
space = new Space(new Integer[][] {{1,1,1},{0,1,1},{0,0,0}});
}
@Test
public void 次の世代で死滅する() {
assertThat(space.nextTime().cell(1,1).isAlive(), is(false));
}
}
}