Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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();
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }