public void TestNewGameHasSevenAvailableMoves() { // Arrange var gameState = new ConnectFourState(); // Act var moves = gameState.GetAvailableMoves(); // Assert Assert.True((moves.Count == 7)); }
public void FullRun_Simple() { var state = new ConnectFourState(); foreach (var position in new[] { 0, 0, 1, 1, 2, 2, 3 }) { state.ApplyAction(new ConnectFourAction(position)); } Assert.IsFalse(state.Actions.Any()); Assert.AreEqual(1, state.GetResult(X)); Assert.AreEqual(0, state.GetResult(O)); }
private IEnumerable <ConnectFourState> GetStatesFromData(string dataFileName) { var fileProvider = new EmbeddedFileProvider(Assembly.GetAssembly(GetType())); var boards = fileProvider.ReadAllText(dataFileName) .SplitOnNewLine() .Batch(ConnectFourState.NumRows + 1); foreach (var rows in boards) { var board = rows .Reverse() // reverse the order because the bottom-left position is actually the first element in the board state .Skip(1) // skip the delimiter row at the bottom of the board (i.e. "-------") .Select(row => row.PadRight(ConnectFourState.NumCols)) .SelectMany(s => s.Select(c => c == 'X' ? X : c == 'O' ? O : _)) .ToArray(); var state = new ConnectFourState(board); yield return(state); } }