public void TestLongRunningLoadDoesNotBlock() { List <TestLoadBlockingDrawableLongRunning> longRunning = new List <TestLoadBlockingDrawableLongRunning>(); // add enough drawables to saturate the task scheduler AddRepeatStep("add long running", () => { var d = new TestLoadBlockingDrawableLongRunning(); longRunning.Add(d); LoadComponentAsync(d); }, 10); TestLoadBlockingDrawable normal = null; AddStep("add normal", () => { LoadComponentAsync(normal = new TestLoadBlockingDrawable(), Add); }); AddStep("allow normal load", () => normal.AllowLoad.Set()); AddUntilStep("did load", () => normal.IsLoaded); AddStep("allow long running load", () => longRunning.ForEach(d => d.AllowLoad.Set())); }
public void TestScheduleDuringAsyncLoad() { TestLoadBlockingDrawable composite = null; bool scheduleRun = false; AddStep("Async load drawable", () => { LoadComponentAsync(composite = new TestLoadBlockingDrawable(), d => Child = d); }); AddStep("Attempt to schedule on child 1", () => { composite.Schedule(() => scheduleRun = true); }); AddStep("Allow child 1 load", () => composite.AllowLoad.Set()); AddUntilStep("Scheduled content run", () => scheduleRun); }