def write_stats(self, spies_won): session = Session() game = Game(num_players=len(self.players), date=datetime.datetime.utcnow(), resistance_rounds=self.resistance_rounds, spy_rounds=self.spy_rounds) for player_name in self.players: player = Player.query.filter_by(name=player_name) if player is None: player = Player(name=player_name) if player in self.spies: if spies_won: player.spy_wins = player.spy_wins + 1 player.total_wins = player.total_wins + 1 else: player.spy_losses = player.spy_losses + 1 else: if not spies_won: player.resistance_wins = player.resistance_wins + 1 player.total_wins = player.total_wins + 1 else: player.resistance_losses = player.resistance_losses + 1 player.total_games = player.total_games + 1 player.win_percent = player.total_wins / player.total_games game.players.append(player) session.add(player) session.add(game) session.commit()
def write_stats(self, spies_won): session = Session() # First, write the game: game = Game(num_players=len(self.players), date=datetime.datetime.utcnow(), resistance_rounds=self.resistance_rounds, spy_rounds=self.spy_rounds) for player_name in self.players: player = Player.query.filter_by(name=player_name) if player is None: player = Player(name=player_name) if player in self.spies: if spies_won: player.spy_wins = player.spy_wins + 1 else: player.spy_losses = player.spy_losses + 1 else: if not spies_won: player.resistance_wins = player.resistance_wins + 1 else: player.resistance_losses = player.resistance_losses + 1 game.players.append(player) session.add(player) session.add(game) session.commit()
def test_players(self): session = Session() p1 = Player(name='test_user') p1.spy_wins = 10 session.add(p1) session.commit() g = Game(num_players=2, date=datetime.datetime.utcnow(), resistance_rounds=3, spy_rounds=2) p2 = Player(name='test_user2') g.players.append(p1) g.players.append(p2) session.add(g) session.add(p2) session.commit() player_list = session.query(Player).filter_by(name='test_user').all() self.assertEqual(len(player_list), 1) self.assertIn(p1, player_list) player = player_list[0] self.assertEqual(len(player.games), 1) self.assertIn(g, player.games)
def test_game_stats(self): session = Session() p1 = Player(name='test_user') p2 = Player(name='test_user2') games = [ Game(num_players=2, date=datetime.datetime.utcnow(), resistance_rounds=3, spy_rounds=2), Game(num_players=2, date=datetime.datetime.utcnow(), resistance_rounds=3, spy_rounds=2), Game(num_players=2, date=datetime.datetime.utcnow(), resistance_rounds=3, spy_rounds=2), Game(num_players=2, date=datetime.datetime.utcnow(), resistance_rounds=1, spy_rounds=3) ] for game in games: game.players.append(p1) game.players.append(p2) session.add(game) session.add(p1) session.add(p2) session.commit() total_games = session.query(Game).count() resistance_wins = session.query(Game).filter( Game.resistance_rounds >= 3).count() spy_wins = session.query(Game).filter(Game.spy_rounds >= 3).count() self.assertEqual(resistance_wins / total_games, 3 / 4) self.assertEqual(spy_wins / total_games, 1 / 4)
def test_games(self): session = Session() p1 = Player(name='test_user') p2 = Player(name='test_user2') g = Game(num_players=2, date=datetime.datetime.utcnow(), resistance_rounds=3, spy_rounds=2) g.players.append(p1) g.players.append(p2) session.add(g) session.add(p1) session.add(p2) session.commit() query_game = session.query(Game).first() self.assertEqual(query_game, g) self.assertEqual(len(query_game.players), 2) self.assertIn(p1, query_game.players)
def generate_test_players(self, num): for x in xrange(num): p = Player(name=str(x)) self.players.append(p)