def testHistTeamDraft_getPossibleAssignment(self): r1 = DeterministicRankingFunction(None, self.weights_1) r2 = DeterministicRankingFunction(None, self.weights_2) htd = HistTeamDraft(None) l = [0, 1, 3, 2] self.assertIn(htd._get_possible_assignment(l, r1, r2, self.query), [[1, 0, 0, 1], [1, 0, 1, 0]]) l = [1, 0, 3, 2] self.assertIn(htd._get_possible_assignment(l, r1, r2, self.query), [[0, 1, 0, 1], [0, 1, 1, 0]]) l = [1, 0, 2, 3] self.assertEquals(htd._get_possible_assignment(l, r1, r2, self.query), None)
def testHistTeamDraft(self): r1 = DeterministicRankingFunction(None, self.weights_1) r2 = DeterministicRankingFunction(None, self.weights_2) interleaved_list = [0, 1, 3, 2] htd = HistTeamDraft() self.assertEqual( htd.infer_outcome(interleaved_list, None, [0, 0, 0, 0], r1, r2, self.query), 0, "No clicks.") self.assertEqual( htd.infer_outcome(interleaved_list, None, [1, 0, 0, 0], r1, r2, self.query), 1, "Target rankers" " are the same as the original rankers, so ranker 2 has to win.") self.assertEqual( htd.infer_outcome(interleaved_list, None, [1, 0, 0, 0], r2, r1, self.query), -1, "Target rankers" " are switched, so ranker 1 has to win.")
def testHistTeamDraft_getPossibleAssignment_randomization(self): r1 = DeterministicRankingFunction(None, self.weights_1) r2 = DeterministicRankingFunction(None, self.weights_2) htd = HistTeamDraft(None) l = [0, 1, 3, 2] test_assignments = {"1,0,0,1": 0, "1,0,1,0": 0} trials = 0 MAX_TRIALS = 1000 while trials < MAX_TRIALS and 0 in test_assignments.values(): trials += 1 observed_assignment = ",".join( str(a) for a in htd._get_possible_assignment(l, r1, r2, self.query)) self.assertIn(observed_assignment, test_assignments.keys()) test_assignments[observed_assignment] += 1 for assignment, count in test_assignments.items(): self.assertNotEqual(0, count, "Test failed for: %s" % assignment)