From 64f863949a4100d632124e19f54b8cc93fdc79fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Fri, 3 Jul 2020 11:05:48 +0200 Subject: add quick and dirty tests --- .../asynk/gdx/boardgame/test/DesktopLauncher.java | 12 ++-- test/src/ch/asynk/gdx/boardgame/test/Tests.java | 82 ++++++++++++++++++++++ 2 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 test/src/ch/asynk/gdx/boardgame/test/Tests.java diff --git a/test/src/ch/asynk/gdx/boardgame/test/DesktopLauncher.java b/test/src/ch/asynk/gdx/boardgame/test/DesktopLauncher.java index 2c9066f..a1dc054 100644 --- a/test/src/ch/asynk/gdx/boardgame/test/DesktopLauncher.java +++ b/test/src/ch/asynk/gdx/boardgame/test/DesktopLauncher.java @@ -4,11 +4,15 @@ import com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; public class DesktopLauncher { - public static void main (String[] arg) { - LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); - new LwjglApplication(new GdxBoardTest(), config); + public static void main (String[] arg) { + + Tests tests = new Tests(); + tests.run(); + + LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); + new LwjglApplication(new GdxBoardTest(), config); config.title = "gdx-boardgame Demo"; config.width=800; config.height=600; - } + } } diff --git a/test/src/ch/asynk/gdx/boardgame/test/Tests.java b/test/src/ch/asynk/gdx/boardgame/test/Tests.java new file mode 100644 index 0000000..f6e2198 --- /dev/null +++ b/test/src/ch/asynk/gdx/boardgame/test/Tests.java @@ -0,0 +1,82 @@ +package ch.asynk.gdx.boardgame.test; + +import com.badlogic.gdx.math.Vector2; + +import ch.asynk.gdx.boardgame.Tile; +import ch.asynk.gdx.boardgame.tilestorages.TileStorage; +import ch.asynk.gdx.boardgame.tilestorages.ArrayTileStorage; +import ch.asynk.gdx.boardgame.boards.Board; +import ch.asynk.gdx.boardgame.boards.BoardFactory; + +public class Tests +{ + private Board board; + private TileStorage tileStorage; + private Vector2 v; + + public Tests() + { + v = new Vector2(); + } + + public void run () + { + System.err.println("Run tests ..."); + runHexVertical(); + runHexHorizontal(); + System.err.println("done."); + } + + private void runHexVertical() + { + board = BoardFactory.getBoard(10, 9, BoardFactory.BoardType.HEX, 110, 50, 103, BoardFactory.BoardOrientation.VERTICAL, this::getTile); + tileStorage = new ArrayTileStorage(board.size()); + testTouch(899, 602, 5, 3, 812, 653, 32); + testTouch(906, 593, 5, 2, 907, 488, 23); + testTouch(916, 601, 6, 3, 1002, 653, 33); + } + + private void runHexHorizontal() + { + board = BoardFactory.getBoard(9, 10, BoardFactory.BoardType.HEX, 110, 103, 50, BoardFactory.BoardOrientation.HORIZONTAL, this::getTile); + tileStorage = new ArrayTileStorage(board.size()); + testTouch(705, 1103, 3, 7, 653, 1193, 34); + testTouch(707, 1092, 3, 6, 653, 1002, 33); + testTouch(715, 1096, 4, 7, 818, 1097, 43); + } + + private void testTouch(int tx, int ty, int x, int y, int cx, int cy, int g) + { + String title = String.format("[%d;%d] -> [%d;%d] (%d;%d) %d : ", tx, ty, x, y, cx, cy, g); + board.toBoard(tx, ty, v); + Tile t = board.getTile((int)v.x, (int)v.y); + int k = board.genKey(t.x, t.y); + check((t.x == x), title, "x", t.x); + check((t.y == y), title, "y", t.y); + check(((int)t.cx == cx), title, "cx", (int)t.cx); + check(((int)t.cy == cy), title, "cy", (int)t.cy); + check((g == k), title, "Key", g); + } + + private Tile getTile(int x, int y, boolean isOnMap) + { + if (isOnMap) + return tileStorage.getTile(x, y, board::genKey, this::buildTile); + return Tile.OffMap; + } + + private Tile buildTile(int x, int y) + { + final Vector2 v = new Vector2(); + board.centerOf(x, y, v); + int k = board.genKey(x, y); + return new Hex(x, y, v.x, v.y, k, Terrain.get(k)); + } + + private void check(boolean condition, String title, String what, int got) + { + if (!condition) { + System.err.println( " :: " + title + "failed on : " + what + " got " + got); + } + } +} -- cgit v1.1-2-g2b99