using System.Collections.Generic; using UnitTestSharp; namespace Vellum.UnitTests { public class SaveContainerConverterTests : TestFixture { // Records what was done to the collection and in what order, which no real collection shows. public sealed class Recorded { public readonly List Steps = new List(); } public sealed class RecordingConverter : SaveContainerConverter { public override SaveNode Write(Recorded value, SaveSession session) { return SaveNode.NewTable(); } public override Recorded Allocate(SaveNode node, SaveSession session) { var returnMe = new Recorded(); returnMe.Steps.Add("allocate"); return returnMe; } public override void Fill(Recorded blank, SaveNode node, SaveSession session) { blank.Steps.Add("fill"); } } public class CanAllocateTests : TestFixture { public void Always_IsTrue() { CheckTrue(new RecordingConverter().CanAllocate); } } public class HasFillTests : TestFixture { public void Always_IsTrue() { CheckTrue(new RecordingConverter().HasFill); } } public class CompleteTests : TestFixture { public void Always_DoesNothing() { var converter = new RecordingConverter(); var recorded = new Recorded(); converter.Complete(recorded, SaveNode.NewTable(), SaveConvertersTests.Session()); CheckEqual(0, recorded.Steps.Count); } } public class ReadTests : TestFixture { public void Always_AllocatesThenFills() { Recorded read = new RecordingConverter().Read(SaveNode.NewTable(), SaveConvertersTests.Session()); CheckEqual(new[] { "allocate", "fill" }, read.Steps.ToArray()); } } } }