using Amphora; using System; using UnitTestSharp; namespace Susurrus.UnitTests { public class DetailFailureKindTests : TestFixture { public static readonly DetailFailureKind Sample = new DetailFailureKind("Susurrus.UnitTests.Detail", "Problem: {0}."); public static readonly DetailFailureKind Other = new DetailFailureKind("Susurrus.UnitTests.OtherDetail", "Other: {0}."); public class CtorTests : TestFixture { public void KeepsItsNameAndTemplate() { CheckEqual("Susurrus.UnitTests.Detail", Sample.Name); CheckEqual("Problem: {0}.", Sample.Template); } public void NullTemplate_Throws() { CheckThrow(typeof(ArgumentNullException)); new DetailFailureKind("Susurrus.UnitTests.Untemplated", template: null); } } public class FailTests : TestFixture { public void ReturnsAFailureOfThisKind() { Status status = Sample.Fail("the cause"); CheckFalse(status.IsOk); CheckTrue(ReferenceEquals(Sample, status.Kind)); } public void NullDetail_Throws() { CheckThrow(typeof(ArgumentNullException)); Sample.Fail(null); } } public class DetailOfTests : TestFixture { public void ReturnsTheDetailTheFailureCarries() { Status status = Sample.Fail("the cause"); CheckEqual("the cause", Sample.DetailOf(in status)); } public void AFailureOfAnotherKind_Throws() { Status status = Other.Fail("the cause"); CheckThrow(typeof(ArgumentException)); Sample.DetailOf(in status); } } public class DescribeTests : TestFixture { public void PutsTheDetailInTheTemplate() { CheckEqual("Problem: the cause.", Sample.Fail("the cause").Describe()); } } } }