Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • s20026898/tp-6
  • boukenze.b/jeu-de-la-vie-tp-3
  • b22015696/game-of-life-template
  • s23026062/sahin-game-of-life-template
  • m22023183/game-of-life-MALEK
  • z23012739/game-of-life-template
  • p23021107/poussardin-malo-game-of-life-template
  • o21225801/game-of-life-template
  • alaboure/game-fo-life-template
  • t22007439/game-of-life-toullec
  • b23021750/game-of-life
  • c22029830/game-of-life-template-rafi
  • b23025683/game-of-life-template-tp-6
  • gnaves/game-of-life-template
  • a22025223/game-of-life-template-cristel
  • f22024692/game-of-life-template-paolo-mathis-erwan
  • t21233923/game-fo-life-template
  • h21231335/game-fo-life-template
  • l22023519/game-of-life-template-salma
  • p23020787/game-of-life-template
  • b21232450/game-of-life-template
  • s22031458/game-of-life
  • n21223697/tp-4-ngom
  • a22027291/game-of-life-of-salim
  • k22029508/tp-4
  • s19033421/game-of-life-template
  • b21229750/jeu-de-la-vie-tp-3
  • saddem.r/game-of-life-template
  • l3_s3_infoamu/s3/programmation-2/game-fo-life-template
