from . import * from enum import Enum class Case(Enum): TIMEOUT_GO_TO_PATTERNGAME = "ravens_test Timeout GoToPatternGame" ALL_PATTERNS_CORRECT = "ravens_test All patterns correct" NO_PATTERNS_CORRECT = "ravens_test No patterns correct" SOME_PATTERNS_CORRECT = "ravens_test Some patterns correct" TIMEOUT_RAVEN_MATRICES = "ravens_test Timeout RavenMatrices" # Should not lead to being kicked, but # automatically progressing to the next page class PlayerBot(Bot): cases = [case.value for case in [Case.TIMEOUT_GO_TO_PATTERNGAME, Case.ALL_PATTERNS_CORRECT, Case.NO_PATTERNS_CORRECT, Case.SOME_PATTERNS_CORRECT, Case.TIMEOUT_RAVEN_MATRICES]] def play_round(self): if self.player.participant.timeout: print(f"Skipping case {self.case}") return print(f"Playing case {self.case}") # GoToPatternGame expect("You will now play a pattern game", "in", self.html) if self.case == Case.TIMEOUT_GO_TO_PATTERNGAME.value: yield Submission( GoToPatternGame, timeout_happened=True, ) expect("You ran out of time", "in", self.html) expect(self.player.participant.timeout, True) return yield Submission(GoToPatternGame) # RavenMatrices expect("Picture 1", "in", self.html) if self.case == Case.ALL_PATTERNS_CORRECT.value: yield Submission(RavenMatrices, { "raven_1": 7, "raven_2": 4, "raven_3": 6, "raven_4": 2, "raven_5": 4, "raven_6": 7, "raven_7": 8, "raven_8": 7, "raven_9": 5, "raven_10": 5, "raven_11": 4, "raven_12": 1}, check_html=False) expect(self.player.raven_1_correct, "==", True) expect(self.player.raven_2_correct, "==", True) expect(self.player.raven_3_correct, "==", True) expect(self.player.raven_4_correct, "==", True) expect(self.player.raven_5_correct, "==", True) expect(self.player.raven_6_correct, "==", True) expect(self.player.raven_7_correct, "==", True) expect(self.player.raven_8_correct, "==", True) expect(self.player.raven_9_correct, "==", True) expect(self.player.raven_10_correct, "==", True) expect(self.player.raven_11_correct, "==", True) expect(self.player.raven_12_correct, "==", True) expect(self.player.participant.raven_selection, "==", True) elif self.case == Case.TIMEOUT_RAVEN_MATRICES.value: yield Submission(RavenMatrices, { "raven_1": 7, "raven_2": 4, "raven_3": 6, "raven_4": 2, "raven_5": 4, "raven_6": 7, "raven_7": 8, "raven_8": 7, "raven_9": 5, "raven_10": 5, "raven_11": 4, "raven_12": 1}, timeout_happened=True, check_html=False) expect(self.player.raven_1_correct, "==", True) expect(self.player.raven_2_correct, "==", True) expect(self.player.raven_3_correct, "==", True) expect(self.player.raven_4_correct, "==", True) expect(self.player.raven_5_correct, "==", True) expect(self.player.raven_6_correct, "==", True) expect(self.player.raven_7_correct, "==", True) expect(self.player.raven_8_correct, "==", True) expect(self.player.raven_9_correct, "==", True) expect(self.player.raven_10_correct, "==", True) expect(self.player.raven_11_correct, "==", True) expect(self.player.raven_12_correct, "==", True) expect(self.player.participant.raven_selection, "==", True) expect(self.player.participant.timeout, False) # Timeout here should not lead to being kicked! elif self.case == Case.NO_PATTERNS_CORRECT.value: yield Submission(RavenMatrices, { "raven_1": 2, "raven_2": 5, "raven_3": 5, "raven_4": 3, "raven_5": 1, "raven_6": 8, "raven_7": 7, "raven_8": 6, "raven_9": 4, "raven_10": 1, "raven_11": 7, "raven_12": 3}, check_html=False) expect(self.player.raven_1_correct, "==", False) expect(self.player.raven_2_correct, "==", False) expect(self.player.raven_3_correct, "==", False) expect(self.player.raven_4_correct, "==", False) expect(self.player.raven_5_correct, "==", False) expect(self.player.raven_6_correct, "==", False) expect(self.player.raven_7_correct, "==", False) expect(self.player.raven_8_correct, "==", False) expect(self.player.raven_9_correct, "==", False) expect(self.player.raven_10_correct, "==", False) expect(self.player.raven_11_correct, "==", False) expect(self.player.raven_12_correct, "==", False) expect(self.player.participant.raven_selection, "==", False) else: # Some correct yield Submission(RavenMatrices, { "raven_1": 7, # Correct "raven_2": 3, "raven_3": 3, "raven_4": 2, # Correct "raven_5": 1, "raven_6": 5, "raven_7": 7, "raven_8": 7, # Correct "raven_9": 2, "raven_10": 1, "raven_11": 3, "raven_12": 2}, check_html=False) expect(self.player.raven_1_correct, "==", True) expect(self.player.raven_2_correct, "==", False) expect(self.player.raven_3_correct, "==", False) expect(self.player.raven_4_correct, "==", True) expect(self.player.raven_5_correct, "==", False) expect(self.player.raven_6_correct, "==", False) expect(self.player.raven_7_correct, "==", False) expect(self.player.raven_8_correct, "==", True) expect(self.player.raven_9_correct, "==", False) expect(self.player.raven_10_correct, "==", False) expect(self.player.raven_11_correct, "==", False) expect(self.player.raven_12_correct, "==", False)