Esempio n. 1
0
 public void CancelExtensionsOnAbortSets( )
 {
     EnumeratorTask a = new EnumeratorTask(SampleTask(), false, true);
     Assert.IsTrue(a.CancelExtensionsOnAbort);
     a = new EnumeratorTask(SampleTask(), false, false);
     Assert.IsFalse(a.CancelExtensionsOnAbort);
 }
Esempio n. 2
0
        public void IsCompletedFunctional( )
        {
            EnumeratorTask a = new EnumeratorTask(SampleTask(), false);

            Assert.IsFalse(a.IsCompleted, "Task thinks its completed before it ran.");
            (a as ITask).Start();
            Assert.IsTrue(a.IsCompleted, "Looks like the task doesn't register when it's completed.");
        }
Esempio n. 3
0
 public void CanExtendTwice( )
 {
     EnumeratorTask a = new EnumeratorTask(SampleTask(), false);
     a.Extend(SampleExtension());
     a.Extend(SampleExtension());
     (a as ITask).Start();
     Assert.AreEqual(3, i, "Looks like a continued task doesn't actually continue multiple times.");
 }
Esempio n. 4
0
        public void DoesTask( )
        {
            EnumeratorTask a      = new EnumeratorTask(SampleTask(), false);
            bool           result = (a as ITask).Start();

            Assert.AreEqual(5, i, "Looks like the task didn't execute when instantiated with an Enumerator.");
            Assert.IsFalse(result, "Reported that it was napping when it completed.");
        }
Esempio n. 5
0
        public void ExtendsTask( )
        {
            EnumeratorTask a = new EnumeratorTask(SampleTask(), false);

            a.Extend(SampleExtension());
            (a as ITask).Start();
            Assert.AreEqual(4, i, "Looks like a continued task doesn't actually continue.");
        }
Esempio n. 6
0
        public void CancelExtensionsOnAbortSets( )
        {
            EnumeratorTask a = new EnumeratorTask(SampleTask(), false, true);

            Assert.IsTrue(a.CancelExtensionsOnAbort);
            a = new EnumeratorTask(SampleTask(), false, false);
            Assert.IsFalse(a.CancelExtensionsOnAbort);
        }
Esempio n. 7
0
        public void CanExtendTwice( )
        {
            EnumeratorTask a = new EnumeratorTask(SampleTask(), false);

            a.Extend(SampleExtension());
            a.Extend(SampleExtension());
            (a as ITask).Start();
            Assert.AreEqual(3, i, "Looks like a continued task doesn't actually continue multiple times.");
        }
Esempio n. 8
0
        public void ForceAwakeningFunctions( )
        {
            ActionTask     t = new ActionTask((_) => System.Threading.Thread.Sleep(0), false);
            EnumeratorTask a = new EnumeratorTask(SampleTaskWithYield(t), false);

            (a as ITask).Start();
            Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
            Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
            Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
            a.ForceAwaken();
            (a as ITask).Start();
            Assert.AreEqual(8, i, "After napping didn't continue correctly.");
            Assert.IsTrue(a.IsCompleted, "Doesn't think its done after napping.");
        }
Esempio n. 9
0
        public void CanCancelExtensions( )
        {
            ActionTask t = new ActionTask(( _ ) => System.Threading.Thread.Sleep(0), false);
            EnumeratorTask a = new EnumeratorTask(SampleTaskWithYield(t), false);
            (a as ITask).Start();
            Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
            Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
            Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
            a.CancelExtensions();
            a.IsNapping = false;
            (a as ITask).Start();

            Assert.AreEqual(6, i, "Task didn't correctly cancel extensions when aborted.");
        }
