static void Main(string[] args) { _tickTackToe = new TicTacToeService(); Console.WriteLine("Welcome"); PlayTurn(); }
public void ShouldGetAllRoomsOfGame() { var service = TicTacToeService.GetInstance(); var rooms = service.GetListRooms(); Assert.IsTrue(rooms.Count > 0); }
public void ShouldNotCanBindPlayerMoreThanOneRoom() { var service = TicTacToeService.GetInstance(); var rooms = service.GetListRooms(); service.BindPlayerInRoom("1", "test1", rooms[0].Name); service.BindPlayerInRoom("1", "test1", rooms[1].Name); }
public void ShouldNotPlayerMakeMoveWhenItIsNotYourTime() { var service = TicTacToeService.GetInstance(); var rooms = service.GetListRooms(); service.BindPlayerInRoom("1", "test1", rooms[0].Name); service.BindPlayerInRoom("2", "test2", rooms[0].Name); service.MakeMove("2", rooms[0].Name, "a1"); }
public void ShouldRemovePlayerRoom() { var service = TicTacToeService.GetInstance(); var rooms = service.GetListRooms(); service.BindPlayerInRoom("1", "test1", rooms[0].Name); service.BindPlayerInRoom("2", "test2", rooms[0].Name); rooms[0].RemovePlayer("1"); }
public void ShouldNotCanBindARoomIfAlreadyHaveTwoPlayers() { var service = TicTacToeService.GetInstance(); var rooms = service.GetListRooms(); var room = rooms[0]; service.BindPlayerInRoom("1", "test1", room.Name); service.BindPlayerInRoom("2", "test2", room.Name); service.BindPlayerInRoom("3", "test3", rooms[0].Name); }
public void Empty_Request() { var service = new TicTacToeService(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter()); Assert.False(service.CanProcessRequest("", serverProperties)); }
public async Task DeleteAsync_InexistentId_ShouldReturnResultResponseWithError() { var ticTacToeService = new TicTacToeService(_repositoryMock.Object); var result = await _ticTacToeService.DeleteAsync(_ticTacToeTestsFixture.GetInexistentTicTacToeId()); result.Success.Should().BeFalse(); result.ValidationErrors.FirstOrDefault().Message.Should().Be("The activity wasn't found"); _repositoryMock.Verify(rm => rm.DeleteAsync(It.IsAny <TicTacToe>()), Times.Never); }
public async Task DeleteAsync_ShouldReturnResultResponseWithSuccess() { var id = _ticTacToeTestsFixture.GetRandomInt(); var ticTacToeService = new TicTacToeService(_repositoryMock.Object); var result = await _ticTacToeService.DeleteAsync(id); result.Success.Should().BeTrue(); _repositoryMock.Verify(rm => rm.DeleteAsync(It.IsAny <TicTacToe>()), Times.Once); }
public void Cant_Process_Root(string request) { var service = new TicTacToeService(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter()); Assert.False(service.CanProcessRequest(request, serverProperties)); }
public void Process_Request_Send_Json() { var zSocket = new MockZSocket(); var ticTacToeBox = new List <string> { "x", "-2-", "-3-", "-4-", "-5-", "-6-", "-7-", "@", "-9-" }; var mockAi = new MockAi() .StubMove( new TicTacToeBoxClass.TicTacToeBox( ListModule.OfSeq(ticTacToeBox))); var service = new TicTacToeService(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter(), new ServiceDependents(new JsonConverter(), new TicTacToeGame(new User(), mockAi, MakeSettings()))); var statusCode = service.ProcessRequest(GetJsonData(), new HttpResponse(zSocket), serverProperties); var example = @"{ ""board"" : [""x"", ""-2-"", ""-3-"", ""-4-"", ""-5-"", ""-6-"", ""-7-"", ""@"", ""-9-""], ""gameOver"" : ""false""}"; zSocket.VerifySend(GetByte("HTTP/1.1 200 OK\r\n"), GetByteCount("HTTP/1.1 200 OK\r\n")); zSocket.VerifySend(GetByte(example), GetByteCount(example)); zSocket.VerifySend(GetByte("Content-Length: " + GetByteCount(example) + "\r\n\r\n"), GetByteCount("Content-Length: " + GetByteCount(example) + "\r\n\r\n")); zSocket.VerifySend(GetByte("Content-Type: application/JSON\r\n"), GetByteCount("Content-Type: application/JSON\r\n")); zSocket.VerifySend(GetByte("Access-Control-Allow-Origin: *\r\n"), GetByteCount("Access-Control-Allow-Origin: *\r\n")); Assert.Equal("200 OK", statusCode); }
public void ShouldCanBindTwoPlayerInRoom() { var service = TicTacToeService.GetInstance(); var rooms = service.GetListRooms(); try { service.BindPlayerInRoom("1", "test1", rooms[0].Name); service.BindPlayerInRoom("2", "test2", rooms[0].Name); } catch { Assert.Fail("Exception in BindPlayerInRoom"); } }
public void Process_Request_Options() { var zSocket = new MockZSocket(); var service = new TicTacToeService(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter()); var statusCode = service.ProcessRequest(GetOptionData(), new HttpResponse(zSocket), serverProperties); zSocket.VerifySend(GetByte("HTTP/1.1 200 OK\r\n"), GetByteCount("HTTP/1.1 200 OK\r\n")); zSocket.VerifySend(GetByte("Access-Control-Allow-Origin: *\r\n"), GetByteCount("Access-Control-Allow-Origin: *\r\n")); zSocket.VerifySend(GetByte("Access-Control-Allow-Methods: POST, GET, OPTIONS\r\n"), GetByteCount("Access-Control-Allow-Methods: POST, GET, OPTIONS\r\n")); Assert.Equal("200 OK", statusCode); }
public void Process_Request_No_Send_Json() { var zSocket = new MockZSocket(); var service = new TicTacToeService(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter(), new ServiceDependents(new JsonConverter(), new TicTacToeGame(new User(), new Ai(), MakeSettings()))); var statusCode = service.ProcessRequest(GetRequestNoJson(), new HttpResponse(zSocket), serverProperties); var example = @"{ ""board"" : [""-1-"", ""-2-"", ""-3-"", ""-4-"", ""-5-"", ""-6-"", ""-7-"", ""-8-"", ""-9-""], ""gameOver"" : ""false""}"; zSocket.VerifySend(GetByte("HTTP/1.1 200 OK\r\n"), GetByteCount("HTTP/1.1 200 OK\r\n")); zSocket.VerifySend(GetByte(example), GetByteCount(example)); zSocket.VerifySend(GetByte("Content-Length: " + GetByteCount(example) + "\r\n\r\n"), GetByteCount("Content-Length: " + GetByteCount(example) + "\r\n\r\n")); zSocket.VerifySend(GetByte("Content-Type: application/JSON\r\n"), GetByteCount("Content-Type: application/JSON\r\n")); zSocket.VerifySend(GetByte("Access-Control-Allow-Origin: *\r\n"), GetByteCount("Access-Control-Allow-Origin: *\r\n")); Assert.Equal("200 OK", statusCode); }
public void Can_Process_Root(string requestListing) { var request = requestListing + "\r\n" + "Host: localhost:8080\r\n" + "Connection: keep-alive\r\n" + "Content-Length: 33\r\n" + "Cache-Control: max-age = 0\r\n" + "Accept: text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp,*;q=0.8\r\n" + "Origin: http://localhost:8080\r\n" + "Upgrade-Insecure-Requests: 1\r\n" + "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36\r\n" + "Content-Type: application/JSON\r\n" + "Referer: http://localhost:8080/form\r\n" + "Accept-Encoding: gzip, deflate\r\n" + "Accept-Language: en-US,en;q=0.8\r\n\r\n"; var service = new TicTacToeService(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter()); Assert.True(service.CanProcessRequest(request, serverProperties)); }
public TicTacToe(TicTacToeService tic) { _games = tic._activeGames; }
public void User_Moves_Spot_Taken() { var settings = new GameSettings.gameSetting(3, "x", "@" , (int)PlayerValues.playerVals.Human , false, false, false); var formPage = new StringBuilder(); formPage.Append(@"<!DOCTYPE html>"); formPage.Append(@"<html>"); formPage.Append(@"<head><title>Vatic TicTacToe</title></head>"); formPage.Append(@"<body>"); formPage.Append(@"<p>Spot Taken</p>"); formPage.Append(@"<form action=""/"" method=""post"">"); formPage.Append( @"<table style=""width: 100 % "">" + "<tr>" + @"<td>x</td>" + @"<td>@</td>" + @"<td><button name=box type=""submit"" value=""-3-"">-3-</button></td></tr>" + "<tr>" + @"<td><button name=box type=""submit"" value=""-4-"">-4-</button></td>" + @"<td><button name=box type=""submit"" value=""-5-"">-5-</button></td>" + @"<td><button name=box type=""submit"" value=""-6-"">-6-</button></td></tr>" + "<tr>" + @"<td><button name=box type=""submit"" value=""-7-"">-7-</button></td>" + @"<td><button name=box type=""submit"" value=""-8-"">-8-</button></td>" + @"<td><button name=box type=""submit"" value=""-9-"">-9-</button></td></tr>" + "</table>" ); formPage.Append(@"<input type=""hidden"" name=""pos" + 0 + @""" value=""x""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 1 + @""" value=""@""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 2 + @""" value=""-3-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 3 + @""" value=""-4-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 4 + @""" value=""-5-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 5 + @""" value=""-6-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 6 + @""" value=""-7-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 7 + @""" value=""-8-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 8 + @""" value=""-9-""><br>"); formPage.Append(@"</form>"); formPage.Append(@"</body>"); formPage.Append(@"</html>"); var service = new TicTacToeService(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter(), new TicTacToeGame(new User(), new Ai(), settings)); var request = new StringBuilder(); request.Append("POST / HTTP/1.1\r\n"); request.Append("Host: localhost:8080\r\n"); request.Append("Connection: keep-alive\r\n"); request.Append("Content-Length: 86\r\n"); request.Append("Cache-Control: max-age=0\r\n"); request.Append("Origin: http://localhost:8080\r\n"); request.Append("Upgrade-Insecure-Requests: 1\r\n"); request.Append( "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36\r\n"); request.Append("Content-Type: application/x-www-form-urlencoded\r\n"); request.Append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*;q=0.8\r\n"); request.Append("Referer: http://localhost:8080/\r\n"); request.Append("Accept-Encoding: gzip, deflate\r\n"); request.Append("Accept-Language: en-US,en;q=0.8\r\n\r\n"); request.Append("box=1&pos0=x&pos1=@&pos2=-3-&pos3=-4-&pos4=-5-&pos5=-6-&pos6=-7-&pos7=-8-&pos8=-9-"); var zSocket = new MockZSocket(); var statueCode = service.ProcessRequest(request.ToString(), new HttpResponse(zSocket), serverProperties); Assert.Equal("200 OK", statueCode); zSocket.VerifySend(GetByte("HTTP/1.1 200 OK\r\n"), GetByteCount("HTTP/1.1 200 OK\r\n")); zSocket.VerifySend(GetByte("Cache-Control: no-cache\r\n"), GetByteCount("Cache-Control: no-cache\r\n")); zSocket.VerifySend(GetByte("Content-Type: text/html\r\n"), GetByteCount("Content-Type: text/html\r\n")); zSocket.VerifySend(GetByte("Content-Length: " + GetByteCount(formPage.ToString()) + "\r\n\r\n"), GetByteCount("Content-Length: " + GetByteCount(formPage.ToString()) + "\r\n\r\n")); }
public TicTacToeServiceTests(TicTacToeTestsFixture ticTacToeTestsFixture) { _ticTacToeTestsFixture = ticTacToeTestsFixture; _repositoryMock = _ticTacToeTestsFixture.GetTicTacToeRepositoryMock(); _ticTacToeService = new TicTacToeService(_repositoryMock.Object); }
public void Get_Request(string request) { var formPage = new StringBuilder(); formPage.Append(@"<!DOCTYPE html>"); formPage.Append(@"<html>"); formPage.Append(@"<head><title>Vatic TicTacToe</title></head>"); formPage.Append(@"<body>"); formPage.Append(@"<form action=""/"" method=""post"">"); formPage.Append( @"<table style=""width: 100 % "">" + "<tr>" + @"<td><button name=box type=""submit"" value=""-1-"">-1-</button></td>" + @"<td><button name=box type=""submit"" value=""-2-"">-2-</button></td>" + @"<td><button name=box type=""submit"" value=""-3-"">-3-</button></td>" + "</tr>" + "<tr>" + @"<td><button name=box type=""submit"" value=""-4-"">-4-</button></td>" + @"<td><button name=box type=""submit"" value=""-5-"">-5-</button></td>" + @"<td><button name=box type=""submit"" value=""-6-"">-6-</button></td>" + "</tr>" + "<tr>" + @"<td><button name=box type=""submit"" value=""-7-"">-7-</button></td>" + @"<td><button name=box type=""submit"" value=""-8-"">-8-</button></td>" + @"<td><button name=box type=""submit"" value=""-9-"">-9-</button></td>" + "</tr>" + "</table>" ); formPage.Append(@"<input type=""hidden"" name=""pos" + 0 + @""" value=""-" + 1 + @"-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 1 + @""" value=""-" + 2 + @"-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 2 + @""" value=""-" + 3 + @"-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 3 + @""" value=""-" + 4 + @"-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 4 + @""" value=""-" + 5 + @"-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 5 + @""" value=""-" + 6 + @"-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 6 + @""" value=""-" + 7 + @"-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 7 + @""" value=""-" + 8 + @"-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 8 + @""" value=""-" + 9 + @"-""><br>"); formPage.Append(@"</form>"); formPage.Append(@"</body>"); formPage.Append(@"</html>"); var zSocket = new MockZSocket(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter()); var service = new TicTacToeService(); var statueCode = service.ProcessRequest(request, new HttpResponse(zSocket), serverProperties); Assert.Equal("200 OK", statueCode); zSocket.VerifySend(GetByte("HTTP/1.1 200 OK\r\n"), GetByteCount("HTTP/1.1 200 OK\r\n")); zSocket.VerifySend(GetByte("Cache-Control: no-cache\r\n"), GetByteCount("Cache-Control: no-cache\r\n")); zSocket.VerifySend(GetByte("Content-Type: text/html\r\n"), GetByteCount("Content-Type: text/html\r\n")); zSocket.VerifySend(GetByte("Content-Length: " + GetByteCount(formPage.ToString()) + "\r\n\r\n"), GetByteCount("Content-Length: " + GetByteCount(formPage.ToString()) + "\r\n\r\n")); zSocket.VerifySend(GetByte(formPage.ToString()), GetByteCount(formPage.ToString())); }
// Constructor public TicTacToeModule(InteractiveService interactiveService, TicTacToeService tttService) { this.interactiveService = interactiveService; this.tttService = tttService; }
public TicTacToeModule(IConfiguration config, TicTacToeService service) : base(config) { _tttService = service; _tttService.Config = config; _tttService.ParentModule = this; }
public TicTacToeHub() { _service = TicTacToeService.GetInstance(); }
public void Setup() { _ticTacToe = new TicTacToeService(); }
public void Game_Is_Over() { var userTicTacToeBox = new List <string> { "x", "x", "x", "x", "x", "x", "x", "x", "x" }; var aITicTacToeBox = new List <string> { "x", "x", "x", "x", "x", "x", "x", "x", "x" }; var settings = new GameSettings.gameSetting(3, "x", "@" , (int)PlayerValues.playerVals.Human , false, false, false); var formPage = new StringBuilder(); formPage.Append(@"<!DOCTYPE html>"); formPage.Append(@"<html>"); formPage.Append(@"<head><title>Vatic TicTacToe</title></head>"); formPage.Append(@"<body>"); formPage.Append(@"<p>Game Over</p>"); formPage.Append(@"<a href=""http://127.0.0.1:5555""><button>Another Game?</button></a>"); formPage.Append(@"<form action=""/"" method=""post"">"); formPage.Append( @"<table style=""width: 100 % "">" + "<tr>" + @"<td>-1-</td>" + @"<td>x</td>" + @"<td>x</td></tr>" + "<tr>" + @"<td>x</td>" + @"<td>x</td>" + @"<td>x</td></tr>" + "<tr>" + @"<td>x</td>" + @"<td>x</td>" + @"<td>-9-</td></tr>" + "</table>" ); formPage.Append(@"<input type=""hidden"" name=""pos" + 0 + @""" value=""-1-""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 1 + @""" value=""x""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 2 + @""" value=""x""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 3 + @""" value=""x""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 4 + @""" value=""x""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 5 + @""" value=""x""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 6 + @""" value=""x""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 7 + @""" value=""x""><br>"); formPage.Append(@"<input type=""hidden"" name=""pos" + 8 + @""" value=""-9-""><br>"); formPage.Append(@"</form>"); formPage.Append(@"</body>"); formPage.Append(@"</html>"); var service = new TicTacToeService(); var serverProperties = new ServerProperties(null, 5555, new ServerTime(), new MockPrinter(), new TicTacToeGame(new MockUser() .StubMove(new TicTacToeBoxClass.TicTacToeBox( ListModule.OfSeq(userTicTacToeBox))) , new MockAi() .StubMove(new TicTacToeBoxClass.TicTacToeBox( ListModule.OfSeq(aITicTacToeBox))), settings)); var request = new StringBuilder(); request.Append("POST / HTTP/1.1\r\n"); request.Append("Host: localhost:8080\r\n"); request.Append("Connection: keep-alive\r\n"); request.Append("Content-Length: 86\r\n"); request.Append("Cache-Control: max-age=0\r\n"); request.Append("Origin: http://localhost:8080\r\n"); request.Append("Upgrade-Insecure-Requests: 1\r\n"); request.Append( "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36\r\n"); request.Append("Content-Type: application/x-www-form-urlencoded\r\n"); request.Append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*;q=0.8\r\n"); request.Append("Referer: http://localhost:8080/\r\n"); request.Append("Accept-Encoding: gzip, deflate\r\n"); request.Append("Accept-Language: en-US,en;q=0.8\r\n\r\n"); request.Append("box=-9-&pos0=-1-&pos1=x&pos2=x&pos3=x&pos4=x&pos5=x&pos6=x&pos7=x&pos8=-9-"); var zSocket = new MockZSocket(); var statueCode = service.ProcessRequest(request.ToString(), new HttpResponse(zSocket), serverProperties); Assert.Equal("200 OK", statueCode); zSocket.VerifySend(GetByte("HTTP/1.1 200 OK\r\n"), GetByteCount("HTTP/1.1 200 OK\r\n")); zSocket.VerifySend(GetByte("Cache-Control: no-cache\r\n"), GetByteCount("Cache-Control: no-cache\r\n")); zSocket.VerifySend(GetByte("Content-Type: text/html\r\n"), GetByteCount("Content-Type: text/html\r\n")); zSocket.VerifySend(GetByte("Content-Length: " + GetByteCount(formPage.ToString()) + "\r\n\r\n"), GetByteCount("Content-Length: " + GetByteCount(formPage.ToString()) + "\r\n\r\n")); }