|
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); |
|
}); |
|
} |
|
} |
|
} |
|
|