Esempio n. 10
0
        public void FlagsWorkForEnumerators( )
        {
            EnumeratorTask task = Hikari.ScheduleUnity(EnumTask());

            Assert.IsTrue(task.OnUnityThread, "Unity flag not set.");
            Assert.IsFalse(task.IsDedicated, "Dedicated flag set wrongly.");
            task = Hikari.Schedule(EnumTask());
            Assert.IsFalse(task.OnUnityThread, "Unity flag set wrongly.");
            Assert.IsFalse(task.IsDedicated, "Dedicated flag set wrongly.");
            task = Hikari.SpawnDedicatedTask(EnumTask());
            Assert.IsFalse(task.OnUnityThread, "Unity flag set wrongly.");
            Assert.IsTrue(task.IsDedicated, "Dedicated flag not set.");

            Hikari.Instance.Update();
        }
Esempio n. 11
0
        public void CanCancelExtensions( )
        {
            ActionTask     t = new ActionTask((_) => System.Threading.Thread.Sleep(0), false);
            EnumeratorTask a = new EnumeratorTask(SampleTaskWithYield(t), false);

            (a as ITask).Start();
            Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
            Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
            Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
            a.CancelExtensions();
            a.IsNapping = false;
            (a as ITask).Start();

            Assert.AreEqual(6, i, "Task didn't correctly cancel extensions when aborted.");
        }
Esempio n. 12
0
 public void DoesNotForceAwakeByDefault( )
 {
     ActionTask t = new ActionTask(( _ ) => System.Threading.Thread.Sleep(0), false);
     EnumeratorTask a = new EnumeratorTask(SampleTaskWithYield(t), false);
     bool result = (a as ITask).Start();
     Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
     Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
     Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
     a.IsNapping = false;
     Assert.IsTrue(a.IsNapping, "Forced awake by default.");
     (t as ITask).Start();
     result = (a as ITask).Start();
     Assert.AreEqual(8, i, "After napping didn't continue correctly.");
     Assert.IsFalse(result, "Reported it was still napping once finished.");
     Assert.IsTrue(a.IsCompleted, "Doesn't think its done after napping.");
 }
Esempio n. 13
0
        public void NappingFunctions( )
        {
            ActionTask     t      = new ActionTask((_) => System.Threading.Thread.Sleep(0), false);
            EnumeratorTask a      = new EnumeratorTask(SampleTaskWithYield(t), false);
            bool           result = (a as ITask).Start();

            Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
            Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
            Assert.IsTrue(result, "Reported it was completed while napping.");
            Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
            (t as ITask).Start();
            result = (a as ITask).Start();
            Assert.AreEqual(8, i, "After napping didn't continue correctly.");
            Assert.IsFalse(result, "Reported it was still napping once finished.");
            Assert.IsTrue(a.IsCompleted, "Doesn't think its done after napping.");
        }
Esempio n. 14
0
        public void NappingForTimeFunctions( )
        {
            EnumeratorTask a      = new EnumeratorTask(SampleTaskWithYieldForSeconds(), false);
            DateTime       finish = DateTime.Now + TimeSpan.FromSeconds(1);
            bool           result = (a as ITask).Start();

            Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
            Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
            Assert.IsTrue(result, "Reported it was completed while napping.");
            Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
            result = (a as ITask).Start();
            Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
            Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
            Assert.IsTrue(result, "Reported it was completed while napping.");
            Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
            System.Threading.Thread.Sleep(1100);
            result = (a as ITask).Start();
            Assert.AreEqual(8, i, "After napping didn't continue correctly.");
            Assert.IsFalse(result, "Reported it was still napping once finished.");
            Assert.IsTrue(a.IsCompleted, "Doesn't think its done after napping.");
        }
Esempio n. 15
0
 /// <summary>
 /// Creates a dedicated task and a thread for it.
 /// 
 /// Dedicated tasks will not relinquish control of their thread while
 /// napping, allowing them to restart immediately after napping.
 /// 
 /// Once the task has completed, its thread will be recycled in Hikari
 /// and may be used for other tasks.
 /// 
 /// Enumerator tasks may yield null to allow napping, or yield another
 /// Task to nap until that task finishes, then start up again.
 /// </summary>
 /// <param name="task">The enumerator to run on the new dedicated task.</param>
 /// <param name="cancel_extensions_on_abort">Whether or not to cancel extensions automatically when the Task is aborted. Defaults to true.</param>
 /// <returns>The new dedicated task.</returns>
 public static EnumeratorTask SpawnDedicatedTask ( System.Collections.IEnumerator task, bool cancel_extensions_on_abort = true )
 {
     EnumeratorTask t = new EnumeratorTask(task, false, cancel_extensions_on_abort, true);
     Instance.threadManager.SpawnDedicatedThread(t);
     return t;
 }
