1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-14 00:03:21 +08:00

Add failing test for the global ruleset being set to an invalid value

This commit is contained in:
Dean Herbert 2021-07-26 16:33:56 +09:00
parent 488dd3ea52
commit 04c8ea2813

View File

@ -10,6 +10,7 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Shapes;
using osu.Framework.Graphics.Textures; using osu.Framework.Graphics.Textures;
using osu.Framework.Platform; using osu.Framework.Platform;
using osu.Framework.Testing;
using osu.Game.Audio; using osu.Game.Audio;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Configuration; using osu.Game.Configuration;
@ -32,6 +33,7 @@ using osuTK.Graphics;
namespace osu.Game.Tests.Visual namespace osu.Game.Tests.Visual
{ {
[TestFixture] [TestFixture]
[HeadlessTest]
public class TestSceneOsuGame : OsuTestScene public class TestSceneOsuGame : OsuTestScene
{ {
private IReadOnlyList<Type> requiredGameDependencies => new[] private IReadOnlyList<Type> requiredGameDependencies => new[]
@ -83,10 +85,15 @@ namespace osu.Game.Tests.Visual
typeof(PreviewTrackManager), typeof(PreviewTrackManager),
}; };
private OsuGame game;
[Resolved]
private OsuGameBase gameBase { get; set; }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(GameHost host, OsuGameBase gameBase) private void load(GameHost host)
{ {
OsuGame game = new OsuGame(); game = new OsuGame();
game.SetHost(host); game.SetHost(host);
Children = new Drawable[] Children = new Drawable[]
@ -100,7 +107,39 @@ namespace osu.Game.Tests.Visual
}; };
AddUntilStep("wait for load", () => game.IsLoaded); AddUntilStep("wait for load", () => game.IsLoaded);
}
[Test]
public void TestNullRulesetHandled()
{
RulesetInfo ruleset = null;
AddStep("store current ruleset", () => ruleset = Ruleset.Value);
AddStep("set global ruleset to null value", () => Ruleset.Value = null);
AddAssert("ruleset still valid", () => Ruleset.Value.Available);
AddAssert("ruleset unchanged", () => ReferenceEquals(Ruleset.Value, ruleset));
}
[Test]
public void TestUnavailableRulesetHandled()
{
RulesetInfo ruleset = null;
AddStep("store current ruleset", () => ruleset = Ruleset.Value);
AddStep("set global ruleset to invalid value", () => Ruleset.Value = new RulesetInfo
{
Name = "unavailable",
Available = false,
});
AddAssert("ruleset still valid", () => Ruleset.Value.Available);
AddAssert("ruleset unchanged", () => ReferenceEquals(Ruleset.Value, ruleset));
}
[Test]
public void TestAvailableDependencies()
{
AddAssert("check OsuGame DI members", () => AddAssert("check OsuGame DI members", () =>
{ {
foreach (var type in requiredGameDependencies) foreach (var type in requiredGameDependencies)
@ -111,6 +150,7 @@ namespace osu.Game.Tests.Visual
return true; return true;
}); });
AddAssert("check OsuGameBase DI members", () => AddAssert("check OsuGameBase DI members", () =>
{ {
foreach (var type in requiredGameBaseDependencies) foreach (var type in requiredGameBaseDependencies)