public void TestWithNoFinishedTasks() { var tasks = new List <ManualTask>() { new ManualTask((t) => {}), new ManualTask((t) => {}), new ManualTask((t) => {}) }; var task = new MultiTask(tasks); var listener = new TaskListener(); task.StartTask(listener); Assert.AreEqual(listener, task.Listener); Assert.AreEqual(3, task.Tasks.Count); Assert.IsFalse(task.IsFinished); Assert.IsTrue(task.DidRun); Assert.AreEqual(0f, listener.TotalProgress, Delta); Assert.IsFalse(listener.IsFinished); tasks.ForEach(t => t.SetFinished()); Assert.IsTrue(task.IsFinished); Assert.AreEqual(1f, listener.TotalProgress, Delta); Assert.IsTrue(listener.IsFinished); }
public void TestEmptyTasks() { var task = new MultiTask(); var listener = new TaskListener(); task.StartTask(listener); Assert.AreEqual(listener, task.Listener); Assert.AreEqual(0, task.Tasks.Count); Assert.IsTrue(task.IsFinished); Assert.IsTrue(task.DidRun); Assert.AreEqual(1f, listener.TotalProgress, Delta); Assert.IsTrue(listener.IsFinished); }
/// <summary> /// Initializes the game loader processes. /// </summary> private void InitLoader() { if (gameLoader != null) { throw new InvalidOperationException("Attempted to initialize a redundant game loader process."); } gameLoader = new MultiTask(gameLoaders); gameLoader.OnFinished += () => { GC.Collect(); loadState.Value = GameLoadState.Success; }; gameLoader.StartTask(); }
public void TestWithComplexTasks() { var manualTask = new ManualTask((t) => { }); var multiTask = new MultiTask(new List <ITask>() { new ManualTask((t) => {}), new ManualTask((t) => {}) }); var tasks = new List <ITask>() { manualTask, multiTask }; var task = new MultiTask(tasks); var listener = new TaskListener(); task.StartTask(listener); Assert.AreEqual(listener, task.Listener); Assert.AreEqual(2, task.Tasks.Count); Assert.IsFalse(task.IsFinished); Assert.IsTrue(task.DidRun); Assert.AreEqual(0f, listener.TotalProgress, Delta); Assert.IsFalse(listener.IsFinished); (multiTask.Tasks[0] as ManualTask).SetFinished(); Assert.IsFalse(task.IsFinished); Assert.AreEqual(0.25f, listener.TotalProgress, Delta); Assert.IsFalse(listener.IsFinished); manualTask.SetFinished(); Assert.IsFalse(task.IsFinished); Assert.AreEqual(0.75f, listener.TotalProgress, Delta); Assert.IsFalse(listener.IsFinished); (multiTask.Tasks[1] as ManualTask).SetFinished(); Assert.IsTrue(task.IsFinished); Assert.AreEqual(1f, listener.TotalProgress, Delta); Assert.IsTrue(listener.IsFinished); }
public void TestRevoke() { var tasks = new List <ITask>() { new ManualTask(), new MultiTask(new List <ITask>() { new ManualTask(), new ManualTask() }) }; var task = new MultiTask(tasks); task.StartTask(); Assert.IsTrue(task.IsFinished); task.RevokeTask(true); Assert.IsTrue(task.IsRevoked.Value); Assert.IsTrue((tasks[0] as ManualTask).IsRevoked.Value); Assert.IsTrue((tasks[1] as MultiTask).IsRevoked.Value); Assert.IsTrue(((tasks[1] as MultiTask).Tasks[0] as ManualTask).IsRevoked.Value); Assert.IsTrue(((tasks[1] as MultiTask).Tasks[1] as ManualTask).IsRevoked.Value); }