public void TestUnloadViaScroll() { WeakList <Container> references = new WeakList <Container>(); AddStep("populate panels", () => { references.Clear(); for (int i = 0; i < 16; i++) { flow.Add(new Container { Size = new Vector2(128), Children = new Drawable[] { new DelayedLoadUnloadWrapper(() => { var container = new Container { RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new TestBox { RelativeSizeAxes = Axes.Both } }, }; references.Add(container); return(container); }, 500, 2000), new SpriteText { Text = i.ToString() }, } }); } flow.Add( new Container { Size = new Vector2(128, 1280), }); }); AddUntilStep("references loaded", () => references.Count() == 16 && references.All(c => c.IsLoaded)); AddStep("scroll to end", () => scroll.ScrollToEnd()); AddUntilStep("references lost", () => { GC.Collect(); return(!references.Any()); }); AddStep("scroll to start", () => scroll.ScrollToStart()); AddUntilStep("references restored", () => references.Count() == 16); }
public void TestRemovedStillUnload() { WeakList <Container> references = new WeakList <Container>(); AddStep("populate panels", () => { references.Clear(); for (int i = 0; i < 16; i++) { flow.Add(new Container { Size = new Vector2(128), Children = new Drawable[] { new DelayedLoadUnloadWrapper(() => { var container = new Container { RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new TestBox { RelativeSizeAxes = Axes.Both } }, }; references.Add(container); return(container); }, 500, 2000), new SpriteText { Text = i.ToString() }, } }); } }); AddUntilStep("references loaded", () => references.Count() == 16 && references.All(c => c.IsLoaded)); AddAssert("check schedulers present", () => scroll.Scheduler.HasPendingTasks); AddStep("Remove all panels", () => flow.Clear(false)); AddUntilStep("repeating schedulers removed", () => !scroll.Scheduler.HasPendingTasks); AddUntilStep("references lost", () => { GC.Collect(); return(!references.Any()); }); }