diff --git a/osu.Game.Rulesets.Taiko.Tests/Mods/TestSceneTaikoModSimplifiedRhythm.cs b/osu.Game.Rulesets.Taiko.Tests/Mods/TestSceneTaikoModSimplifiedRhythm.cs index 1e2c2a21ce..565b9c3362 100644 --- a/osu.Game.Rulesets.Taiko.Tests/Mods/TestSceneTaikoModSimplifiedRhythm.cs +++ b/osu.Game.Rulesets.Taiko.Tests/Mods/TestSceneTaikoModSimplifiedRhythm.cs @@ -148,5 +148,96 @@ namespace osu.Game.Rulesets.Taiko.Tests.Mods }, PassCondition = () => Player.ScoreProcessor.Combo.Value == 8 && Player.ScoreProcessor.Accuracy.Value == 1 }); + + /// + /// Regression tests a case of 1/3rd conversion where there are exactly div-3 number of hitobjects. + /// + [Test] + public void TestOnlyOneThirdConversion() + { + CreateModTest(new ModTestData + { + Mod = new TaikoModSimplifiedRhythm + { + OneThirdConversion = { Value = true }, + }, + Autoplay = false, + CreateBeatmap = () => new Beatmap + { + HitObjects = new List + { + new Hit { StartTime = 1000, Type = HitType.Centre }, + new Hit { StartTime = 1333, Type = HitType.Centre }, // mod removes this + new Hit { StartTime = 1666, Type = HitType.Centre }, // mod moves this to 1500 + new Hit { StartTime = 2000, Type = HitType.Centre }, + new Hit { StartTime = 2333, Type = HitType.Centre }, // mod removes this + new Hit { StartTime = 2666, Type = HitType.Centre }, // mod moves this to 2500 + }, + }, + ReplayFrames = new List + { + new TaikoReplayFrame(1000, TaikoAction.LeftCentre), + new TaikoReplayFrame(1200), + new TaikoReplayFrame(1500, TaikoAction.LeftCentre), + new TaikoReplayFrame(1700), + new TaikoReplayFrame(2000, TaikoAction.LeftCentre), + new TaikoReplayFrame(2200), + new TaikoReplayFrame(2500, TaikoAction.LeftCentre), + new TaikoReplayFrame(2700), + }, + PassCondition = () => Player.ScoreProcessor.Combo.Value == 4 && Player.ScoreProcessor.Accuracy.Value == 1 + }); + } + + /// + /// Regression tests a case of 1/6th conversion where there are exactly div-6 number of hitobjects. + /// + [Test] + public void TestOnlyOneSixthConversion() => CreateModTest(new ModTestData + { + Mod = new TaikoModSimplifiedRhythm + { + OneSixthConversion = { Value = true } + }, + Autoplay = false, + CreateBeatmap = () => new Beatmap + { + HitObjects = new List + { + new Hit { StartTime = 1000, Type = HitType.Centre }, + new Hit { StartTime = 1166, Type = HitType.Centre }, // mod removes this + new Hit { StartTime = 1333, Type = HitType.Centre }, // mod moves this to 1250 + new Hit { StartTime = 1500, Type = HitType.Centre }, + new Hit { StartTime = 1666, Type = HitType.Centre }, // mod removes this + new Hit { StartTime = 1833, Type = HitType.Centre }, // mod moves this to 1750 + new Hit { StartTime = 2000, Type = HitType.Centre }, + new Hit { StartTime = 2166, Type = HitType.Centre }, // mod removes this + new Hit { StartTime = 2333, Type = HitType.Centre }, // mod moves this to 2250 + new Hit { StartTime = 2500, Type = HitType.Centre }, + new Hit { StartTime = 2666, Type = HitType.Centre }, // mod removes this + new Hit { StartTime = 2833, Type = HitType.Centre }, // mod moves this to 2750 + }, + }, + ReplayFrames = new List + { + new TaikoReplayFrame(1000, TaikoAction.LeftCentre), + new TaikoReplayFrame(1200), + new TaikoReplayFrame(1250, TaikoAction.LeftCentre), + new TaikoReplayFrame(1450), + new TaikoReplayFrame(1500, TaikoAction.LeftCentre), + new TaikoReplayFrame(1600), + new TaikoReplayFrame(1750, TaikoAction.LeftCentre), + new TaikoReplayFrame(1800), + new TaikoReplayFrame(2000, TaikoAction.LeftCentre), + new TaikoReplayFrame(2200), + new TaikoReplayFrame(2250, TaikoAction.LeftCentre), + new TaikoReplayFrame(2450), + new TaikoReplayFrame(2500, TaikoAction.LeftCentre), + new TaikoReplayFrame(2600), + new TaikoReplayFrame(2750, TaikoAction.LeftCentre), + new TaikoReplayFrame(2800), + }, + PassCondition = () => Player.ScoreProcessor.Combo.Value == 8 && Player.ScoreProcessor.Accuracy.Value == 1 + }); } }