mirror of
https://github.com/osukey/osukey.git
synced 2025-07-03 01:09:57 +09:00
Fix slider nested hitobject samples not getting updated
This commit is contained in:
@ -126,6 +126,67 @@ namespace osu.Game.Rulesets.Osu.Tests
|
||||
AddAssert("body positioned correctly", () => slider.Position == slider.HitObject.StackedPosition);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestChangeSamplesWithNoNodeSamples()
|
||||
{
|
||||
DrawableSlider slider = null;
|
||||
|
||||
AddStep("create slider", () =>
|
||||
{
|
||||
slider = (DrawableSlider)createSlider(repeats: 1);
|
||||
Add(slider);
|
||||
});
|
||||
|
||||
AddStep("change samples", () => slider.HitObject.Samples = new[]
|
||||
{
|
||||
new HitSampleInfo { Name = HitSampleInfo.HIT_CLAP },
|
||||
new HitSampleInfo { Name = HitSampleInfo.HIT_WHISTLE },
|
||||
});
|
||||
|
||||
AddAssert("head samples updated", () => assertSamples(((Slider)slider.HitObject).HeadCircle));
|
||||
AddAssert("tick samples not updated", () => ((Slider)slider.HitObject).NestedHitObjects.OfType<SliderTick>().All(assertTickSamples));
|
||||
AddAssert("repeat samples updated", () => ((Slider)slider.HitObject).NestedHitObjects.OfType<RepeatPoint>().All(assertSamples));
|
||||
AddAssert("tail has no samples", () => ((Slider)slider.HitObject).TailCircle.Samples.Count == 0);
|
||||
|
||||
bool assertTickSamples(SliderTick tick) => tick.Samples.Single().Name == "slidertick";
|
||||
|
||||
bool assertSamples(HitObject hitObject)
|
||||
{
|
||||
return hitObject.Samples.Any(s => s.Name == HitSampleInfo.HIT_CLAP)
|
||||
&& hitObject.Samples.Any(s => s.Name == HitSampleInfo.HIT_WHISTLE);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestChangeSamplesWithNodeSamples()
|
||||
{
|
||||
DrawableSlider slider = null;
|
||||
|
||||
AddStep("create slider", () =>
|
||||
{
|
||||
slider = (DrawableSlider)createSlider(repeats: 1);
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
((Slider)slider.HitObject).NodeSamples.Add(new List<HitSampleInfo> { new HitSampleInfo { Name = HitSampleInfo.HIT_FINISH } });
|
||||
|
||||
Add(slider);
|
||||
});
|
||||
|
||||
AddStep("change samples", () => slider.HitObject.Samples = new[]
|
||||
{
|
||||
new HitSampleInfo { Name = HitSampleInfo.HIT_CLAP },
|
||||
new HitSampleInfo { Name = HitSampleInfo.HIT_WHISTLE },
|
||||
});
|
||||
|
||||
AddAssert("head samples not updated", () => assertSamples(((Slider)slider.HitObject).HeadCircle));
|
||||
AddAssert("tick samples not updated", () => ((Slider)slider.HitObject).NestedHitObjects.OfType<SliderTick>().All(assertTickSamples));
|
||||
AddAssert("repeat samples not updated", () => ((Slider)slider.HitObject).NestedHitObjects.OfType<RepeatPoint>().All(assertSamples));
|
||||
AddAssert("tail has no samples", () => ((Slider)slider.HitObject).TailCircle.Samples.Count == 0);
|
||||
|
||||
bool assertTickSamples(SliderTick tick) => tick.Samples.Single().Name == "slidertick";
|
||||
bool assertSamples(HitObject hitObject) => hitObject.Samples.All(s => s.Name != HitSampleInfo.HIT_CLAP && s.Name != HitSampleInfo.HIT_WHISTLE);
|
||||
}
|
||||
|
||||
private Drawable testSimpleBig(int repeats = 0) => createSlider(2, repeats: repeats);
|
||||
|
||||
private Drawable testSimpleBigLargeStackOffset(int repeats = 0) => createSlider(2, repeats: repeats, stackHeight: 10);
|
||||
@ -143,7 +204,6 @@ namespace osu.Game.Rulesets.Osu.Tests
|
||||
new Vector2(52, -34)
|
||||
}, 700),
|
||||
RepeatCount = repeats,
|
||||
NodeSamples = createEmptySamples(repeats),
|
||||
StackHeight = 10
|
||||
};
|
||||
|
||||
@ -174,7 +234,6 @@ namespace osu.Game.Rulesets.Osu.Tests
|
||||
new Vector2(distance, 0),
|
||||
}, distance),
|
||||
RepeatCount = repeats,
|
||||
NodeSamples = createEmptySamples(repeats),
|
||||
StackHeight = stackHeight
|
||||
};
|
||||
|
||||
@ -194,7 +253,6 @@ namespace osu.Game.Rulesets.Osu.Tests
|
||||
new Vector2(400, 0)
|
||||
}, 600),
|
||||
RepeatCount = repeats,
|
||||
NodeSamples = createEmptySamples(repeats)
|
||||
};
|
||||
|
||||
return createDrawable(slider, 2, 3);
|
||||
@ -218,7 +276,6 @@ namespace osu.Game.Rulesets.Osu.Tests
|
||||
new Vector2(430, 0)
|
||||
}),
|
||||
RepeatCount = repeats,
|
||||
NodeSamples = createEmptySamples(repeats)
|
||||
};
|
||||
|
||||
return createDrawable(slider, 2, 3);
|
||||
@ -241,7 +298,6 @@ namespace osu.Game.Rulesets.Osu.Tests
|
||||
new Vector2(430, 0)
|
||||
}),
|
||||
RepeatCount = repeats,
|
||||
NodeSamples = createEmptySamples(repeats)
|
||||
};
|
||||
|
||||
return createDrawable(slider, 2, 3);
|
||||
@ -265,7 +321,6 @@ namespace osu.Game.Rulesets.Osu.Tests
|
||||
new Vector2(0, -200)
|
||||
}),
|
||||
RepeatCount = repeats,
|
||||
NodeSamples = createEmptySamples(repeats)
|
||||
};
|
||||
|
||||
return createDrawable(slider, 2, 3);
|
||||
@ -297,14 +352,6 @@ namespace osu.Game.Rulesets.Osu.Tests
|
||||
return createDrawable(slider, 3, 1);
|
||||
}
|
||||
|
||||
private List<IList<HitSampleInfo>> createEmptySamples(int repeats)
|
||||
{
|
||||
var repeatSamples = new List<IList<HitSampleInfo>>();
|
||||
for (int i = 0; i < repeats; i++)
|
||||
repeatSamples.Add(new List<HitSampleInfo>());
|
||||
return repeatSamples;
|
||||
}
|
||||
|
||||
private Drawable createDrawable(Slider slider, float circleSize, double speedMultiplier)
|
||||
{
|
||||
var cpi = new ControlPointInfo();
|
||||
|
Reference in New Issue
Block a user