Esempio n. 16
0
 public void PostEnumeratorTask(EnumeratorTask task)
 {
     StartCoroutine(task());
 }
Esempio n. 17
0
 public void NappingForTimeFunctions( )
 {
     EnumeratorTask a = new EnumeratorTask(SampleTaskWithYieldForSeconds(), false);
     DateTime finish = DateTime.Now + TimeSpan.FromSeconds(1);
     bool result = (a as ITask).Start();
     Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
     Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
     Assert.IsTrue(result, "Reported it was completed while napping.");
     Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
     result = (a as ITask).Start();
     Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
     Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
     Assert.IsTrue(result, "Reported it was completed while napping.");
     Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
     System.Threading.Thread.Sleep(1100);
     result = (a as ITask).Start();
     Assert.AreEqual(8, i, "After napping didn't continue correctly.");
     Assert.IsFalse(result, "Reported it was still napping once finished.");
     Assert.IsTrue(a.IsCompleted, "Doesn't think its done after napping.");
 }
Esempio n. 18
0
 public void IsCompletedFunctional( )
 {
     EnumeratorTask a = new EnumeratorTask(SampleTask(), false);
     Assert.IsFalse(a.IsCompleted, "Task thinks its completed before it ran.");
     (a as ITask).Start();
     Assert.IsTrue(a.IsCompleted, "Looks like the task doesn't register when it's completed.");
 }
Esempio n. 19
0
 public void ForceAwakeningFunctions( )
 {
     ActionTask t = new ActionTask(( _ ) => System.Threading.Thread.Sleep(0), false);
     EnumeratorTask a = new EnumeratorTask(SampleTaskWithYield(t), false);
     (a as ITask).Start();
     Assert.IsTrue(a.IsNapping, "Doesn't think it's napping...");
     Assert.IsFalse(a.IsCompleted, "Thinks its done while napping.");
     Assert.AreEqual(6, i, "Ran extensions while napping or didn't run start before napping.");
     a.ForceAwaken();
     (a as ITask).Start();
     Assert.AreEqual(8, i, "After napping didn't continue correctly.");
     Assert.IsTrue(a.IsCompleted, "Doesn't think its done after napping.");
 }
Esempio n. 20
0
 public void ExtendsTask( )
 {
     EnumeratorTask a = new EnumeratorTask(SampleTask(), false);
     a.Extend(SampleExtension());
     (a as ITask).Start();
     Assert.AreEqual(4, i, "Looks like a continued task doesn't actually continue.");
 }
Esempio n. 21
0
 public void DoesTask( )
 {
     EnumeratorTask a = new EnumeratorTask(SampleTask(), false);
     bool result = (a as ITask).Start();
     Assert.AreEqual(5, i, "Looks like the task didn't execute when instantiated with an Enumerator.");
     Assert.IsFalse(result, "Reported that it was napping when it completed.");
 }
Esempio n. 22
0
 /// <summary>
 /// Schedules a task to be run on Unity's thread.
 /// 
 /// Enumerator tasks may yield null to allow napping, or yield another
 /// Task to nap until that task finishes, then start up again.
 /// </summary>
 /// <param name="to_schedule">The enumerator to run in the task.</param>
 /// <param name="cancel_extensions_on_abort">Whether or not to cancel extensions automatically when the Task is aborted. Defaults to true.</param>
 /// <returns>The task that was added.</returns>
 public static EnumeratorTask ScheduleUnity ( System.Collections.IEnumerator to_schedule, bool cancel_extensions_on_abort = true )
 {
     EnumeratorTask t = new EnumeratorTask(to_schedule, true, cancel_extensions_on_abort);
     Instance.unityManager.EnqueueTask(t);
     return t;
 }