mirror of
https://github.com/ppy/osu.git
synced 2025-01-13 15:33:21 +08:00
Add test for changing of a source
This commit is contained in:
parent
976f5020c0
commit
2f74ef5131
@ -5,6 +5,7 @@ using System;
|
|||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Audio.Sample;
|
using osu.Framework.Audio.Sample;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
@ -133,6 +134,48 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
AddAssert("skinchanged only called once", () => consumer.SkinChangedCount == 1);
|
AddAssert("skinchanged only called once", () => consumer.SkinChangedCount == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestSwitchOff()
|
||||||
|
{
|
||||||
|
SkinConsumer consumer = null;
|
||||||
|
SwitchableSkinProvidingContainer target = null;
|
||||||
|
|
||||||
|
AddStep("setup layout", () =>
|
||||||
|
{
|
||||||
|
Child = new SkinSourceContainer
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Child = target = new SwitchableSkinProvidingContainer(new SecondarySource())
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep("add permissive", () => target.Add(consumer = new SkinConsumer("test", name => new NamedBox("Default Implementation"), source => true)));
|
||||||
|
AddAssert("consumer using override source", () => consumer.Drawable is SecondarySourceBox);
|
||||||
|
AddStep("disable", () => target.Disable());
|
||||||
|
AddAssert("consumer using base source", () => consumer.Drawable is BaseSourceBox);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SwitchableSkinProvidingContainer : SkinProvidingContainer
|
||||||
|
{
|
||||||
|
private bool allow = true;
|
||||||
|
|
||||||
|
protected override bool AllowDrawableLookup(ISkinComponent component) => allow;
|
||||||
|
|
||||||
|
public void Disable()
|
||||||
|
{
|
||||||
|
allow = false;
|
||||||
|
TriggerSourceChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SwitchableSkinProvidingContainer(ISkin skin)
|
||||||
|
: base(skin)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class ExposedSkinnableDrawable : SkinnableDrawable
|
private class ExposedSkinnableDrawable : SkinnableDrawable
|
||||||
{
|
{
|
||||||
public new Drawable Drawable => base.Drawable;
|
public new Drawable Drawable => base.Drawable;
|
||||||
@ -270,7 +313,8 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
public TValue GetValue<TConfiguration, TValue>(Func<TConfiguration, TValue> query) where TConfiguration : SkinConfiguration => throw new NotImplementedException();
|
public TValue GetValue<TConfiguration, TValue>(Func<TConfiguration, TValue> query) where TConfiguration : SkinConfiguration => throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SkinSourceContainer : Container, ISkin
|
[Cached(typeof(ISkinSource))]
|
||||||
|
private class SkinSourceContainer : Container, ISkinSource
|
||||||
{
|
{
|
||||||
public Drawable GetDrawableComponent(ISkinComponent componentName) => new BaseSourceBox();
|
public Drawable GetDrawableComponent(ISkinComponent componentName) => new BaseSourceBox();
|
||||||
|
|
||||||
@ -279,6 +323,8 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
public SampleChannel GetSample(ISampleInfo sampleInfo) => throw new NotImplementedException();
|
public SampleChannel GetSample(ISampleInfo sampleInfo) => throw new NotImplementedException();
|
||||||
|
|
||||||
public TValue GetValue<TConfiguration, TValue>(Func<TConfiguration, TValue> query) where TConfiguration : SkinConfiguration => throw new NotImplementedException();
|
public TValue GetValue<TConfiguration, TValue>(Func<TConfiguration, TValue> query) where TConfiguration : SkinConfiguration => throw new NotImplementedException();
|
||||||
|
|
||||||
|
public event Action SourceChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TestSkinComponent : ISkinComponent
|
private class TestSkinComponent : ISkinComponent
|
||||||
|
Loading…
Reference in New Issue
Block a user