using UnitTestSharp; namespace Ariadne.UnitTests { public class LocalShapeTests : TestFixture { public class LocalTests : TestFixture { public void RecordsTheKeyAndNotTheValue() { var shape = new LocalShape(); shape.Local("Run.count", 4); CheckEqual(new[] { "Run.count" }, shape.Keys); } public void SameKeyTwice_IsRecordedOnce() { var shape = new LocalShape(); shape.Local("Run.count", 4); shape.Local("Run.count", 5); CheckEqual(1, shape.Keys.Count); } } public class ScopeTests : TestFixture { public void RecordsLocalsInATableOfItsOwn() { var shape = new LocalShape(); shape.Scope("Run.first/").Local("Step.count", 1); CheckEqual(0, shape.Keys.Count); CheckEqual(new[] { "Step.count" }, shape.Scopes["Run.first/"].Keys); } public void SameNameTwice_ReturnsTheSameTable() { var shape = new LocalShape(); CheckTrue(ReferenceEquals(shape.Scope("Run.first/"), shape.Scope("Run.first/"))); } public void DifferentNames_ReturnDifferentTables() { var shape = new LocalShape(); CheckFalse(ReferenceEquals(shape.Scope("Run.first/"), shape.Scope("Run.second/"))); } public void CallInsideACall_IsATableInsideThatCallsTable() { var shape = new LocalShape(); shape.Scope("Run.first/").Scope("Step.second/").Local("Inner.count", 1); CheckEqual(new[] { "Inner.count" }, shape.Scopes["Run.first/"].Scopes["Step.second/"].Keys); } } public class ArcWideCallsTests : TestFixture { public void CursorFinishedAndField_RecordNothing() { var shape = new LocalShape(); shape.Cursor(new[] { "first" }); shape.Finished(true); shape.Field("Count", 1); CheckEqual(0, shape.Keys.Count); CheckEqual(0, shape.Scopes.Count); } } } }