Skip to content

Instantly share code, notes, and snippets.

@JamesBender
Last active June 22, 2016 18:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JamesBender/f5c4b4de0edcd6a1a0075d25e315558e to your computer and use it in GitHub Desktop.
Save JamesBender/f5c4b4de0edcd6a1a0075d25e315558e to your computer and use it in GitHub Desktop.
using System;
using GameNetworkInterfaces;
using Moq;
using NUnit.Framework;
using TicTacToe.Core;
namespace TicTacToe.Tests
{
[TestFixture]
class GameEngineTests
{
private GameEngine _gameEngine;
private string[,] _board;
private Mock<ICommonGameNetworkControl> _gameNetorkMock;
[SetUp]
public void SetupTests()
{
_gameNetorkMock = new Mock<ICommonGameNetworkControl>();
_gameEngine = new GameEngine(_gameNetorkMock.Object);
_board = new string[3, 3] { { " ", " ", " " }, { " ", " ", " " }, { " ", " ", " " } };
}
[Test]
public void WhenTheBoardIsEmptyThenThereIsNoCurrentWinner()
{
var expectedResult = " ";
var result = _gameEngine.GetWinner(_board);
Assert.AreEqual(expectedResult, result);
}
[Test]
public void WhenTheTopRowIsAllXThenXShouldWin()
{
var expectedResult = "X";
_board[0, 0] = "X";
_board[0, 1] = "X";
_board[0, 2] = "X";
var result = _gameEngine.GetWinner(_board);
Assert.AreEqual(expectedResult, result);
}
[Test]
public void WhenAUserSuppliesAGoodUserNameAndPasswordTheyAreLoggedIn()
{
var username = "Bob";
var password = "12345";
var expectedSessionToken = Guid.NewGuid();
_gameNetorkMock.Setup(x => x.Login(username, password)).Returns(expectedSessionToken);
var result = _gameEngine.Login(username, password);
Assert.AreEqual(expectedSessionToken, result);
}
[Test]
public void WhenAUserNameIsSuppliedButAPasswordIsNotThenGetAnEmptySessionToken()
{
var username = "Bob";
var password = string.Empty;
var expectedSessionToken = Guid.Empty;
_gameNetorkMock.Setup(x => x.Login(username, password)).Throws<ArgumentException>();
var result = _gameEngine.Login(username, password);
Assert.AreEqual(expectedSessionToken, result);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment