Add and fix tests for the Serializers.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
5a642b354b
commit
3bf438ffb9
4 changed files with 107 additions and 0 deletions
|
@ -86,6 +86,21 @@ public class Wilson extends AbstractMazeGeneratorAlgorithm {
|
||||||
direction = determineDirectionForDigging(maze.getEnd());
|
direction = determineDirectionForDigging(maze.getEnd());
|
||||||
t = maze.getEndTile();
|
t = maze.getEndTile();
|
||||||
this.digTo(t, direction);
|
this.digTo(t, direction);
|
||||||
|
// seal all walls, mark all as visited
|
||||||
|
for (int x = 0; x < maze.getWidth(); x++) {
|
||||||
|
for (int y = 0; y < maze.getHeight(); y++) {
|
||||||
|
maze.getTileAt(x, y).forEach(tile -> {
|
||||||
|
Stream.of(Direction.values())
|
||||||
|
.forEach(d -> {
|
||||||
|
if (tile.hasWallAt(d)) {
|
||||||
|
tile.preventDiggingToOrFrom(d);
|
||||||
|
} else {
|
||||||
|
tile.digFrom(d);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|
|
@ -13,6 +13,8 @@ class SerializerDeserializerV1Test {
|
||||||
new RandomDepthFirst(expected).run();
|
new RandomDepthFirst(expected).run();
|
||||||
final byte[] bytes = SerializerDeserializerV1.serialize(expected);
|
final byte[] bytes = SerializerDeserializerV1.serialize(expected);
|
||||||
final Maze result = SerializerDeserializerV1.deserialize(bytes);
|
final Maze result = SerializerDeserializerV1.deserialize(bytes);
|
||||||
|
assertThat(result.getAlgorithm()).isNull();
|
||||||
|
expected.setAlgorithm(null);
|
||||||
assertThat(result).isEqualTo(expected);
|
assertThat(result).isEqualTo(expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +24,8 @@ class SerializerDeserializerV1Test {
|
||||||
new RandomDepthFirst(expected).run();
|
new RandomDepthFirst(expected).run();
|
||||||
final byte[] bytes = SerializerDeserializerV1.serialize(expected);
|
final byte[] bytes = SerializerDeserializerV1.serialize(expected);
|
||||||
final Maze result = SerializerDeserializerV1.deserialize(bytes);
|
final Maze result = SerializerDeserializerV1.deserialize(bytes);
|
||||||
|
assertThat(result.getAlgorithm()).isNull();
|
||||||
|
expected.setAlgorithm(null);
|
||||||
assertThat(result).isEqualTo(expected);
|
assertThat(result).isEqualTo(expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +35,8 @@ class SerializerDeserializerV1Test {
|
||||||
new RandomDepthFirst(expected).run();
|
new RandomDepthFirst(expected).run();
|
||||||
final byte[] bytes = SerializerDeserializerV1.serialize(expected);
|
final byte[] bytes = SerializerDeserializerV1.serialize(expected);
|
||||||
final Maze result = SerializerDeserializerV1.deserialize(bytes);
|
final Maze result = SerializerDeserializerV1.deserialize(bytes);
|
||||||
|
assertThat(result.getAlgorithm()).isNull();
|
||||||
|
expected.setAlgorithm(null);
|
||||||
assertThat(result).isEqualTo(expected);
|
assertThat(result).isEqualTo(expected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
package ch.fritteli.maze.generator.serialization.v2;
|
||||||
|
|
||||||
|
import ch.fritteli.maze.generator.algorithm.RandomDepthFirst;
|
||||||
|
import ch.fritteli.maze.generator.algorithm.Wilson;
|
||||||
|
import ch.fritteli.maze.generator.model.Maze;
|
||||||
|
import ch.fritteli.maze.generator.model.Position;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
class SerializerDeserializerV2Test {
|
||||||
|
@Test
|
||||||
|
void testSerializeDeserializeTiny() throws IOException {
|
||||||
|
final Maze expected = new Maze(2, 2, 255, new Position(0, 0), new Position(1, 1));
|
||||||
|
new RandomDepthFirst(expected).run();
|
||||||
|
final byte[] bytes = SerializerDeserializerV2.serialize(expected);
|
||||||
|
final Maze result = SerializerDeserializerV2.deserialize(bytes);
|
||||||
|
assertThat(result.getAlgorithm()).isNull();
|
||||||
|
expected.setAlgorithm(null);
|
||||||
|
assertThat(result).isEqualTo(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSerializeDeserializeMedium() throws IOException {
|
||||||
|
final Maze expected = new Maze(20, 20, -271828182846L);
|
||||||
|
new Wilson(expected).run();
|
||||||
|
final byte[] bytes = SerializerDeserializerV2.serialize(expected);
|
||||||
|
final Maze result = SerializerDeserializerV2.deserialize(bytes);
|
||||||
|
assertThat(result.getAlgorithm()).isNull();
|
||||||
|
expected.setAlgorithm(null);
|
||||||
|
assertThat(result).isEqualTo(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSerializeDeserializeLarge() throws IOException {
|
||||||
|
final Maze expected = new Maze(200, 320, 3141592653589793238L);
|
||||||
|
new Wilson(expected).run();
|
||||||
|
final byte[] bytes = SerializerDeserializerV2.serialize(expected);
|
||||||
|
final Maze result = SerializerDeserializerV2.deserialize(bytes);
|
||||||
|
assertThat(result.getAlgorithm()).isNull();
|
||||||
|
expected.setAlgorithm(null);
|
||||||
|
assertThat(result).isEqualTo(expected);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package ch.fritteli.maze.generator.serialization.v3;
|
||||||
|
|
||||||
|
import ch.fritteli.maze.generator.algorithm.RandomDepthFirst;
|
||||||
|
import ch.fritteli.maze.generator.algorithm.Wilson;
|
||||||
|
import ch.fritteli.maze.generator.model.Maze;
|
||||||
|
import ch.fritteli.maze.generator.model.Position;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
class SerializerDeserializerV3Test {
|
||||||
|
@Test
|
||||||
|
void testSerializeDeserializeTiny() throws IOException {
|
||||||
|
final Maze expected = new Maze(2, 2, 255, new Position(0, 0), new Position(1, 1));
|
||||||
|
new RandomDepthFirst(expected).run();
|
||||||
|
final byte[] bytes = SerializerDeserializerV3.serialize(expected);
|
||||||
|
final Maze result = SerializerDeserializerV3.deserialize(bytes);
|
||||||
|
assertThat(result).isEqualTo(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSerializeDeserializeMedium() throws IOException {
|
||||||
|
final Maze expected = new Maze(20, 20, -271828182846L);
|
||||||
|
new Wilson(expected).run();
|
||||||
|
final byte[] bytes = SerializerDeserializerV3.serialize(expected);
|
||||||
|
final Maze result = SerializerDeserializerV3.deserialize(bytes);
|
||||||
|
assertThat(result).isEqualTo(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSerializeDeserializeLarge() throws IOException {
|
||||||
|
final Maze expected = new Maze(200, 320, 3141592653589793238L);
|
||||||
|
new Wilson(expected).run();
|
||||||
|
final byte[] bytes = SerializerDeserializerV3.serialize(expected);
|
||||||
|
final Maze result = SerializerDeserializerV3.deserialize(bytes);
|
||||||
|
assertThat(result).isEqualTo(expected);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue