using System; using System.Threading; using Amphora; using UnitTestSharp; namespace Ariadne.UnitTests { public class TickTimeTests : TestFixture { public class DeadlineAfterTests : TestFixture { private static readonly TickTime Now = new TickTime(Duration.FromMilliseconds(16), Duration.FromSeconds(10)); public void Span_IsAddedToTheGameTime() { CheckEqual(Duration.FromSeconds(13), Now.DeadlineAfter(Duration.FromSeconds(3))); } public void ZeroSpan_IsTheGameTime() { CheckEqual(Duration.FromSeconds(10), Now.DeadlineAfter(Duration.Zero)); } public void NegativeSpan_IsBeforeTheGameTime() { CheckEqual(Duration.FromSeconds(7), Now.DeadlineAfter(Duration.FromSeconds(-3))); } public void Forever_IsForever() { CheckEqual(Duration.Forever, Now.DeadlineAfter(Duration.Forever)); } public void NegativeForever_IsNegativeForeverSoTheWaitDoesNotPause() { CheckEqual(-Duration.Forever, Now.DeadlineAfter(-Duration.Forever)); CheckTrue(Now.DeadlineAfter(-Duration.Forever) <= Now.GameTime); } public void InfiniteTimeSpan_IsForever() { CheckEqual(Duration.Forever, Now.DeadlineAfter(Timeout.InfiniteTimeSpan)); } public void OtherNegativeTimeSpan_IsAnOrdinaryNegativeSpan() { CheckEqual(Duration.FromMilliseconds(9998), Now.DeadlineAfter(TimeSpan.FromMilliseconds(-2))); } public void SpanTooLongToAdd_IsTheLongestFiniteDuration() { CheckEqual(Duration.MaxValue, Now.DeadlineAfter(Duration.MaxValue)); CheckEqual(Duration.MaxValue, Now.DeadlineAfter(TimeSpan.MaxValue)); CheckTrue(Now.DeadlineAfter(Duration.MaxValue).IsFinite); } } } }