From e10c973aa69b8b59df985c35debac260647b3845 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sat, 11 Apr 2020 04:24:34 +0300 Subject: [PATCH] Add test cases for behaviour of ruleset dependencies caching on tests --- .../Gameplay/TestSceneStoryboardSamples.cs | 6 +- .../Resources/{ => Samples}/test-sample.mp3 | Bin .../Resources/Textures/test-image.png | Bin 0 -> 4852 bytes .../Testing/TestSceneRulesetTestScene.cs | 80 ++++++++++++++++++ 4 files changed, 83 insertions(+), 3 deletions(-) rename osu.Game.Tests/Resources/{ => Samples}/test-sample.mp3 (100%) create mode 100644 osu.Game.Tests/Resources/Textures/test-image.png create mode 100644 osu.Game.Tests/Testing/TestSceneRulesetTestScene.cs diff --git a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs index 84506739ab..8adf6064f5 100644 --- a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs +++ b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs @@ -60,11 +60,11 @@ namespace osu.Game.Tests.Gameplay this.resourceName = resourceName; } - public byte[] Get(string name) => name == resourceName ? TestResources.GetStore().Get("Resources/test-sample.mp3") : null; + public byte[] Get(string name) => name == resourceName ? TestResources.GetStore().Get("Resources/Samples/test-sample.mp3") : null; - public Task GetAsync(string name) => name == resourceName ? TestResources.GetStore().GetAsync("Resources/test-sample.mp3") : null; + public Task GetAsync(string name) => name == resourceName ? TestResources.GetStore().GetAsync("Resources/Samples/test-sample.mp3") : null; - public Stream GetStream(string name) => name == resourceName ? TestResources.GetStore().GetStream("Resources/test-sample.mp3") : null; + public Stream GetStream(string name) => name == resourceName ? TestResources.GetStore().GetStream("Resources/Samples/test-sample.mp3") : null; public IEnumerable GetAvailableResources() => new[] { resourceName }; diff --git a/osu.Game.Tests/Resources/test-sample.mp3 b/osu.Game.Tests/Resources/Samples/test-sample.mp3 similarity index 100% rename from osu.Game.Tests/Resources/test-sample.mp3 rename to osu.Game.Tests/Resources/Samples/test-sample.mp3 diff --git a/osu.Game.Tests/Resources/Textures/test-image.png b/osu.Game.Tests/Resources/Textures/test-image.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0092edc89e6cb91a46c1dacba724642e3d880d GIT binary patch literal 4852 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 mkLc+&yII5jkHf{w{y_mZ|9^*. Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System; +using System.Collections.Generic; +using NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Audio.Track; +using osu.Framework.Configuration.Tracking; +using osu.Framework.Graphics.Textures; +using osu.Framework.IO.Stores; +using osu.Game.Beatmaps; +using osu.Game.Configuration; +using osu.Game.Rulesets; +using osu.Game.Rulesets.Configuration; +using osu.Game.Rulesets.Difficulty; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Testing; +using osu.Game.Rulesets.UI; +using osu.Game.Tests.Resources; +using osu.Game.Tests.Visual; + +namespace osu.Game.Tests.Testing +{ + public class TestSceneRulesetTestScene : OsuTestScene, IRulesetTestScene + { + [Test] + public void TestRetrieveTexture() + { + AddAssert("ruleset texture retrieved", () => + Dependencies.Get().Get(@"test-image") != null); + } + + [Test] + public void TestRetrieveSample() + { + AddAssert("ruleset sample retrieved", () => + Dependencies.Get().Get(@"test-sample") != null); + } + + [Test] + public void TestResolveConfigManager() + { + AddAssert("ruleset config resolved", () => + Dependencies.Get() != null); + } + + public Ruleset CreateRuleset() => new TestRuleset(); + + private class TestRuleset : Ruleset + { + public override string Description => string.Empty; + public override string ShortName => string.Empty; + + public TestRuleset() + { + // temporary ID to let RulesetConfigCache pass our + // config manager to the ruleset dependencies. + RulesetInfo.ID = -1; + } + + public override IResourceStore CreateResourceStore() => new NamespacedResourceStore(TestResources.GetStore(), @"Resources"); + public override IRulesetConfigManager CreateConfig(SettingsStore settings) => new TestRulesetConfigManager(); + + public override IEnumerable GetModsFor(ModType type) => throw new NotImplementedException(); + public override DrawableRuleset CreateDrawableRulesetWith(IBeatmap beatmap, IReadOnlyList mods = null) => throw new NotImplementedException(); + public override IBeatmapConverter CreateBeatmapConverter(IBeatmap beatmap) => throw new NotImplementedException(); + public override DifficultyCalculator CreateDifficultyCalculator(WorkingBeatmap beatmap) => throw new NotImplementedException(); + } + + private class TestRulesetConfigManager : IRulesetConfigManager + { + public void Load() => throw new NotImplementedException(); + public bool Save() => throw new NotImplementedException(); + public TrackedSettings CreateTrackedSettings() => throw new NotImplementedException(); + public void LoadInto(TrackedSettings settings) => throw new NotImplementedException(); + public void Dispose() => throw new NotImplementedException(); + } + } +}