public void BinaryOrTest() { string[] shape1 = { "x..............", ".x.............", "..x............", "...x...........", }; string[] shape2 = { "..............x", ".............x.", "............x..", "...........x...", }; var t1 = BinaryTrack.FromString(_gameProps, shape1); var t2 = BinaryTrack.FromString(_gameProps, shape2); var result = t1.BinaryOr(t2); string[] resultShape = { "x.............x", ".x...........x.", "..x.........x..", "...x.......x...", }; MapAssert.MatchesShape(_gameProps, result, resultShape); }
public void Move_West_ShiftNeeded() { var shape = new[] { ".xx............", "Xxx............", "...............", "...............", }; BinaryTrack sut = BinaryTrack.FromString(_gameProps, shape); var output = sut.MoveWest(); Assert.AreEqual((0, 1), output.Head); var map = output.ToCartesian(); MapAssert.AllCoordinatesAreZeroExcept(map, (2, 0), (3, 0), (0, 1), (1, 1), (2, 1), (3, 1)); }
public void Move_North() { var shape = new[] { "xx.............", ".xX............", "...............", "...............", }; BinaryTrack sut = BinaryTrack.FromString(_gameProps, shape); var output = sut.MoveNorth(); Assert.AreEqual((2, 0), output.Head); var map = output.ToCartesian(); MapAssert.AllCoordinatesAreZeroExcept(map, (0, 0), (1, 0), (1, 1), (2, 1), (2, 0)); }
public void Move_South_NoShiftNeeded() { var shape = new[] { "...............", ".............xx", ".............Xx", "..............x", }; BinaryTrack sut = BinaryTrack.FromString(_gameProps, shape); var output = sut.MoveSouth(); Assert.AreEqual((13, 3), output.Head); var map = output.ToCartesian(); MapAssert.AllCoordinatesAreZeroExcept(map, (13, 1), (14, 1), (13, 2), (14, 2), (13, 3), (14, 3)); }
public void Move_West_NoShiftNeeded_CanMove() { var shape = new[] { "...............", "...............", "x.X............", "xxx............", }; BinaryTrack sut = BinaryTrack.FromString(_gameProps, shape); var output = sut.MoveWest(); Assert.AreEqual((1, 2), output.Head); var map = output.ToCartesian(); MapAssert.AllCoordinatesAreZeroExcept(map, (0, 2), (0, 3), (1, 2), (1, 3), (2, 2), (2, 3)); }
public void Move_East_NoShiftNeeded_CanMove() { var shape = new[] { "............X.x", "............xxx", "...............", "...............", }; BinaryTrack sut = BinaryTrack.FromString(_gameProps, shape); var output = sut.MoveEast(); Assert.AreEqual((13, 0), output.Head); var map = output.ToCartesian(); MapAssert.AllCoordinatesAreZeroExcept(map, (12, 0), (13, 0), (14, 0), (12, 1), (13, 1), (14, 1)); }
public void CanRepresentAllEmptyCells() { var gameProps = new GameProps { Width = 4, Height = 4, MyId = 0 }; string[] shape = { "....", "....", "....", "...." }; BinaryTrack sut = BinaryTrack.FromString(gameProps, shape); int[,] map = sut.ToCartesian(); MapAssert.AllCoordinatesAreZero(map); }
public void Shift_South_edge() { var gameProps = new GameProps { Width = 15, Height = 4, MyId = 0 }; string[] shape = { "...............", "...............", ".x.............", ".....x........." }; BinaryTrack sut = BinaryTrack.FromString(gameProps, shape); bool canMoveSouth = sut.TryShiftSouth(out var output); Console.WriteLine(output); Assert.IsFalse(canMoveSouth); Assert.IsNull(output); }
public void CanRepresentMixedFreeAndIslandCells() { var gameProps = new GameProps { Width = 4, Height = 4, MyId = 0 }; string[] shape = { "x..x", ".xx.", "....", "...." }; BinaryTrack sut = BinaryTrack.FromString(gameProps, shape); int[,] map = sut.ToCartesian(); Assert.AreEqual(gameProps.Width, map.GetLength(0)); Assert.AreEqual(gameProps.Height, map.GetLength(1)); MapAssert.AllCoordinatesAreZeroExcept(map, (0, 0), (3, 0), (1, 1), (2, 1)); }
public void Shift_East() { var gameProps = new GameProps { Width = 15, Height = 4, MyId = 0 }; string[] shape = { ".x.............", "x..............", "...............", "..............." }; BinaryTrack sut = BinaryTrack.FromString(gameProps, shape); sut.TryShiftEast(out var output); Console.WriteLine(output); var map = output.ToCartesian(); MapAssert.AllCoordinatesAreZeroExcept(map, (1, 1), (2, 0)); }
public void FetchPossibleMatches_StartFromDifferentPath() { var shape = new[] { "xxxxxxxxxxX....", "x..............", "x..............", "..............." }; BinaryTrack trackBinary = BinaryTrack.FromString(_gameProps, shape); var possibleMatches = _sut.PossibleTracksWithHeadFilter(trackBinary, BinaryTrack.FromEmpty(_gameProps)).ToList(); Console.WriteLine($"Total number of matches: {possibleMatches.Count}"); foreach (var possibleMatch in possibleMatches) { Console.WriteLine(); Console.WriteLine(possibleMatch); } Assert.AreEqual(6, possibleMatches.Count); CollectionAssert.AreEquivalent(possibleMatches.Select(x => x.Head), new [] { (10, 0), (11, 0), (12, 0), (10, 1), (11, 1), (12, 1) });