1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 04:42:58 +08:00

Consider shader manager for ruleset dependencies disposal testing

This commit is contained in:
Salman Ahmed 2021-06-20 23:11:10 +03:00
parent 67f0344c0c
commit eabcbd1d42

View File

@ -13,6 +13,7 @@ using osu.Framework.Bindables;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.OpenGL.Textures; using osu.Framework.Graphics.OpenGL.Textures;
using osu.Framework.Graphics.Shaders;
using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Shapes;
using osu.Framework.Graphics.Textures; using osu.Framework.Graphics.Textures;
using osu.Framework.Testing; using osu.Framework.Testing;
@ -31,12 +32,14 @@ namespace osu.Game.Tests.Rulesets
DrawableWithDependencies drawable = null; DrawableWithDependencies drawable = null;
TestTextureStore textureStore = null; TestTextureStore textureStore = null;
TestSampleStore sampleStore = null; TestSampleStore sampleStore = null;
TestShaderManager shaderManager = null;
AddStep("add dependencies", () => AddStep("add dependencies", () =>
{ {
Child = drawable = new DrawableWithDependencies(); Child = drawable = new DrawableWithDependencies();
textureStore = drawable.ParentTextureStore; textureStore = drawable.ParentTextureStore;
sampleStore = drawable.ParentSampleStore; sampleStore = drawable.ParentSampleStore;
shaderManager = drawable.ParentShaderManager;
}); });
AddStep("clear children", Clear); AddStep("clear children", Clear);
@ -52,12 +55,14 @@ namespace osu.Game.Tests.Rulesets
AddAssert("parent texture store not disposed", () => !textureStore.IsDisposed); AddAssert("parent texture store not disposed", () => !textureStore.IsDisposed);
AddAssert("parent sample store not disposed", () => !sampleStore.IsDisposed); AddAssert("parent sample store not disposed", () => !sampleStore.IsDisposed);
AddAssert("parent shader manager not disposed", () => !shaderManager.IsDisposed);
} }
private class DrawableWithDependencies : CompositeDrawable private class DrawableWithDependencies : CompositeDrawable
{ {
public TestTextureStore ParentTextureStore { get; private set; } public TestTextureStore ParentTextureStore { get; private set; }
public TestSampleStore ParentSampleStore { get; private set; } public TestSampleStore ParentSampleStore { get; private set; }
public TestShaderManager ParentShaderManager { get; private set; }
public DrawableWithDependencies() public DrawableWithDependencies()
{ {
@ -70,6 +75,7 @@ namespace osu.Game.Tests.Rulesets
dependencies.CacheAs<TextureStore>(ParentTextureStore = new TestTextureStore()); dependencies.CacheAs<TextureStore>(ParentTextureStore = new TestTextureStore());
dependencies.CacheAs<ISampleStore>(ParentSampleStore = new TestSampleStore()); dependencies.CacheAs<ISampleStore>(ParentSampleStore = new TestSampleStore());
dependencies.CacheAs<ShaderManager>(ParentShaderManager = new TestShaderManager());
return new DrawableRulesetDependencies(new OsuRuleset(), dependencies); return new DrawableRulesetDependencies(new OsuRuleset(), dependencies);
} }
@ -135,5 +141,18 @@ namespace osu.Game.Tests.Rulesets
public int PlaybackConcurrency { get; set; } public int PlaybackConcurrency { get; set; }
} }
private class TestShaderManager : ShaderManager
{
public override byte[] LoadRaw(string name) => null;
public bool IsDisposed { get; private set; }
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
IsDisposed = true;
}
}
} }
} }