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