def testInterrupted(self): sut = TheDominator() player = Player("foo") opponent = Player("bar") for i in range(0, 9): game = Game(player.name, 10, opponent.name, 0, i) game.skillChangeToBlue = -1 player.game(game) opponent.game(game) result = sut.applies(player, game, opponent, None) self.assertFalse(result) baz = Player("baz") game = Game(player.name, 10, baz.name, 0, 9) game.skillChangeToBlue = -1 player.game(game) result = sut.applies(player, game, baz, None) self.assertFalse(result) game = Game(player.name, 0, opponent.name, 10, 10) game.skillChangeToBlue = -1 player.game(game) opponent.game(game) result = sut.applies(player, game, opponent, None) self.assertFalse(result) result = sut.applies(opponent, game, player, None) self.assertFalse(result)
def _create(self): player = Player("foo") game0 = Game(player.name, 10, "bar", 0, 1) game0.skillChangeToBlue = 2 player.games.append(game0) game1 = Game(player.name, 10, "bar", 0, 2) game1.skillChangeToBlue = -3 player.games.append(game1) game2 = Game(player.name, 10, "bar", 0, 3) game2.skillChangeToBlue = 4 player.games.append(game2) game3 = Game(player.name, 10, "bar", 0, 4) game3.skillChangeToBlue = -1 player.games.append(game3) return player
def test(self): game = Game('red', 4, 'blue', 6, 1) game.skillChangeToBlue = 2 game.redPosChange = -1 game.redPosAfter = 2 game.bluePosChange = 1 game.bluePosAfter = 1 actual = sut.gameToJson(game, '../') self.assertEqual(actual['red']['name'], 'red') self.assertEqual(actual['red']['href'], '../player/red/json') self.assertEqual(actual['red']['score'], 4) self.assertEqual(actual['red']['skillChange'], -2) self.assertEqual(actual['red']['rankChange'], -1) self.assertEqual(actual['red']['newRank'], 2) self.assertEqual(actual['blue']['name'], 'blue') self.assertEqual(actual['blue']['href'], '../player/blue/json') self.assertEqual(actual['blue']['score'], 6) self.assertEqual(actual['blue']['skillChange'], 2) self.assertEqual(actual['blue']['rankChange'], 1) self.assertEqual(actual['blue']['newRank'], 1) self.assertEqual(actual['positionSwap'], True) self.assertEqual(actual['date'], 1)
def test(self): games = [] game = Game('red', 6, 'blue', 4, 1) game.skillChangeToBlue = -2.5 games.append(game) game = Game('red', 1, 'blue', 9, 1) game.skillChangeToBlue = 10.4 games.append(game) games = rankTransform.do(games) self.assertEqual(1, games[0].redPosAfter) self.assertEqual(2, games[0].bluePosAfter) self.assertEqual(2, games[1].redPosAfter) self.assertEqual(-1, games[1].redPosChange) self.assertEqual(1, games[1].bluePosAfter) self.assertEqual(1, games[1].bluePosChange)
def testInactive(self): games = [] game = Game('red', 6, 'blue', 4, 1) game.skillChangeToBlue = -2.5 games.append(game) game = Game('red', 5, 'green', 5, 6000000) game.skillChangeToBlue = 0 games.append(game) games = rankTransform.do(games) self.assertEqual(1, games[0].redPosAfter) self.assertEqual(2, games[0].bluePosAfter) self.assertEqual(1, games[1].redPosAfter) self.assertEqual(0, games[1].redPosChange) self.assertEqual(2, games[1].bluePosAfter) self.assertEqual(0, games[1].bluePosChange)
def testOver100(self): ach = AgainstAllOdds() player = Player("foo") player.elo = 0 opponent = Player("bar") opponent.elo = 100 game = Game(player.name, 10, opponent.name, 0, 0) game.skillChangeToBlue = -1 player.game(game) opponent.game(game) result = ach.applies(player, game, opponent, None) self.assertTrue(result)
def testOver50_2(self): ach = AgainstTheOdds() player = Player("foo") player.elo = 0 opponent = Player("baz") opponent.elo = 50 game = Game(opponent.name, 0, player.name, 10, 0) game.skillChangeToBlue = 10 player.game(game) opponent.game(game) result = ach.applies(player, game, opponent, None) self.assertTrue(result)
def testUnder50(self): ach = AgainstTheOdds() player = Player("foo") player.elo = 0 opponent = Player("bar") opponent.elo = 49 game = Game(player.name, 10, opponent.name, 0, 0) game.skillChangeToBlue = -50 player.game(game) opponent.game(game) result = ach.applies(player, game, opponent, None) self.assertFalse(result)
def test(self): sut = Unstable() player = Player("foo") opponent = Player("bar") game = Game(player.name, 5, opponent.name, 5, 0) game.skillChangeToBlue = -5 player.game(game) opponent.game(game) result = sut.applies(player, game, opponent, None) self.assertFalse(result) result = sut.applies(opponent, game, player, None) self.assertFalse(result) game = Game(player.name, 10, opponent.name, 0, 0) game.skillChangeToBlue = -5 player.game(game) opponent.game(game) result = sut.applies(player, game, opponent, None) self.assertFalse(result) result = sut.applies(opponent, game, player, None) self.assertFalse(result) game = Game(player.name, 0, "bar", 10, 1) game.skillChangeToBlue = 5 player.game(game) opponent.game(game) result = sut.applies(player, game, opponent, None) self.assertTrue(result) result = sut.applies(opponent, game, player, None) self.assertTrue(result) game = Game(player.name, 0, "bar", 10, 1) game.skillChangeToBlue = 5 player.game(game) opponent.game(game) result = sut.applies(player, game, opponent, None) self.assertFalse(result) result = sut.applies(opponent, game, player, None) self.assertFalse(result)
def test(self): player = Player('foo') game = Game('foo', 4, 'red', 6, 1) game.skillChangeToBlue = -2 player.games.append(game) actual = sut.perPlayerStatsToJson(sut.getPerPlayerStats(player)) self.assertEqual(len(actual), 1) self.assertEqual(actual[0]['opponent'], 'red') self.assertEqual(actual[0]['skillChange'], 2) self.assertEqual(actual[0]['for'], 4) self.assertEqual(actual[0]['against'], 6) self.assertEqual(actual[0]['games'], 1) self.assertEqual(actual[0]['wins'], 0) self.assertEqual(actual[0]['losses'], 1)
def addGame(red, redScore, blue, blueScore, time, skillChangeToBlue=0): game = Game(red.name, redScore, blue.name, blueScore, time) game.skillChangeToBlue = skillChangeToBlue red.game(game) blue.game(game) return game