using Amphora; using System; using UnitTestSharp; namespace Ariadne.UnitTests { public class TickContextTests : TestFixture { public class CtorTests : TestFixture { public void KeepsTheSandboxAndBothTimes() { ExceptionSandbox sandbox = TestTicks.NewSandbox(); var tick = new TickContext(sandbox, deltaTime: TimeSpan.FromMilliseconds(16), gameTime: TimeSpan.FromSeconds(5)); CheckEqual(sandbox, tick.Sandbox); CheckEqual(Duration.FromMilliseconds(16), tick.DeltaTime); CheckEqual(Duration.FromSeconds(5), tick.GameTime); } public void TimeSpansAreAcceptedAsDurations() { var tick = new TickContext(TestTicks.NewSandbox(), TimeSpan.FromMilliseconds(16), TimeSpan.FromSeconds(5)); CheckEqual(Duration.FromMilliseconds(16), tick.DeltaTime); CheckEqual(Duration.FromSeconds(5), tick.GameTime); } public void InfiniteDeltaTime_Throws() { CheckThrow(typeof(ArgumentOutOfRangeException)); new TickContext(TestTicks.NewSandbox(), Duration.Forever, Duration.Zero); } public void InfiniteTimeSpanAsDeltaTime_Throws() { CheckThrow(typeof(ArgumentOutOfRangeException)); new TickContext(TestTicks.NewSandbox(), System.Threading.Timeout.InfiniteTimeSpan, TimeSpan.Zero); } public void InfiniteGameTime_Throws() { CheckThrow(typeof(ArgumentOutOfRangeException)); new TickContext(TestTicks.NewSandbox(), Duration.Zero, Duration.Forever); } public void NegativeInfiniteGameTime_Throws() { CheckThrow(typeof(ArgumentOutOfRangeException)); new TickContext(TestTicks.NewSandbox(), Duration.Zero, -Duration.Forever); } public void NoSandbox_Throws() { CheckThrow(typeof(ArgumentNullException)); new TickContext(null, TimeSpan.Zero, TimeSpan.Zero); } public void SandboxWithoutAriadneAsAnAnchor_Throws() { CheckThrow(typeof(ArgumentException)); new TickContext(new ExceptionSandbox(typeof(ExceptionSandbox).Assembly), TimeSpan.Zero, TimeSpan.Zero); } public void SandboxWithAriadneAmongSeveralAnchors_Works() { var sandbox = new ExceptionSandbox(typeof(ExceptionSandbox).Assembly, typeof(AriadneSites).Assembly); CheckEqual(sandbox, new TickContext(sandbox, TimeSpan.Zero, TimeSpan.Zero).Sandbox); } public void DefaultValue_HasNoSandbox() { CheckNull(default(TickContext).Sandbox); } } } }