using System; using Amphora; using Ariadne.UnitTests; using UnitTestSharp; using Vellum; namespace Ariadne.Vellum.UnitTests { /// /// Saves a script paused on a deadline, which is a TimeSpan kept in a local. /// public class DeadlineSaveTests : TestFixture { public static TickContext At(ExceptionSandbox sandbox, double gameSeconds) { return new TickContext(sandbox, TimeSpan.FromMilliseconds(16), TimeSpan.FromSeconds(gameSeconds)); } public class FromNodeTests : TestFixture { public void DeadlineKeptInALocal_SurvivesTheSaveExactly() { var sandbox = new ExceptionSandbox(typeof(AriadneSites).Assembly); var gates = new Gates(); var script = new DeadlineScript(); script.Tick(gates, At(sandbox, 10)); SaveSession session = ArcConverterTests.Session(); var loaded = (DeadlineScript)session.FromNode(session.ToNode(script, typeof(DeadlineScript)), typeof(DeadlineScript)); loaded.Tick(gates, At(sandbox, 10.9)); CheckFalse(loaded.Done); loaded.Tick(gates, At(sandbox, 11)); CheckTrue(loaded.Done); } } } }