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
  • ImprovedMouseInteraction
  • correction_video
  • going_further
  • main
  • ModifGUI
  • final2023
  • template
7 results

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
  • ImprovedMouseInteraction
  • correction_video
  • going_further
  • main
  • ModifGUI
  • final2023
  • template
7 results
Show changes
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 org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class GridTest {
private CellGrid grid;
// @BeforeEach
// public void initializeGrid() {
// grid = new CellGrid(6, 6);
// }
//
// @Test
// public void testGetNeighbours() {
// assertThat(grid.getNeighbors(1, 1)).isNotNull();
// assertThat(grid.getNeighbors(1, 1)).hasSize(8);
// assertThat(grid.getNeighbors(1, 1))
// .containsExactlyInAnyOrder(grid.getCell(0, 0),
// grid.getCell(0, 1),
// grid.getCell(0, 2),
// grid.getCell(1, 0),
// grid.getCell(1, 2),
// grid.getCell(2, 0),
// grid.getCell(2, 1),
// grid.getCell(2, 2));
// }
//
// @Test
// public void testCountAliveNeighbours() {
// assertThat(grid.countAliveNeighbors(1, 1)).isEqualTo(0);
// grid.getCell(2, 2).setState(CellState.ALIVE);
// grid.getCell(0, 0).setState(CellState.ALIVE);
// assertThat(grid.countAliveNeighbors(1, 1)).isEqualTo(2);
// }
//
// @Test
// public void testCalculateNextState() {
// grid.getCell(1, 0).setState(CellState.ALIVE);
// grid.getCell(1, 1).setState(CellState.ALIVE);
// grid.getCell(1, 2).setState(CellState.ALIVE);
// assertThat(grid.calculateNextState(0, 0).isAlive).isFalse();
// assertThat(grid.calculateNextState(1, 0).isAlive).isFalse();
// assertThat(grid.calculateNextState(1, 1).isAlive).isTrue();
// assertThat(grid.calculateNextState(2, 1).isAlive).isTrue();
// }
}
\ 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