public async void OwnerCanNotStartAlreadyStartedGame() { var owner = new User(); var user = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; await roomController.JoinRoom("room"); context.CurrentUser = owner; await roomController.StartGame(); var room = (await context.Storage.Get <Room>()).Single(); var gameId = room.GameId; Assert.Equal(GameStartStatus.GameInProgress, await roomController.StartGame()); room = (await context.Storage.Get <Room>()).Single(); Assert.Equal(gameId, room.GameId); }
public async void UserCanNotJoinFullRoom() { var user1 = new User(); var user2 = new User(); var user3 = new User(); var user4 = new User(); var user5 = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = user1 }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user2; await roomController.JoinRoom("room"); context.CurrentUser = user3; await roomController.JoinRoom("room"); context.CurrentUser = user4; await roomController.JoinRoom("room"); context.CurrentUser = user5; Assert.Equal(RoomJoinStatus.RoomIsFull, await roomController.JoinRoom("room")); Assert.Equal(4, (await storage.Get <Room>()).Single().Players.Count); }
public async void RoomHasInGameStatusIfOwnerStartedGame() { var owner = new User(); var user = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; await roomController.JoinRoom("room"); context.CurrentUser = owner; await roomController.StartGame(); var ownerRoom = (await roomController.GetRooms()).Single(); Assert.Equal(RoomViewStatus.InGame, ownerRoom.Status); context.CurrentUser = user; var userRoom = (await roomController.GetRooms()).Single(); Assert.Equal(RoomViewStatus.InGame, userRoom.Status); }
public async void GameIdIsSavedInRoom() { var owner = new User() { Username = "******" }; var user = new User() { Username = "******" }; var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; await roomController.JoinRoom("room"); context.CurrentUser = owner; await roomController.StartGame(); var room = (await context.Storage.Get <Room>()).Single(); Assert.Equal("GameId", room.GameId); }
public async void UserIsSavedAfterBeingRegistered() { var context = new ModifiableContext() { Storage = new MemoryStorage() }; var userController = new UserController(context); Assert.Equal(Controllers.Statuses.UserRegisterStatus.OK, await userController.Register("user")); var user = (await context.Storage.Get <User>()).Single(); Assert.Equal("user", user.Username); }
public async void UserCanSeeGameType() { var owner = new User(); var user = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; Assert.Equal("game", (await roomController.GetRooms()).Single().GameType); }
public async void UsersCanNotCreateRoomsWithTheSameName() { var user1 = new User(); var user2 = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = user1 }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user2; Assert.Equal(RoomCreateStatus.DuplicateName, await roomController.CreateRoom("room", "game")); Assert.Single(await context.Storage.Get <Room>()); }
public bool InitializeApplication() { try { Storage = new MemoryStorage(); Context = new ModifiableContext() { Storage = Storage }; Engine = new Lobby(Context, new GameStarter()); return(true); } catch (Exception ex) { Console.WriteLine($"Error while creating new application: ${ex.Message}"); return(false); } }
public async void UserCanSeeListOfPlayers() { var owner = new User(); var user = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; var room = (await roomController.GetRooms()).Single(); Assert.Equal(new User[] { owner }, room.Players); }
public async void UserCanJoinRoomIfUserIsNotInRoom() { var owner = new User(); var user = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; Assert.Equal(RoomJoinStatus.OK, await roomController.JoinRoom("room")); var room = (await storage.Get <Room>(r => r.Name == "room")).Single(); Assert.Equal(new User[] { owner, user }, room.Players); }
public async void UserCanNotStartGameIfUserIsNotOwner() { var owner = new User(); var user = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; await roomController.JoinRoom("room"); Assert.Equal(GameStartStatus.NotAnOwner, await roomController.StartGame()); Assert.Null((await storage.Get <Room>()).Single().GameId); }
public async void OwnerCanStartGameIfRoomHasTwoOrMorePlayers() { var owner = new User(); var user = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; await roomController.JoinRoom("room"); context.CurrentUser = owner; Assert.Equal(GameStartStatus.OK, await roomController.StartGame()); }
public async void UserCanNotLeaveRoomIfGameAlreadyStarted() { var owner = new User(); var user = new User(); var storage = new MemoryStorage(); var context = new ModifiableContext() { Storage = storage, CurrentUser = owner }; var roomController = GetRoomController(context); await roomController.CreateRoom("room", "game"); context.CurrentUser = user; await roomController.JoinRoom("room"); context.CurrentUser = owner; await roomController.StartGame(); Assert.Equal(RoomLeaveStatus.GameInProgress, await roomController.LeaveRoom()); var room = (await storage.Get <Room>()).Single(); Assert.Equal(new User[] { owner, user }, room.Players); }