summaryrefslogtreecommitdiff
path: root/worker_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'worker_test.py')
-rw-r--r--worker_test.py189
1 files changed, 189 insertions, 0 deletions
diff --git a/worker_test.py b/worker_test.py
new file mode 100644
index 0000000..22bedcb
--- /dev/null
+++ b/worker_test.py
@@ -0,0 +1,189 @@
+#!/usr/bin/python
+
+import pytest
+import rater
+
+class Match:
+ def __init__(self, game_mode, rosters):
+ self.api_id = ""
+ self.game_mode = game_mode
+ self.rosters = rosters
+ self.participants = [p for r in rosters for p in r.participants]
+
+class Roster:
+ def __init__(self, winner, participants):
+ self.api_id = ""
+ self.winner = winner
+ self.participants = participants
+
+class Participant:
+ def __init__(self, skill_tier, went_afk,
+ trueskill_mu, trueskill_sigma,
+ participant_items, player):
+ self.api_id = ""
+ self.skill_tier = skill_tier
+ self.went_afk = went_afk
+ self.participant_items = [participant_items]
+ self.player = [player]
+
+class ParticipantItems:
+ def __init__(self, trueskill_casual_mu, trueskill_casual_sigma,
+ trueskill_ranked_mu, trueskill_ranked_sigma,
+ trueskill_blitz_mu, trueskill_blitz_sigma,
+ trueskill_br_mu, trueskill_br_sigma):
+ self.api_id = ""
+ self.trueskill_casual_mu = trueskill_casual_mu
+ self.trueskill_casual_sigma = trueskill_casual_sigma
+ self.trueskill_ranked_mu = trueskill_ranked_mu
+ self.trueskill_ranked_sigma = trueskill_ranked_sigma
+ self.trueskill_blitz_mu = trueskill_blitz_mu
+ self.trueskill_blitz_sigma = trueskill_blitz_sigma
+ self.any_afk = False
+
+class Player:
+ def __init__(self, skill_tier,
+ rank_points_ranked,
+ rank_points_blitz,
+ trueskill_mu, trueskill_sigma,
+ trueskill_casual_mu, trueskill_casual_sigma,
+ trueskill_ranked_mu, trueskill_ranked_sigma,
+ trueskill_blitz_mu, trueskill_blitz_sigma,
+ trueskill_br_mu, trueskill_br_sigma):
+ self.api_id = ""
+ self.skill_tier = skill_tier
+ self.rank_points_ranked = rank_points_ranked
+ self.rank_points_blitz = rank_points_blitz
+ self.trueskill_mu = trueskill_mu
+ self.trueskill_sigma = trueskill_sigma
+ self.trueskill_casual_mu = trueskill_casual_mu
+ self.trueskill_casual_sigma = trueskill_casual_sigma
+ self.trueskill_ranked_mu = trueskill_ranked_mu
+ self.trueskill_ranked_sigma = trueskill_ranked_sigma
+ self.trueskill_blitz_mu = trueskill_blitz_mu
+ self.trueskill_blitz_sigma = trueskill_blitz_sigma
+
+
+class TestRater:
+ def test_get_trueskill_seed(self):
+ # test approx. by skill tier
+ player = Player(15, None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None)
+ mu, sigma = rater.get_trueskill_seed(player)
+ assert 1300 < mu - sigma < 1700
+
+ # test approx. by rank points
+ player = Player(0, 2500, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None)
+ mu, sigma = rater.get_trueskill_seed(player)
+ assert mu - sigma == 2500
+
+ player = Player(0, 2500, 100,
+ None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None)
+ mu, sigma = rater.get_trueskill_seed(player)
+ assert mu - sigma == 2500
+
+ player = Player(0, 100, 2500,
+ None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None)
+ mu, sigma = rater.get_trueskill_seed(player)
+ assert mu - sigma == 2500
+
+ player = Player(0, None, 2500,
+ None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None)
+ mu, sigma = rater.get_trueskill_seed(player)
+ assert mu - sigma == 2500
+
+ def test_rate_match(self):
+ # new user, only skill tier
+ g_player = lambda: Player(15, None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None)
+ g_participant_items = lambda: ParticipantItems(None, None,
+ None, None,
+ None, None,
+ None, None)
+ g_participant = lambda: Participant(0, False,
+ None, None,
+ g_participant_items(), g_player())
+ roster = Roster(True, [g_participant()]*3)
+ roster2 = Roster(False, [g_participant()]*3)
+ match = Match("ranked", [roster, roster2])
+
+ rater.rate_match(match)
+
+ assert match.rosters[0].participants[0].player[0].trueskill_mu is not None
+ assert match.rosters[0].participants[0].player[0].trueskill_ranked_mu is not None
+ assert match.rosters[0].participants[0].player[0].trueskill_ranked_sigma < match.rosters[0].participants[0].player[0].trueskill_ranked_mu
+ assert 500 < match.rosters[0].participants[0].player[0].trueskill_ranked_mu < 2500
+ assert match.rosters[0].participants[0].player[0].trueskill_casual_mu is None
+ assert match.rosters[0].participants[0].player[0].trueskill_mu > match.rosters[1].participants[0].player[0].trueskill_mu
+ assert match.rosters[0].participants[0].player[0].trueskill_ranked_mu > match.rosters[1].participants[0].player[0].trueskill_ranked_mu
+
+ def test_rate_match_returning(self):
+ # returning user
+ g_player = lambda: Player(None, None, None,
+ 2000, 100,
+ None, None,
+ None, None,
+ None, None,
+ None, None)
+ g_participant_items = lambda: ParticipantItems(None, None,
+ None, None,
+ None, None,
+ None, None)
+ g_participant = lambda: Participant(0, False,
+ None, None,
+ g_participant_items(), g_player())
+ roster = Roster(True, [g_participant()]*3)
+ roster2 = Roster(False, [g_participant()]*3)
+ match = Match("ranked", [roster, roster2])
+
+ rater.rate_match(match)
+
+ assert 1800 < match.rosters[0].participants[0].player[0].trueskill_ranked_mu < 2200
+
+ def test_rate_match_afk(self):
+ # afk
+ g_player = lambda: Player(None, None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None,
+ None, None)
+ g_participant_items = lambda: ParticipantItems(None, None,
+ None, None,
+ None, None,
+ None, None)
+ g_participant = lambda: Participant(0, True,
+ None, None,
+ g_participant_items(), g_player())
+ roster = Roster(True, [g_participant()]*3)
+ roster2 = Roster(False, [g_participant()]*3)
+ match = Match("ranked", [roster, roster2])
+
+ rater.rate_match(match)
+
+ assert match.rosters[0].participants[0].player[0].trueskill_mu is None
+ assert match.rosters[0].participants[0].participant_items[0].any_afk == True