diff --git a/Coroutine/ActiveCoroutine.cs b/Coroutine/ActiveCoroutine.cs index e6f8314..be39e40 100644 --- a/Coroutine/ActiveCoroutine.cs +++ b/Coroutine/ActiveCoroutine.cs @@ -81,6 +81,15 @@ namespace Coroutine { return true; } + /// + /// Reset statistics related to this coroutine. + /// + public void ResetStats() { + this.TotalMoveNextTime = TimeSpan.Zero; + this.MoveNextCount = 1; + this.MaxMoveNextTime = TimeSpan.Zero; + } + internal bool Tick(double deltaSeconds) { if (!this.WasCanceled && this.current.Tick(deltaSeconds)) this.MoveNext(); diff --git a/Tests/TimeBasedCoroutineTests.cs b/Tests/TimeBasedCoroutineTests.cs index a13eb55..e34f567 100644 --- a/Tests/TimeBasedCoroutineTests.cs +++ b/Tests/TimeBasedCoroutineTests.cs @@ -335,6 +335,10 @@ namespace Tests { var gTc = cr.MaxMoveNextTime.Milliseconds > expected2 - errorbar2; // 95% accuracy. var lTd = cr.MaxMoveNextTime.Milliseconds < expected2 + errorbar2; // 95% accuracy. Assert.IsTrue(gTc && lTd, $"Maximum Move Next Time {cr.MaxMoveNextTime.Milliseconds} is invalid."); + + cr.ResetStats(); + Assert.IsTrue(cr.AverageMoveNextTime.Milliseconds == 0, "Invalid Coroutine Statistics."); + Assert.IsTrue(cr.MaxMoveNextTime.Milliseconds == 0, "Invalid Coroutine Statistics."); } [Test]