diff --git a/src/test/java/model/RandomConstrainedWangTileGeneratorTest.java b/src/test/java/model/RandomConstrainedWangTileGeneratorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..1510a23146b9cec02341f40770ac614d0dd31759 --- /dev/null +++ b/src/test/java/model/RandomConstrainedWangTileGeneratorTest.java @@ -0,0 +1,41 @@ +package model; + +import javafx.scene.paint.Color; +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Random; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RandomConstrainedWangTileGeneratorTest { + @Test + void testNextTile(){ + Side redSide = new ColoredSide(Color.RED); + Side blueSide = new ColoredSide(Color.BLUE); + + Tile blueTile = new UniformTile(blueSide); + Tile redTile = new UniformTile(redSide); + + Square square = new ArraySquare(); + Square northNeighbor = new ArraySquare(); + Square westNeighbor = new ArraySquare(); + + northNeighbor.put(redTile); + westNeighbor.put(blueTile); + + square.setNeighbor(northNeighbor, CardinalDirection.NORTH); + square.setNeighbor(westNeighbor, CardinalDirection.WEST); + + TileGenerator tileGenerator = new RandomConstrainedWangTileGenerator(List.of(Color.BLUE, Color.RED), + new Random(0)); + + for(int index = 0; index < 10; index++){ + Tile tile = tileGenerator.nextTile(square); + assertThat(tile.side(CardinalDirection.NORTH)).isEqualTo(redSide); + assertThat(tile.side(CardinalDirection.WEST)).isEqualTo(blueSide); + assertThat(tile.side(CardinalDirection.EAST)).isIn(List.of(redSide, blueSide)); + assertThat(tile.side(CardinalDirection.SOUTH)).isIn(List.of(redSide, blueSide)); + } + } +}