using System; using UnitTestSharp; namespace Amphora.UnitTests { public class MessageFailureKindTests : TestFixture { public class CtorTests : TestFixture { public void KeepsTheMessage() { CheckEqual("That can't be reached.", FailureTestKinds.Unreachable.Message); } public void NullMessage_Throws() { CheckThrow(typeof(ArgumentNullException)); new MessageFailureKind("Amphora.UnitTests.Unnamed", message: null); } } public class FailTests : TestFixture { public void CarriesOnlyTheKind() { Status failure = FailureTestKinds.Unreachable.Fail(); CheckEqual(FailureTestKinds.Unreachable, failure.Kind); CheckNull(failure.Ref); CheckEqual(0L, failure.Bits); } public void AllocatesNothing() { CheckEqual(0L, Allocations.During(() => Allocations.StatusSink = FailureTestKinds.Unreachable.Fail())); } } public class DescribeTests : TestFixture { public void IsTheMessageWhateverTheContext() { Status failure = FailureTestKinds.Unreachable.Fail(); CheckEqual("That can't be reached.", FailureTestKinds.Unreachable.Describe(failure, context: "ignored")); } public void OtherKind_Throws() { Status other = BlockedCellKind.Instance.Fail(FailureTestKinds.Wall); CheckThrow(typeof(ArgumentException)); FailureTestKinds.Unreachable.Describe(other, context: null); } } } }