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);
        }
Ejemplo n.º 5
0
        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>());
        }
Ejemplo n.º 8
0
 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);
        }