public virtual async Task <PeerToPeerSessionState> StartNewGameAsync(PeerToPeerSessionState session)
        {
            PeerToPeerGameState game = PeerToPeerGameState.CreateNew();

            session.GameId = game.GameId;

            game = await _storage.AddP2PGameAsync(game);

            return(await _storage.UpdateP2PSessionAsync(session));
        }
        public async Task StartNewGameAsync()
        {
            PeerToPeerGameService  svc     = new PeerToPeerGameService(_storage.Object);
            PeerToPeerGameState    game    = PeerToPeerGameState.CreateNew();
            PeerToPeerSessionState session = new PeerToPeerSessionState();

            _storage.Setup(p => p.UpdateP2PSessionAsync(It.IsAny <PeerToPeerSessionState>())).ReturnsAsync(session);

            PeerToPeerSessionState res = await svc.StartNewGameAsync(session);

            _storage.Verify(p => p.AddP2PGameAsync(It.IsAny <PeerToPeerGameState>()), Times.Once);
            _storage.Verify(p => p.UpdateP2PSessionAsync(It.IsAny <PeerToPeerSessionState>()), Times.Once);

            Assert.IsNotNull(res);
        }
        public async Task CleanupTest()
        {
            InMemoryStaticStorage s = new InMemoryStaticStorage
            {
                HoursToLive = 0
            };


            //clean results of older runs
            await s.Cleanup();

            for (int i = 0; i < 1000; i++)
            {
                var game = PeerToPeerGameState.CreateNew();
                await s.AddP2PGameAsync(game);
            }

            for (int i = 0; i < 1000; i++)
            {
                var session = new PeerToPeerSessionState()
                {
                    Code = i.ToString(),
                };
                await s.AddP2PSessionAsync(session);
            }

            for (int i = 0; i < 1000; i++)
            {
                var game = new GameState
                {
                    GameId = Guid.NewGuid().ToString()
                };
                await s.AddGameAsync(game);
            }

            await s.Cleanup();

            Assert.AreEqual(0, s.PeerToPeerGamesCount);
            Assert.AreEqual(0, s.PeerToPeerSessionsCount);
            Assert.AreEqual(0, s.GamesCount);
        }