29 results
Select Git revision
Loading items
Show changes
Showing
with 676 additions and 150 deletions
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
class TestCohort {
private static Cohort cohort = new Cohort("L2 informatique");
@BeforeAll
static void addStudentsToCohort(){
Student paulCalcul = new Student("Paul", "Calcul");
Student pierreKiroul = new Student("Pierre", "Kiroul");
pierreKiroul.addResult("Programmation 2", TestGrade.ten);
pierreKiroul.addResult("Structures discrètes", TestGrade.zero);
paulCalcul.addResult("Programmation 2", TestGrade.ten);
paulCalcul.addResult("Structures discrètes", TestGrade.twenty);
cohort.addStudent(paulCalcul);
cohort.addStudent(pierreKiroul);
}
@Test
void testGetStudents(){
assertEquals(List.of(TestStudent.paulCalcul, TestStudent.pierreKiroul), cohort.getStudents());
}
@Test
void testPrintStudentsResults() {
StandardOutputSandbox standardOutputSandbox = new StandardOutputSandbox(() ->cohort.printStudentsResults());
String expectedOutput = "L2 informatique" + StandardOutputSandbox.NEW_LINE + StandardOutputSandbox.NEW_LINE
+ "Paul Calcul" + StandardOutputSandbox.NEW_LINE
+ "Programmation 2 : 10.0/20" + StandardOutputSandbox.NEW_LINE
+ "Structures discrètes : 20.0/20" + StandardOutputSandbox.NEW_LINE
+ "Note moyenne : 15.0/20" + StandardOutputSandbox.NEW_LINE + StandardOutputSandbox.NEW_LINE
+ "Pierre Kiroul" + StandardOutputSandbox.NEW_LINE
+ "Programmation 2 : 10.0/20" + StandardOutputSandbox.NEW_LINE
+ "Structures discrètes : 0.0/20" + StandardOutputSandbox.NEW_LINE
+ "Note moyenne : 5.0/20" + StandardOutputSandbox.NEW_LINE + StandardOutputSandbox.NEW_LINE;
standardOutputSandbox.run();
assertEquals(expectedOutput, standardOutputSandbox.getProducedOutput());
}
}
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import org.junit.jupiter.api.Test;
import java.util.List;
class TestGrade {
static Grade twenty = new Grade(20);
static Grade zero = new Grade(0);
static Grade ten = new Grade(10);
private static List<Grade> grades = List.of(zero, twenty, ten);
private static List<Grade> gradesZero = List.of(zero, zero);
@Test
void testGetValue() {
assertEquals(20, twenty.getValue());
assertEquals(0, zero.getValue());
}
@Test
void testToString() {
assertEquals("20.0/20", twenty.toString());
assertEquals("0.0/20", zero.toString());
}
@Test
void testAverageGrade(){
assertEquals(ten, Grade.averageGrade(grades));
assertEquals(zero, Grade.averageGrade(gradesZero));
}
}
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.List;
class TestStudent {
private static Student arnaudLabourel = new Student("Arnaud", "Labourel");
static Student paulCalcul = new Student("Paul", "Calcul");
static Student pierreKiroul = new Student("Pierre", "Kiroul");
@BeforeAll
static void addResultsToStudents(){
arnaudLabourel.addResult("Programmation 2", TestGrade.twenty);
arnaudLabourel.addResult("Structures discrètes", TestGrade.twenty);
pierreKiroul.addResult("Programmation 2", TestGrade.ten);
pierreKiroul.addResult("Structures discrètes", TestGrade.zero);
paulCalcul.addResult("Programmation 2", TestGrade.ten);
paulCalcul.addResult("Structures discrètes", TestGrade.twenty);
}
@Test
void testToString() {
assertEquals("Paul Calcul", paulCalcul.toString());
assertEquals("Pierre Kiroul", pierreKiroul.toString());
}
@Test
void testGetGrades() {
assertEquals(List.of(TestGrade.twenty, TestGrade.twenty), arnaudLabourel.getGrades());
assertEquals(List.of(TestGrade.ten, TestGrade.zero), pierreKiroul.getGrades());
assertEquals(List.of(TestGrade.ten, TestGrade.twenty), paulCalcul.getGrades());
}
@Test
void testGetAverageGrade() {
assertEquals(TestGrade.twenty, arnaudLabourel.averageGrade());
assertEquals(new Grade(5), pierreKiroul.averageGrade());
assertEquals(new Grade(15), paulCalcul.averageGrade());
}
@Test
void testPrintResults() {
StandardOutputSandbox standardOutputSandbox = new StandardOutputSandbox(() ->arnaudLabourel.printResults());
String expectedOutput =
"Arnaud Labourel" + StandardOutputSandbox.NEW_LINE
+ "Programmation 2 : 20.0/20" + StandardOutputSandbox.NEW_LINE
+ "Structures discrètes : 20.0/20" + StandardOutputSandbox.NEW_LINE
+ "Note moyenne : 20.0/20" + StandardOutputSandbox.NEW_LINE;
standardOutputSandbox.run();
assertEquals(expectedOutput, standardOutputSandbox.getProducedOutput());
}
}
\ No newline at end of file
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class TestTeachingUnitResult {
private static TeachingUnitResult twentyAtProg =
new TeachingUnitResult("Programmation 2", TestGrade.twenty);
private static TeachingUnitResult zeroAtStructDiscrete =
new TeachingUnitResult("Structures discrètes", TestGrade.zero);
@Test
void testGetGrade() {
assertEquals(TestGrade.twenty, twentyAtProg.getGrade());
assertEquals(TestGrade.zero, zeroAtStructDiscrete.getGrade());
}
@Test
void testToString() {
assertEquals("Programmation 2 : 20.0/20", twentyAtProg.toString());
assertEquals("Structures discrètes : 0.0/20", zeroAtStructDiscrete.toString());
}
}
package matrix;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class ConstantMatrixInitializerTest {
@Test
public void testMatrixInitializationWithConstantValue() {
ListMatrix<String> matrix = new ListMatrix<>(3, 3, new ConstantMatrixInitializer<>("X"));
// Test that all cells have the constant value.
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
assertEquals("X", matrix.get(x, y));
}
}
}
@Test
public void testMatrixInitializationWithConstantValue2() {
ListMatrix<Integer> matrix = new ListMatrix<>(3, 5, new ConstantMatrixInitializer<>(12));
// Test that all cells have the constant value.
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 5; y++) {
assertEquals(12, matrix.get(x, y));
}
}
}
}
\ No newline at end of file
package matrix;
import org.junit.jupiter.api.Test;
import java.util.NoSuchElementException;
import static org.junit.jupiter.api.Assertions.*;
class CoordinateIteratorTest {
@Test
public void testIteratorWithZeroDimensions() {
CoordinateIterator iterator = new CoordinateIterator(0, 0);
assertFalse(iterator.hasNext());
}
@Test
public void testIteratorWithOneDimension() {
CoordinateIterator iterator = new CoordinateIterator(5, 1);
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(0, 0), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(1, 0), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(2, 0), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(3, 0), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(4, 0), iterator.next());
assertFalse(iterator.hasNext());
assertThrows(NoSuchElementException.class, iterator::next);
}
@Test
public void testIteratorWithTwoDimensions() {
CoordinateIterator iterator = new CoordinateIterator(3, 2);
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(0, 0), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(1, 0), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(2, 0), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(0, 1), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(1, 1), iterator.next());
assertTrue(iterator.hasNext());
assertEquals(Coordinate.of(2, 1), iterator.next());
assertFalse(iterator.hasNext());
assertThrows(NoSuchElementException.class, iterator::next);
}
}
\ No newline at end of file
package matrix;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
public class CoordinateTest {
@Test
public void testCoordinateCreation() {
Coordinate coordinate = Coordinate.of(3, 4);
assertEquals(3, coordinate.x());
assertEquals(4, coordinate.y());
}
@Test
public void testLeft() {
Coordinate coordinate = Coordinate.of(3, 4);
Coordinate left = coordinate.left();
assertEquals(2, left.x());
assertEquals(4, left.y());
}
@Test
public void testRight() {
Coordinate coordinate = Coordinate.of(3, 4);
Coordinate right = coordinate.right();
assertEquals(4, right.x());
assertEquals(4, right.y());
}
@Test
public void testAbove() {
Coordinate coordinate = Coordinate.of(3, 4);
Coordinate above = coordinate.above();
assertEquals(3, above.x());
assertEquals(5, above.y());
}
@Test
public void testBelow() {
Coordinate coordinate = Coordinate.of(3, 4);
Coordinate below = coordinate.below();
assertEquals(3, below.x());
assertEquals(3, below.y());
}
@Test
public void testOrthogonalNeighbours() {
Coordinate coordinate = Coordinate.of(3, 4);
List<Coordinate> neighbours = coordinate.orthogonalNeighbours();
assertEquals(4, neighbours.size());
assertTrue(neighbours.contains(Coordinate.of(2, 4)));
assertTrue(neighbours.contains(Coordinate.of(4, 4)));
assertTrue(neighbours.contains(Coordinate.of(3, 3)));
assertTrue(neighbours.contains(Coordinate.of(3, 5)));
assertFalse(neighbours.contains(coordinate));
assertFalse(neighbours.contains(Coordinate.of(1, 4)));
assertFalse(neighbours.contains(Coordinate.of(5, 4)));
assertFalse(neighbours.contains(Coordinate.of(3, 6)));
assertFalse(neighbours.contains(Coordinate.of(3, 1)));
}
@Test
public void testDiagonalNeighbours() {
Coordinate coordinate = Coordinate.of(3, 4);
List<Coordinate> neighbours = coordinate.diagonalNeighbours();
assertEquals(4, neighbours.size());
assertTrue(neighbours.contains(Coordinate.of(2, 3)));
assertTrue(neighbours.contains(Coordinate.of(4, 3)));
assertTrue(neighbours.contains(Coordinate.of(2, 5)));
assertTrue(neighbours.contains(Coordinate.of(4, 5)));
assertFalse(neighbours.contains(coordinate));
assertFalse(neighbours.contains(Coordinate.of(1, 4)));
assertFalse(neighbours.contains(Coordinate.of(5, 4)));
assertFalse(neighbours.contains(Coordinate.of(3, 6)));
assertFalse(neighbours.contains(Coordinate.of(3, 1)));
}
@Test
public void testOrthodiagonalNeighbours() {
Coordinate coordinate = Coordinate.of(3, 4);
List<Coordinate> neighbours = coordinate.orthodiagonalNeighbours();
assertEquals(8, neighbours.size());
assertTrue(neighbours.contains(Coordinate.of(2, 4)));
assertTrue(neighbours.contains(Coordinate.of(4, 4)));
assertTrue(neighbours.contains(Coordinate.of(3, 3)));
assertTrue(neighbours.contains(Coordinate.of(3, 5)));
assertTrue(neighbours.contains(Coordinate.of(2, 3)));
assertTrue(neighbours.contains(Coordinate.of(4, 3)));
assertTrue(neighbours.contains(Coordinate.of(2, 5)));
assertTrue(neighbours.contains(Coordinate.of(4, 5)));
assertFalse(neighbours.contains(coordinate));
assertFalse(neighbours.contains(Coordinate.of(1, 4)));
assertFalse(neighbours.contains(Coordinate.of(5, 4)));
assertFalse(neighbours.contains(Coordinate.of(3, 6)));
assertFalse(neighbours.contains(Coordinate.of(3, 1)));
}
}
\ No newline at end of file
package matrix;
import org.junit.jupiter.api.Test;
import java.util.Iterator;
import static org.junit.jupiter.api.Assertions.*;
class ListMatrixTest {
private final MatrixInitializer<Integer> sumInitializer =
coord -> coord.x() + coord.y();
@Test
public void testMatrixCreationWithInitializer() {
ListMatrix<Integer> matrix = new ListMatrix<>(3, 4, sumInitializer);
assertEquals(3, matrix.width());
assertEquals(4, matrix.height());
assertEquals(4, matrix.get(2, 2));
assertEquals(3, matrix.get(1, 2));
assertEquals(3, matrix.get(2, 1));
assertEquals(2, matrix.get(1, 1));
}
@Test
public void testMatrixCreationWithInitialValue() {
ListMatrix<String> matrix = new ListMatrix<>(2, 2, "Foo");
assertEquals(2, matrix.width());
assertEquals(2, matrix.height());
assertEquals("Foo", matrix.get(1, 1)); // Test a specific cell value.
}
@Test
public void testMatrixSetAndGet() {
ListMatrix<Integer> matrix = new ListMatrix<>(3, 3, 0);
matrix.set(1, 1,42);
assertEquals(42, matrix.get(1, 1));
matrix.set(0, 2,10);
assertEquals(10, matrix.get(0, 2));
matrix.set(Coordinate.of(2, 2),99);
assertEquals(99, matrix.get(Coordinate.of(2, 2)));
}
@Test
public void testMatrixWidthAndHeight() {
ListMatrix<String> matrix = new ListMatrix<>(4, 2, "A");
assertEquals(4, matrix.width());
assertEquals(2, matrix.height());
matrix.set(3, 1,"B");
assertEquals(4, matrix.width());
assertEquals(2, matrix.height());
}
@Test
public void testMatrixIterator() {
ListMatrix<Integer> matrix = new ListMatrix<>(2, 2, sumInitializer);
Iterator<Integer> iterator = matrix.iterator();
assertTrue(iterator.hasNext());
assertEquals(0, iterator.next());
assertTrue(iterator.hasNext());
assertEquals(1, iterator.next());
assertTrue(iterator.hasNext());
assertEquals(1, iterator.next());
assertTrue(iterator.hasNext());
assertEquals(2, iterator.next());
assertFalse(iterator.hasNext());
}
@Test
public void testMatrixCoordinates() {
ListMatrix<Integer> matrix = new ListMatrix<>(2, 2, 0);
Iterable<Coordinate> coordinates = matrix.coordinates();
int count = 0;
for (Coordinate coord : coordinates) {
count++;
}
assertEquals(4, count);
}
@Test
public void testSubMatrix() {
Matrix<Integer> matrix = new ListMatrix<>(5, 5, 0);
for (int x = 0; x < 5; x++) {
for (int y = 0; y < 5; y++) {
matrix.set(x,y,x + y * 5);
}
}
Matrix<Integer> sub = matrix.subMatrix(Coordinate.of(2,1),2,3);
assertEquals(2, sub.width());
assertEquals(3, sub.height());
for (int x = 2; x < 4; x++) {
for (int y = 1; y < 4; y++) {
assertEquals(x + y * 5, sub.get(x-2,y-1));
}
}
}
}
package model;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CellTest {
private record Change<T>(T oldValue, T newValue) {}
private static class MockListener<T> implements OnChangeListener<T> {
private Change<T> lastChange = null;
public boolean checksLastChange(T oldValue, T newValue) {
return this.lastChange != null
&& this.lastChange.oldValue.equals(oldValue)
&& this.lastChange.newValue.equals(newValue);
}
@Override
public void valueChanged(T oldValue, T newValue) {
lastChange = new Change<>(oldValue, newValue);
}
}
@Test
public void testCellValueChangeWithListener() {
Cell<Integer> cell = new Cell<>(42);
MockListener<Integer> mockListener = new MockListener<>();
cell.addOnChangeListener(mockListener);
cell.set(99);
assertTrue(mockListener.checksLastChange(42, 99));
assertEquals(99, cell.get());
}
@Test
public void testCellWithoutListener() {
Cell<String> cell = new Cell<>("Foo");
cell.set("Bar");
assertEquals("Bar", cell.get());
}
}
\ No newline at end of file
package model;
import matrix.Coordinate;
import javafx.scene.paint.Color;
import model.automata.GameOfLifeAutomaton;
import static model.automata.GameOfLifeState.*;
import model.automata.GameOfLifeState;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import static org.junit.jupiter.api.Assertions.*;
class CellularAutomatonSimulationTest {
private final CellularAutomatonSimulation<GameOfLifeState> simulation;
private final CellularAutomaton<GameOfLifeState> automaton;
private final Random randomGenerator;
CellularAutomatonSimulationTest() {
this.randomGenerator = new Random();
this.automaton = new GameOfLifeAutomaton(4,3);
this.simulation = new CellularAutomatonSimulation<>(automaton, randomGenerator);
}
@BeforeEach
public void setUp() {
this.simulation.clear();
}
@Test
public void testNumberOfColumns() {
assertEquals(4, simulation.numberOfColumns());
}
@Test
public void testNumberOfRows() {
assertEquals(3, simulation.numberOfRows());
}
@Test
public void testAt() {
Coordinate coordinate = Coordinate.of(1, 2);
Cell<GameOfLifeState> cell = simulation.at(coordinate);
assertEquals(DEAD,cell.get());
}
@Test
public void testUpdateToNextGeneration() {
GameOfLifeState[][] input =
{ {ALIVE, ALIVE, ALIVE, DEAD},
{ALIVE, DEAD, DEAD, DEAD},
{DEAD, ALIVE, DEAD, DEAD}
};
GameOfLifeState[][] output =
{ {ALIVE, DEAD, ALIVE, ALIVE},
{ALIVE, DEAD, ALIVE, ALIVE},
{DEAD, DEAD, ALIVE, ALIVE}
};
for (Coordinate coordinate : this.simulation) {
this.simulation.at(coordinate).set(input[coordinate.y()][coordinate.x()]);
}
simulation.updateToNextGeneration();
for (Coordinate coordinate : this.simulation) {
assertEquals(
output[coordinate.y()][coordinate.x()],
this.simulation.at(coordinate).get(),
"Generation at " + coordinate
);
}
}
@Test
public void testNext() {
Coordinate coordinate = Coordinate.of(1, 1);
Cell<GameOfLifeState> cell = simulation.at(coordinate);
GameOfLifeState oldState = cell.get();
simulation.next(coordinate);
assertNotEquals(oldState, cell.get());
}
@Test
public void testCopy() {
Coordinate source = Coordinate.of(1, 1);
Coordinate destination = Coordinate.of(2, 2);
this.simulation.at(source).set(ALIVE);
simulation.copy(source, destination);
assertEquals(
ALIVE,
this.simulation.at(destination).get()
);
}
@Test
public void testColor() {
Coordinate coordinate = Coordinate.of(1, 1);
assertEquals(Color.WHITE, this.simulation.getColor(coordinate));
this.simulation.at(coordinate).set(ALIVE);
assertEquals(Color.RED, this.simulation.getColor(coordinate));
}
@Test
public void testSetChangeListener() {
Coordinate coordinate = Coordinate.of(1, 1);
Coordinate otherCoordinate = Coordinate.of(0,2);
Cell<GameOfLifeState> cell = simulation.at(coordinate);
List<GameOfLifeState> states = new ArrayList<>();
Runnable listener = () -> states.add(this.simulation.at(coordinate).get());
simulation.setChangeListener(coordinate, listener);
this.simulation.at(otherCoordinate).set(ALIVE);
assertEquals(Collections.emptyList(), states);
this.simulation.at(coordinate).set(ALIVE);
this.simulation.at(otherCoordinate).set(DEAD);
assertEquals(List.of(ALIVE), states);
this.simulation.at(coordinate).set(ALIVE);
this.simulation.at(otherCoordinate).set(ALIVE);
this.simulation.at(coordinate).set(DEAD);
assertEquals(List.of(ALIVE, ALIVE, DEAD), states);
}
@Test
public void testSetGenerationNumberChangeListener() {
List<Integer> values = new ArrayList<>();
OnChangeListener<Integer> listener = (oldValue, newValue) -> values.add(newValue);
simulation.setGenerationNumberChangeListener(listener);
assertEquals(Collections.emptyList(), values);
simulation.clear();
assertEquals(List.of(0), values);
simulation.updateToNextGeneration();
assertEquals(List.of(0,1), values);
simulation.updateToNextGeneration();
simulation.updateToNextGeneration();
assertEquals(List.of(0,1,2,3), values);
}
@Test
public void testClear() {
for (Coordinate coordinate : this.simulation) {
this.simulation.at(coordinate).set(ALIVE);
}
this.simulation.clear();
for (Coordinate coordinate : this.simulation) {
assertEquals(DEAD, this.simulation.at(coordinate).get());
}
}
@Test
public void testReset() {
randomGenerator.setSeed(321);
this.simulation.reset();
int count = 0;
for (Coordinate coordinate : this.simulation) {
if (this.simulation.at(coordinate).get().equals(ALIVE)) {
count = count + 1;
}
}
assertEquals(7, count);
}
}
\ No newline at end of file
package model;
import matrix.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, DEAD, DEAD }
, { ALIVE, ALIVE, DEAD, DEAD }
, { DEAD, DEAD, ALIVE, 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
package model;
import org.junit.jupiter.api.Test;
import java.util.List;
import static model.State.count;
import static org.junit.jupiter.api.Assertions.*;
class StateTest {
@Test
public void testCountMethodWithInteger() {
List<Integer> neighbours = List.of(1, 2, 1, 3, 1);
int result = count(1, neighbours);
assertEquals(3, result);
}
@Test
public void testCountMethodWithString() {
List<String> neighbours = List.of("apple", "banana", "apple", "cherry", "apple");
int result = count("apple", neighbours);
assertEquals(3, result);
}
@Test
public void testCountMethodWithEmptyList() {
List<Double> neighbours = List.of();
int result = count(5.0, neighbours);
assertEquals(0, result);
}
@Test
public void testCountMethodWithNoMatchingElements() {
List<Character> neighbours = List.of('a', 'b', 'c');
int result = count('x', neighbours);
assertEquals(0, result);
}
}
\ No newline at end of file
package model.automata;
import javafx.scene.paint.Color;
import model.State;
import org.junit.jupiter.api.Test;
import java.util.List;
import static model.automata.GameOfLifeState.*;
import static org.junit.jupiter.api.Assertions.*;
class GameOfLifeStateTest {
@Test
public void testGetColor() {
assertEquals(Color.WHITE, DEAD.getColor());
assertEquals(Color.RED, ALIVE.getColor());
}
@Test
public void testNext() {
assertEquals(ALIVE.next(), DEAD);
assertEquals(DEAD.next(), ALIVE);
}
@Test
public void testAliveUpdate() {
// Test with three alive neighbors, should be ALIVE
List<GameOfLifeState> aliveNeighbors =
List.of(ALIVE, DEAD, ALIVE, DEAD, ALIVE);
assertEquals(ALIVE, ALIVE.update(aliveNeighbors));
// Test with two alive neighbors, should be ALIVE
List<GameOfLifeState> twoAliveNeighbors =
List.of(ALIVE, DEAD, ALIVE, DEAD, DEAD);
assertEquals(ALIVE, ALIVE.update(twoAliveNeighbors));
// Test with four alive neighbors, should be DEAD
List<GameOfLifeState> fourAliveNeighbors =
List.of(ALIVE, ALIVE, DEAD, ALIVE, ALIVE);
assertEquals(DEAD, ALIVE.update(fourAliveNeighbors));
// Test with zero alive neighbors, should be DEAD
List<GameOfLifeState> zeroAliveNeighbors =
List.of(DEAD, DEAD, DEAD, DEAD);
assertEquals(DEAD, ALIVE.update(zeroAliveNeighbors));
}
@Test
public void testDeadUpdate() {
// Test with three alive neighbors, should be ALIVE
List<GameOfLifeState> aliveNeighbors =
List.of(ALIVE, DEAD, ALIVE, DEAD, ALIVE);
assertEquals(ALIVE, DEAD.update(aliveNeighbors));
// Test with two alive neighbors, should be DEAD
List<GameOfLifeState> twoAliveNeighbors =
List.of(ALIVE, DEAD, ALIVE, DEAD, DEAD);
assertEquals(DEAD, DEAD.update(twoAliveNeighbors));
// Test with four alive neighbors, should be DEAD
List<GameOfLifeState> fourAliveNeighbors =
List.of(ALIVE, ALIVE, DEAD, ALIVE, ALIVE);
assertEquals(DEAD, DEAD.update(fourAliveNeighbors));
// Test with zero alive neighbors, should be DEAD
List<GameOfLifeState> zeroAliveNeighbors =
List.of(DEAD, DEAD, DEAD, DEAD);
assertEquals(DEAD, DEAD.update(zeroAliveNeighbors));
}
}
\ No newline at end of file