public void SetPosition_WhenHighValueSquareIsAvalibleThatCanMake2Rows_ThisSquareIsUsed(int expected, int alreadyPopulatedA, int alreadyPopulatedB, int alreadyPopulatedC) { // Arrange var mockLogger = new Mock <ILogger <ComputerMoveMedium> >(); IComputerMove classUnderTest = new ComputerMoveMedium(mockLogger.Object); var mockFallback = new Mock <IEnumerable <IComputerMove> >(); var game = new Game(); var player = Player.O; // assume square 5 was already taken (can make 4 rows) game.SetPosition(Player.X, 5); // assume squares 1, 3, 7, 9 are already taken (can make 3 rows) game.SetPosition(Player.X, 1); game.SetPosition(Player.X, 3); game.SetPosition(Player.X, 7); game.SetPosition(Player.X, 9); game.SetPosition(Player.X, alreadyPopulatedA); game.SetPosition(Player.X, alreadyPopulatedB); game.SetPosition(Player.X, alreadyPopulatedC); // Act var actual = classUnderTest.SetPosition(player, game.GetCurrentBoard(), mockFallback.Object); // Assert Assert.AreEqual(expected, actual); }
public void IsMatch_GivenComputerLevel_MatchesGivenExpected(ComputerLevel computerLevel, bool expected) { // Arrange var mockLogger = new Mock <ILogger <ComputerMoveMedium> >(); IComputerMove classUnderTest = new ComputerMoveMedium(mockLogger.Object); // Act var actual = classUnderTest.IsMatch(computerLevel); // Assert Assert.AreEqual(expected, actual); }
public void SetPosition_WhenHighValueSquareIsAvalibleThatCanMake4Rows_ThisSquareIsUsed() { // Arrange var mockLogger = new Mock <ILogger <ComputerMoveMedium> >(); IComputerMove classUnderTest = new ComputerMoveMedium(mockLogger.Object); var mockFallback = new Mock <IEnumerable <IComputerMove> >(); var game = new Game(); var player = Player.O; var expected = 5; // Only square 5 can make 4 rows // Act var actual = classUnderTest.SetPosition(player, game.GetCurrentBoard(), mockFallback.Object); // Assert Assert.AreEqual(expected, actual); }