def test_scoring_completeness(self): # Check if the score processor went through and recorded all of the timings beatmap = BeatmapIO.open_beatmap('unit_tests\\maps\\mania\\playable\\Various Artists - I Like This Chart, LOL vol. 2 (Fullereneshift) [LENK64 - Crazy Slav Dancers (HD) (Marathon)].osu') replay = ReplayIO.open_replay('unit_tests\\replays\\mania\\abraker - Various Artists - I Like This Chart, LOL vol. 2 [LENK64 - Crazy Slav Dancers (HD) (Marathon)] (2021-07-10) OsuMania.osr') map_data = ManiaActionData.get_action_data(beatmap) replay_data = ManiaActionData.get_action_data(replay) score_data = ManiaScoreData.get_score_data(map_data, replay_data) map_score_xor = np.setxor1d(score_data['map_t'].values, ManiaActionData.press_times(map_data)) # Hits that are not present in either map_score_xor = np.intersect1d(map_score_xor, ManiaActionData.press_times(map_data)) # Hits that are present in map but not score self.assertEqual(len(map_score_xor), 0, f'Timings mising: {map_score_xor}')
def test_press_times(self): # This map has notes every 250ms beatmap = BeatmapIO.open_beatmap('unit_tests\\maps\\mania\\test\\1k_10x_0.25_chords.osu') action_data = ManiaActionData.get_action_data(beatmap) # Notes occur every 500 ms press_times = ManiaActionData.press_times(action_data[ManiaActionData.IDX_COL == 0, :]) for timing, i in zip(press_times, range(0, 500*10, 500)): self.assertEqual(timing, i, 'Timings do not match')