From 7aa10956b582f741f006f4df959041c5b873f93a Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 14 May 2019 09:46:42 +0900 Subject: [PATCH] Add unit test --- .../Formats/LegacyBeatmapDecoderTest.cs | 28 +++++++++++++++++++ .../Resources/overlapping-control-points.osu | 11 ++++++++ 2 files changed, 39 insertions(+) create mode 100644 osu.Game.Tests/Resources/overlapping-control-points.osu diff --git a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs index 3c1f48b7a4..7e7ddb12d2 100644 --- a/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs +++ b/osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs @@ -194,6 +194,34 @@ namespace osu.Game.Tests.Beatmaps.Formats } } + [Test] + public void TestDecodeOverlappingTimingPoints() + { + var decoder = new LegacyBeatmapDecoder { ApplyOffsets = false }; + + using (var resStream = TestResources.OpenResource("overlapping-control-points.osu")) + using (var stream = new StreamReader(resStream)) + { + var controlPoints = decoder.Decode(stream).ControlPointInfo; + + Assert.That(controlPoints.DifficultyPoints, Has.Count.EqualTo(2)); + Assert.That(controlPoints.DifficultyPoints[0].SpeedMultiplier, Is.EqualTo(1.5).Within(0.1)); + Assert.That(controlPoints.DifficultyPoints[1].SpeedMultiplier, Is.EqualTo(0.75).Within(0.1)); + + Assert.That(controlPoints.EffectPoints, Has.Count.EqualTo(2)); + Assert.That(controlPoints.EffectPoints[0].KiaiMode, Is.True); + Assert.That(controlPoints.EffectPoints[1].KiaiMode, Is.True); + + Assert.That(controlPoints.SamplePoints, Has.Count.EqualTo(2)); + Assert.That(controlPoints.SamplePoints[0].SampleBank, Is.EqualTo("drum")); + Assert.That(controlPoints.SamplePoints[1].SampleBank, Is.EqualTo("normal")); + + Assert.That(controlPoints.TimingPoints, Has.Count.EqualTo(2)); + Assert.That(controlPoints.TimingPoints[0].BeatLength, Is.EqualTo(500)); + Assert.That(controlPoints.TimingPoints[1].BeatLength, Is.EqualTo(250)); + } + } + [Test] public void TestDecodeBeatmapColours() { diff --git a/osu.Game.Tests/Resources/overlapping-control-points.osu b/osu.Game.Tests/Resources/overlapping-control-points.osu new file mode 100644 index 0000000000..d96db72bd7 --- /dev/null +++ b/osu.Game.Tests/Resources/overlapping-control-points.osu @@ -0,0 +1,11 @@ +osu file format v14 + +[TimingPoints] + +// Timing -> Inherited +0,500,4,2,0,100,1,0 +0,-66.6666666666667,4,3,0,100,0,1 + +// Inherited -> Timing +1000,-133.333333333333,4,1,0,100,0,1 +1000,250,4,2,0,100,1,0