using Amphora; using System; using UnitTestSharp; namespace Glass.UnitTests { public class PathFailureKindTests : TestFixture { public static readonly PathFailureKind Missing = new PathFailureKind("Glass.UnitTests.Missing", "'{0}' is gone."); public class CtorTests : TestFixture { public void KeepsTheTemplate() { CheckEqual("'{0}' is gone.", Missing.Template); } public void NullTemplate_Throws() { CheckThrow(typeof(ArgumentNullException)); new PathFailureKind("Glass.UnitTests.Untemplated", template: null); } } public class FailTests : TestFixture { public void CarriesThePathInRef() { Status status = Missing.Fail("/a/b"); CheckEqual(Missing, status.Kind); CheckEqual("/a/b", status.Ref); CheckEqual(0L, status.Bits); } public void NullPath_Throws() { CheckThrow(typeof(ArgumentNullException)); Missing.Fail(null); } } public class PathOfTests : TestFixture { public void ReturnsThePathItFailedWith() { CheckEqual("/a/b", Missing.PathOf(Missing.Fail("/a/b"))); } public void OtherKind_Throws() { Status other = FileSystemFailures.NotFound.Fail("/a/b"); CheckThrow(typeof(ArgumentException)); Missing.PathOf(other); } } public class DescribeTests : TestFixture { public void PutsThePathInTheTemplate() { CheckEqual("'/a/b' is gone.", Missing.Fail("/a/b").Describe()); } public void OtherKind_Throws() { Status other = FileSystemFailures.NotFound.Fail("/a/b"); CheckThrow(typeof(ArgumentException)); Missing.Describe(other, context: null); } } } }