def test_state(self):
     """here error_code value is not meaning and used for test get/set"""
     det_game = DetailedGame(
         "0110011011",
         left_wingame=True,
         left_opener=True,
         tiebreak=False,
         error=error_code("GAME_ORIENT"),
     )
     self.assertTrue(det_game.error)
     self.assertTrue(det_game.left_wingame)
     self.assertTrue(det_game.left_opener)
     self.assertFalse(det_game.tiebreak)
     self.assertEqual(det_game.error, error_code("GAME_ORIENT"))
     det_game.error = 0
     det_game.left_wingame = False
     det_game.left_opener = False
     det_game.tiebreak = True
     self.assertFalse(det_game.error)
     self.assertFalse(det_game.left_wingame)
     self.assertFalse(det_game.left_opener)
     self.assertTrue(det_game.tiebreak)
     det_game.error = error_code("GAME_ORIENT")
     self.assertTrue(det_game.error)
     self.assertEqual(det_game.error, error_code("GAME_ORIENT"))
     self.assertFalse(det_game.left_wingame)
     self.assertFalse(det_game.left_opener)
     self.assertTrue(det_game.tiebreak)
def do_rain_interrupt_match(match):
    if is_interrupt(
        sex=match.sex,
        date=match.date,
        left_id=match.first_player.ident,
        right_id=match.second_player.ident,
    ):
        match.detailed_score.error = error_code("RAIN_INTERRUPT")
        log.info("rain interrupt match marked {}".format(match))
 def test_save_restore(self):
     det_game = DetailedGame(
         "0110011011",
         left_wingame=True,
         left_opener=True,
         tiebreak=False,
         error=error_code("SPANING"),
     )
     text = str(det_game)
     det_game2 = DetailedGame.from_str(text)
     self.assertEqual(det_game, det_game2)
 def test_save_restore2(self):
     items = [
         (
             ((0, 0), ),
             DetailedGame("1111",
                          left_wingame=True,
                          left_opener=True,
                          tiebreak=False),
         ),
         (
             ((1, 0), ),
             DetailedGame("0000",
                          left_wingame=True,
                          left_opener=False,
                          tiebreak=False),
         ),
     ]
     ds = DetailedScore(items, retired=True)
     ds.error = error_code("SET5_SCORE_PROBLEMS") | error_code(
         "SET4_SCORE_PROBLEMS")
     text = ds.tostring()
     ds2 = DetailedScore.from_str(text)
     self.assertEqual(ds, ds2)
    def test_few_points(self):
        pts = "1"
        det_game = DetailedGame(
            points=pts,
            left_wingame=True,
            left_opener=True,
            tiebreak=False,
            error=error_code("POINT_SCORE_FEW_DATA"),
        )
        points = [p for p in det_game]
        self.assertEqual(len(points), 1)
        self.assertEqual(points[0].win(), True)

        pts = ""
        det_game = DetailedGame(
            points=pts,
            left_wingame=True,
            left_opener=True,
            tiebreak=False,
            error=error_code("POINT_SCORE_FEW_DATA"),
        )
        points = [p for p in det_game]
        self.assertEqual(len(points), 0)
def show_errors(tour_events, daysago, n_warns):
    """return True if stop work, False if ok or ignore"""
    sex_match_err_list = []
    for tour_evt in tour_events:
        if tour_evt.tour_id is None:
            continue
        for match in tour_evt.matches:
            if (
                match.rnd is not None
                and match.date is not None
                and match.first_player is not None
                and match.first_player.ident is not None
                and match.second_player is not None
                and match.second_player.ident is not None
                and hasattr(match, "detailed_score")
                and match.detailed_score is not None
                and match.detailed_score.error > 0
                and match.detailed_score.error != error_code("RAIN_INTERRUPT")
            ):
                sex_match_err_list.append(
                    (tour_evt.sex, match, match.detailed_score.error)
                )
    if len(sex_match_err_list) > 0 or n_warns > 0:
        for sex_match_err in sex_match_err_list:
            sex, match, err = sex_match_err
            log.error("{} {} err:{}".format(sex, match, err))

        if args.interactive:
            msg = (
                "day-{} {} dscore error(s) found, {} warns. Continue? "
                + "(don't forget switch to browser)"
            ).format(daysago, len(sex_match_err_list), n_warns)
            winsound.MessageBeep(winsound.MB_ICONEXCLAMATION)
            is_continue_ask = cmds.CommandAsk(msg)
            answer = is_continue_ask.fire()
            if answer == "n":
                return True
    return False