| | using System; |
| | using NUnit.Framework; |
| | using Unity.MLAgents.Integrations.Match3; |
| |
|
| | namespace Unity.MLAgents.Tests.Integrations.Match3 |
| | { |
| | public class MoveTests |
| | { |
| | [Test] |
| | public void TestMoveEquivalence() |
| | { |
| | var board10x10 = new BoardSize { Rows = 10, Columns = 10 }; |
| | var moveUp = Move.FromPositionAndDirection(1, 1, Direction.Up, board10x10); |
| | var moveDown = Move.FromPositionAndDirection(2, 1, Direction.Down, board10x10); |
| | Assert.AreEqual(moveUp.MoveIndex, moveDown.MoveIndex); |
| |
|
| | var moveRight = Move.FromPositionAndDirection(1, 1, Direction.Right, board10x10); |
| | var moveLeft = Move.FromPositionAndDirection(1, 2, Direction.Left, board10x10); |
| | Assert.AreEqual(moveRight.MoveIndex, moveLeft.MoveIndex); |
| | } |
| |
|
| | [Test] |
| | public void TestNext() |
| | { |
| | var maxRows = 8; |
| | var maxCols = 13; |
| | var boardSize = new BoardSize |
| | { |
| | Rows = maxRows, |
| | Columns = maxCols |
| | }; |
| | |
| | var advanceMove = Move.FromMoveIndex(0, boardSize); |
| | for (var moveIndex = 0; moveIndex < Move.NumPotentialMoves(boardSize); moveIndex++) |
| | { |
| | var moveFromIndex = Move.FromMoveIndex(moveIndex, boardSize); |
| | Assert.AreEqual(advanceMove.MoveIndex, moveFromIndex.MoveIndex); |
| | Assert.AreEqual(advanceMove.Row, moveFromIndex.Row); |
| | Assert.AreEqual(advanceMove.Column, moveFromIndex.Column); |
| | Assert.AreEqual(advanceMove.Direction, moveFromIndex.Direction); |
| |
|
| | advanceMove.Next(boardSize); |
| | } |
| | } |
| |
|
| | |
| | [TestCase(-1, 5, Direction.Up)] |
| | [TestCase(10, 5, Direction.Up)] |
| | [TestCase(5, -1, Direction.Up)] |
| | [TestCase(5, 10, Direction.Up)] |
| | |
| | [TestCase(0, 5, Direction.Down)] |
| | [TestCase(9, 5, Direction.Up)] |
| | [TestCase(5, 0, Direction.Left)] |
| | [TestCase(5, 9, Direction.Right)] |
| | public void TestInvalidMove(int row, int col, Direction dir) |
| | { |
| | var board10x10 = new BoardSize { Rows = 10, Columns = 10 }; |
| | Assert.Throws<IndexOutOfRangeException>(() => |
| | { |
| | Move.FromPositionAndDirection(row, col, dir, board10x10); |
| | }); |
| | } |
| | } |
| | } |
| |
|