mirror of
https://github.com/ppy/osu
synced 2025-02-17 02:47:19 +00:00
Add test for propagation of direction through mania stack
This commit is contained in:
parent
31146fbc01
commit
dc78049839
@ -14,24 +14,20 @@ namespace osu.Game.Rulesets.Mania.Tests
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class ScrollingTestContainer : Container
|
public class ScrollingTestContainer : Container
|
||||||
{
|
{
|
||||||
private readonly ScrollingDirection direction;
|
[Cached(Type = typeof(IScrollingInfo))]
|
||||||
|
private readonly TestScrollingInfo scrollingInfo = new TestScrollingInfo();
|
||||||
|
|
||||||
public ScrollingTestContainer(ScrollingDirection direction)
|
public ScrollingTestContainer(ScrollingDirection direction)
|
||||||
{
|
{
|
||||||
this.direction = direction;
|
scrollingInfo.Direction.Value = direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
public void Flip() => scrollingInfo.Direction.Value = scrollingInfo.Direction.Value == ScrollingDirection.Up ? ScrollingDirection.Down : ScrollingDirection.Up;
|
||||||
{
|
}
|
||||||
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
|
|
||||||
dependencies.CacheAs<IScrollingInfo>(new ScrollingInfo { Direction = { Value = direction }});
|
|
||||||
return dependencies;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class ScrollingInfo : IScrollingInfo
|
public class TestScrollingInfo : IScrollingInfo
|
||||||
{
|
{
|
||||||
public readonly Bindable<ScrollingDirection> Direction = new Bindable<ScrollingDirection>();
|
public readonly Bindable<ScrollingDirection> Direction = new Bindable<ScrollingDirection>();
|
||||||
IBindable<ScrollingDirection> IScrollingInfo.Direction => Direction;
|
IBindable<ScrollingDirection> IScrollingInfo.Direction => Direction;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
@ -24,6 +25,8 @@ namespace osu.Game.Rulesets.Mania.Tests
|
|||||||
|
|
||||||
private readonly List<ManiaStage> stages = new List<ManiaStage>();
|
private readonly List<ManiaStage> stages = new List<ManiaStage>();
|
||||||
|
|
||||||
|
private FillFlowContainer<ScrollingTestContainer> fill;
|
||||||
|
|
||||||
public TestCaseStage()
|
public TestCaseStage()
|
||||||
: base(columns)
|
: base(columns)
|
||||||
{
|
{
|
||||||
@ -32,7 +35,7 @@ namespace osu.Game.Rulesets.Mania.Tests
|
|||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
Child = new FillFlowContainer
|
Child = fill = new FillFlowContainer<ScrollingTestContainer>
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
@ -54,8 +57,22 @@ namespace osu.Game.Rulesets.Mania.Tests
|
|||||||
AddStep("hold note", createHoldNote);
|
AddStep("hold note", createHoldNote);
|
||||||
AddStep("minor bar line", () => createBarLine(false));
|
AddStep("minor bar line", () => createBarLine(false));
|
||||||
AddStep("major bar line", () => createBarLine(true));
|
AddStep("major bar line", () => createBarLine(true));
|
||||||
|
|
||||||
|
AddAssert("check note anchors", () => notesInStageAreAnchored(stages[0], Anchor.TopCentre));
|
||||||
|
AddAssert("check note anchors", () => notesInStageAreAnchored(stages[1], Anchor.BottomCentre));
|
||||||
|
|
||||||
|
AddStep("flip direction", () =>
|
||||||
|
{
|
||||||
|
foreach (var c in fill.Children)
|
||||||
|
c.Flip();
|
||||||
|
});
|
||||||
|
|
||||||
|
AddAssert("check note anchors", () => notesInStageAreAnchored(stages[0], Anchor.BottomCentre));
|
||||||
|
AddAssert("check note anchors", () => notesInStageAreAnchored(stages[1], Anchor.TopCentre));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool notesInStageAreAnchored(ManiaStage stage, Anchor anchor) => stage.Columns.SelectMany(c => c.AllHitObjects).All(o => o.Anchor == anchor);
|
||||||
|
|
||||||
private void createNote()
|
private void createNote()
|
||||||
{
|
{
|
||||||
foreach (var stage in stages)
|
foreach (var stage in stages)
|
||||||
@ -101,7 +118,7 @@ namespace osu.Game.Rulesets.Mania.Tests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Drawable createStage(ScrollingDirection direction, ManiaAction action)
|
private ScrollingTestContainer createStage(ScrollingDirection direction, ManiaAction action)
|
||||||
{
|
{
|
||||||
var specialAction = ManiaAction.Special1;
|
var specialAction = ManiaAction.Special1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user