using System.Collections.Immutable; using System.Linq; using UnitTestSharp; namespace Vellum.Generator.UnitTests { public class EquatableArrayTests : TestFixture { public static EquatableArray Of(params string[] items) { return new EquatableArray(items.ToImmutableArray()); } public class ItemsTests : TestFixture { public void ArrayItWasGiven_IsReturned() { CheckEqual(new[] { "a", "b" }, Of("a", "b").Items.ToArray()); } public void DefaultArray_IsEmpty() { CheckEqual(0, new EquatableArray().Items.Length); } } public class EqualsTests : TestFixture { public void SameItems_AreEqual() { CheckTrue(Of("a", "b").Equals(Of("a", "b"))); CheckTrue(Of("a", "b").Equals((object)Of("a", "b"))); } public void DefaultAndEmpty_AreEqual() { CheckTrue(new EquatableArray().Equals(Of())); } public void DifferentItem_IsNotEqual() { CheckFalse(Of("a", "b").Equals(Of("a", "c"))); } public void DifferentOrder_IsNotEqual() { CheckFalse(Of("a", "b").Equals(Of("b", "a"))); } public void DifferentLength_IsNotEqual() { CheckFalse(Of("a", "b").Equals(Of("a"))); } public void OtherType_IsNotEqual() { CheckFalse(Of("a").Equals("a")); CheckFalse(Of("a").Equals(null)); } } public class GetHashCodeTests : TestFixture { public void SameItems_HaveEqualHashCodes() { CheckEqual(Of("a", "b").GetHashCode(), Of("a", "b").GetHashCode()); } public void DefaultAndEmpty_HaveEqualHashCodes() { CheckEqual(Of().GetHashCode(), new EquatableArray().GetHashCode()); } public void NullItem_IsCounted() { CheckEqual(Of(null, "a").GetHashCode(), Of(null, "a").GetHashCode()); } } } }