From d796df6f068e1806ec37bddcaeabdbfe698417f6 Mon Sep 17 00:00:00 2001 From: Guyslain <guyslain.naves@lis-lab.fr> Date: Wed, 11 Oct 2023 13:27:25 +0200 Subject: [PATCH] Add tests for NextGenerationInitializer --- .../model/NextGenerationInitializerTest.java | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/test/java/model/NextGenerationInitializerTest.java diff --git a/src/test/java/model/NextGenerationInitializerTest.java b/src/test/java/model/NextGenerationInitializerTest.java new file mode 100644 index 0000000..037e22b --- /dev/null +++ b/src/test/java/model/NextGenerationInitializerTest.java @@ -0,0 +1,82 @@ +package model; + +import controller.Simulation; +import datastruct.Coordinate; +import model.automata.GameOfLifeAutomaton; +import model.automata.GameOfLifeState; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.Random; + +import static model.automata.GameOfLifeState.ALIVE; +import static model.automata.GameOfLifeState.DEAD; +import static org.junit.jupiter.api.Assertions.*; + +class NextGenerationInitializerTest { + + private final CellularAutomatonSimulation<GameOfLifeState> simulation = + new CellularAutomatonSimulation<>( + new GameOfLifeAutomaton(4,3), + new Random() + ); + private final NextGenerationInitializer<GameOfLifeState> initializer = + new NextGenerationInitializer<>(this.simulation); + + @BeforeEach + public void prepareSimulation() { + GameOfLifeState[][] state = + { { DEAD, DEAD, ALIVE, DEAD } + , { ALIVE, ALIVE, DEAD, DEAD } + , { DEAD, DEAD, DEAD, DEAD } + }; + for (Coordinate coordinate : this.simulation) { + this.simulation.at(coordinate).set(state[coordinate.y()][coordinate.x()]); + } + } + + @Test + void initialValueAt() { + assertEquals(DEAD, initializer.initialValueAt(Coordinate.of(0,1))); + assertEquals(ALIVE, initializer.initialValueAt(Coordinate.of(1,0))); + assertEquals(ALIVE, initializer.initialValueAt(Coordinate.of(1,1))); + assertEquals(ALIVE, initializer.initialValueAt(Coordinate.of(1,2))); + assertEquals(DEAD, initializer.initialValueAt(Coordinate.of(2,2))); + } + + @Test + public void testWrapCoordinateInsideGrid() { + Coordinate coordinate = Coordinate.of(1, 1); + Coordinate wrapped = initializer.wrap(coordinate); + assertEquals(coordinate, wrapped); + } + + @Test + public void testWrapCoordinateOutsideGrid() { + assertEquals( + Coordinate.of(0, 1), + initializer.wrap(Coordinate.of(4, 4)) + ); + assertEquals( + Coordinate.of(3, 2), + initializer.wrap(Coordinate.of(-1, 2)) + ); + assertEquals( + Coordinate.of(3, 2), + initializer.wrap(Coordinate.of(-1, -1)) + ); } + + @Test + public void testModuloPositive() { + int result = NextGenerationInitializer.modulo(7, 4); + assertEquals(3, result); + } + + @Test + public void testModuloNegative() { + int result = NextGenerationInitializer.modulo(-7, 4); + assertEquals(1, result); + } + + +} \ No newline at end of file -- GitLab