public void TestNewGameHasSevenAvailableMoves()
        {
            // Arrange
            var gameState = new ConnectFourState();

            // Act
            var moves = gameState.GetAvailableMoves();

            // Assert
            Assert.True((moves.Count == 7));
        }
示例#2
0
        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));
        }
示例#3
0
        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);
            }
        }