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);
        }
示例#5
0
    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);
        }