public void TestDisposalDoesNotDisposeParentStores() { DrawableWithDependencies drawable = null; TestTextureStore textureStore = null; TestSampleStore sampleStore = null; TestShaderManager shaderManager = null; AddStep("add dependencies", () => { Child = drawable = new DrawableWithDependencies(); textureStore = drawable.ParentTextureStore; sampleStore = drawable.ParentSampleStore; shaderManager = drawable.ParentShaderManager; }); AddStep("clear children", Clear); AddUntilStep("wait for disposal", () => drawable.IsDisposed); AddStep("GC", () => { drawable = null; GC.Collect(); GC.WaitForPendingFinalizers(); }); AddAssert("parent texture store not disposed", () => !textureStore.IsDisposed); AddAssert("parent sample store not disposed", () => !sampleStore.IsDisposed); AddAssert("parent shader manager not disposed", () => !shaderManager.IsDisposed); }
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) { var dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); dependencies.CacheAs <TextureStore>(ParentTextureStore = new TestTextureStore()); dependencies.CacheAs <ISampleStore>(ParentSampleStore = new TestSampleStore()); dependencies.CacheAs <ShaderManager>(ParentShaderManager = new TestShaderManager()); return(new DrawableRulesetDependencies(new OsuRuleset(), dependencies)); }