def test_circle_nomisaim(self): settings = StdScoreData.Settings() # Set hitwindow ranges to what these tests have been written for settings.pos_hit_range = 300 # ms point of late hit window settings.neg_hit_range = 300 # ms point of early hit window settings.pos_hit_miss_range = 450 # ms point of late miss window settings.neg_hit_miss_range = 450 # ms point of early miss window settings.pos_rel_range = 500 # ms point of late release window settings.neg_rel_range = 500 # ms point of early release window settings.pos_rel_miss_range = 1000 # ms point of late release window settings.neg_rel_miss_range = 1000 # ms point of early release window # Time: 0 ms -> 3000 ms # Location: At 1st hitcircle (500, 500) # Scoring: Awaiting press at hitcircle (1000 ms @ (500, 500)) # Behavior: # Scorepoint awaits PRESS -> NOP # -> NOP for ms in range(0, 3000): score_data = {} adv = StdScoreData._StdScoreData__process_release( settings, score_data, self.map_data.iloc[1:].values, ms, 500, 500, [0, 0]) offset = ms - self.map_data.iloc[1]['time'] self.assertEqual(adv, StdScoreData._StdScoreData__ADV_NOP, f'Offset: {offset} ms') self.assertEqual(len(score_data), 0, f'Offset: {offset} ms')
def test_slider_start(self): settings = StdScoreData.Settings() for require_tap_release in [True, False]: for require_aim_release in [True, False]: for recoverable_release in [True, False]: for miss_aim in [True, False]: cursor_xy = [500, 500] if miss_aim else [0, 0] settings.require_tap_release = require_tap_release settings.require_aim_release = require_aim_release # Set hitwindow ranges to what these tests have been written for settings.neg_rel_miss_range = 450 # ms point of early miss window settings.neg_rel_range = 300 # ms point of early release window settings.pos_rel_range = 300 # ms point of late release window settings.pos_rel_miss_range = 450 # ms point of late miss window # Time: 0 ms -> 3000 ms # Scoring: Awaiting press at slider start (100 ms @ (0, 0)) for ms in range(0, 3000): score_data = {} adv = StdScoreData._StdScoreData__process_release( settings, score_data, self.map_data.values, ms, cursor_xy[0], cursor_xy[1], [0, 0]) offset = ms - self.map_data.iloc[0]['time'] # Regardless of anythingg a tap is required and this got a release instead self.assertEqual( adv, StdScoreData._StdScoreData__ADV_NOP, f'Offset: {offset} ms') self.assertEqual(len(score_data), 0, f'Offset: {offset} ms')
def test_slider_hold(self): settings = StdScoreData.Settings() for require_tap_release in [True, False]: for require_aim_release in [True, False]: for require_tap_hold in [True, False]: for recoverable_release in [True, False]: for slider_miss in [True, False]: for miss_aim in [True, False]: cursor_xy = [1000, 1000 ] if miss_aim else [0, 0] settings.require_tap_hold = require_tap_hold settings.require_tap_release = require_tap_release settings.require_aim_release = require_aim_release settings.recoverable_release = recoverable_release settings.miss_slider = slider_miss # Set hitwindow ranges to what these tests have been written for settings.neg_rel_miss_range = 450 # ms point of early miss window settings.neg_rel_range = 300 # ms point of early release window settings.pos_rel_range = 300 # ms point of late release window settings.pos_rel_miss_range = 450 # ms point of late miss window # Set hitwindow ranges to what these tests have been written for self.neg_hld_range = 0 self.pos_hld_range = 1000 # Time: 0 ms -> 3000 ms # Scoring: Awaiting hold at slider aimpoint (350 ms @ (100, 0)) for ms in range(0, 3000): score_data = {} adv = StdScoreData._StdScoreData__process_release( settings, score_data, self.map_data.iloc[1:].values, ms, cursor_xy[0], cursor_xy[1], [0, 0]) offset = ms - self.map_data.iloc[1]['time'] expected_miss_adv = StdScoreData._StdScoreData__ADV_NOTE if slider_miss else StdScoreData._StdScoreData__ADV_AIMP if require_tap_hold: if recoverable_release: self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOP, f'Offset: {offset} ms') self.assertEqual( len(score_data), 0, f'Offset: {offset} ms') else: self.assertEqual( adv, expected_miss_adv, f'Offset: {offset} ms') self.assertEqual( score_data[0][6], StdScoreData.TYPE_MISS, f'Offset: {offset} ms') else: # No need to tap self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOP, f'Offset: {offset} ms') self.assertEqual( len(score_data), 0, f'Offset: {offset} ms')
def test_slider_release(self): settings = StdScoreData.Settings() for require_tap_release in [True, False]: for require_aim_release in [True, False]: for require_tap_hold in [True, False]: for recoverable_release in [True, False]: for slider_miss in [True, False]: for miss_aim in [True, False]: cursor_xy = [1000, 1000 ] if miss_aim else [300, 0] settings.require_tap_hold = require_tap_hold settings.require_tap_release = require_tap_release settings.require_aim_release = require_aim_release settings.recoverable_release = recoverable_release settings.miss_slider = slider_miss # Set hitwindow ranges to what these tests have been written for settings.neg_rel_miss_range = 450 # ms point of early miss window settings.neg_rel_range = 300 # ms point of early release window settings.pos_rel_range = 300 # ms point of late release window settings.pos_rel_miss_range = 450 # ms point of late miss window # Set hitwindow ranges to what these tests have been written for self.neg_hld_range = 0 self.pos_hld_range = 1000 # Time: 0 ms -> 3000 ms # Scoring: Awaiting release at slider end (750 ms @ (300, 0)) for ms in range(0, 3000): score_data = {} adv = StdScoreData._StdScoreData__process_release( settings, score_data, self.map_data.iloc[3:].values, ms, cursor_xy[0], cursor_xy[1], [0, 0]) offset = ms - self.map_data.iloc[3]['time'] def proc_required_tap(): if offset <= -settings.neg_rel_miss_range: self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOP, f'Offset: {offset} ms') self.assertEqual( len(score_data), 0, f'Offset: {offset} ms') if -settings.neg_rel_miss_range < offset <= -settings.neg_rel_range: self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOTE, f'Offset: {offset} ms') self.assertEqual( score_data[0][6], StdScoreData.TYPE_MISS, f'Offset: {offset} ms') if -settings.neg_rel_range < offset <= settings.pos_rel_range: self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOTE, f'Offset: {offset} ms') self.assertEqual( score_data[0][6], StdScoreData.TYPE_HITR, f'Offset: {offset} ms') if settings.pos_rel_range < offset <= settings.pos_rel_miss_range: self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOTE, f'Offset: {offset} ms') self.assertEqual( score_data[0][6], StdScoreData.TYPE_MISS, f'Offset: {offset} ms') if settings.pos_rel_miss_range < offset: self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOP, f'Offset: {offset} ms') self.assertEqual( len(score_data), 0, f'Offset: {offset} ms') def proc_required_aim(): self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOTE, f'Offset: {offset} ms') self.assertEqual( score_data[0][6], StdScoreData.TYPE_MISS, f'Offset: {offset} ms') def proc_required_non(): if offset < 0: self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOP, f'Offset: {offset} ms') self.assertEqual( len(score_data), 0, f'Offset: {offset} ms') else: self.assertEqual( adv, StdScoreData. _StdScoreData__ADV_NOTE, f'Offset: {offset} ms') self.assertEqual( score_data[0][6], StdScoreData.TYPE_HITR, f'Offset: {offset} ms') if not require_aim_release and not require_tap_release: # No need to tap or aim; Automatic freebie proc_required_non() continue if not require_aim_release and require_tap_release: proc_required_tap() continue if require_aim_release and not require_tap_release: if miss_aim: proc_required_aim() else: proc_required_non() continue if require_aim_release and require_tap_release: if miss_aim: proc_required_aim() else: proc_required_tap() continue