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 static async Task storage_can_be_migrated_by_get_request() { var v1 = new MemoryStorage<Migration>(); var v2 = new MemoryStorage<Migration>(); var migrate = new StorageMigration<Migration>(v2, v1, null, true); await v1.Put(new Migration { Id = 1, Time = DateTime.UtcNow }).ConfigureAwait(false); Assert.Null(await v2.Get(StorageKey.Get(1)).ConfigureAwait(false)); Assert.Equal( await v1.Get(StorageKey.Get(1)).ConfigureAwait(false), await migrate.Get(StorageKey.Get(1)).ConfigureAwait(false)); Assert.Null(await v1.Get(StorageKey.Get(1)).ConfigureAwait(false)); Assert.Equal( await v2.Get(StorageKey.Get(1)).ConfigureAwait(false), await migrate.Get(StorageKey.Get(1)).ConfigureAwait(false)); }
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 void Start() { Converter = new ObjectConverterBase64(); Transformer = new MemoryStorageTransformer(Converter); Storage = new MemoryStorage(); Storage.Insert("Key1", "string value"); Storage.Insert("Key2", 2.4f); Storage.Insert("Key3", 1); Storage.Insert("Key4", true); string transformedString = Transformer.MemoryStorageToString(Storage); Debug.LogFormat("{0}\n{1}\n", "Transformed string:", transformedString); MemoryStorage transformedStorage = Transformer.StringToMemoryStorage(transformedString); Debug.Log(transformedStorage.Get <string> ("Key1")); Debug.Log(transformedStorage.GetValue <float> ("Key2")); Debug.Log(transformedStorage.GetValue <int> ("Key3")); Debug.Log(transformedStorage.GetValue <bool> ("Key4")); }
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); }