using UnitTestSharp; namespace Amphora.UnitTests { public class ExceptionSiteTests : TestFixture { public class CtorTests : TestFixture { public void KeepsTheTargetAndPhase() { var target = new object(); var site = new ExceptionSite(target, phase: 7); CheckEqual(target, site.Target); CheckEqual(7, site.Phase); } } public class EqualsTests : TestFixture { public void SameTargetAndPhase_AreEqual() { var target = new object(); CheckTrue(new ExceptionSite(target, phase: 1).Equals(new ExceptionSite(target, phase: 1))); } public void DifferentPhases_AreNotEqual() { var target = new object(); CheckFalse(new ExceptionSite(target, phase: 1).Equals(new ExceptionSite(target, phase: 2))); } public void DifferentTargets_AreNotEqual() { CheckFalse(new ExceptionSite(new object(), phase: 1).Equals(new ExceptionSite(new object(), phase: 1))); } public void TargetsThatMerelyCompareEqual_AreNotEqual() { string target = "target"; string equalTarget = new string(target.ToCharArray()); CheckFalse(new ExceptionSite(target, phase: 1).Equals(new ExceptionSite(equalTarget, phase: 1))); } public void BoxedEqualSite_IsEqual() { var target = new object(); object boxed = new ExceptionSite(target, phase: 1); CheckTrue(new ExceptionSite(target, phase: 1).Equals(boxed)); } public void SomethingOtherThanASite_IsNotEqual() { var target = new object(); CheckFalse(new ExceptionSite(target, phase: 1).Equals(target)); } } public class GetHashCodeTests : TestFixture { public void EqualSites_HashTheSame() { var target = new object(); CheckEqual(new ExceptionSite(target, phase: 3).GetHashCode(), new ExceptionSite(target, phase: 3).GetHashCode()); } public void NullTarget_Hashes() { CheckEqual(new ExceptionSite(null, phase: 3).GetHashCode(), new ExceptionSite(null, phase: 3).GetHashCode()); } } public class ToStringTests : TestFixture { public void NamesTheTargetAndThePhase() { CheckEqual("okButton phase 2", new ExceptionSite("okButton", phase: 2).ToString()); } } } }