using System.Collections.Immutable; using UnitTestSharp; namespace Vellum.Generator.UnitTests { public class MemberCheckTests : TestFixture { public static TypeShape Shape(string display) { return new TypeShape(display, new EquatableArray( ImmutableArray.Create(new TypePart(display, null, PartKind.Plain, 1, 0)))); } public static MemberCheck Variant(string key = "Count", string type = "int", string filePath = "File.cs", string hiddenIn = null) { return new MemberCheck(key, Shape(type), SourcePlaceTests.Variant(filePath: filePath), hiddenIn); } public class CtorTests : TestFixture { public void KeepsEveryArgument() { MemberCheck member = Variant(hiddenIn: "Animal"); CheckEqual("Count", member.Key); CheckEqual(Shape("int"), member.Type); CheckEqual(SourcePlaceTests.Variant(), member.Place); CheckEqual("Animal", member.HiddenIn); } } public class EqualsTests : TestFixture { public void SameValues_AreEqual() { CheckTrue(Variant().Equals(Variant())); CheckTrue(Variant().Equals((object)Variant())); } public void Null_IsNotEqual() { CheckFalse(Variant().Equals((MemberCheck)null)); CheckFalse(Variant().Equals((object)null)); } public void OtherType_IsNotEqual() { CheckFalse(Variant().Equals("Count")); } public void DifferentKey_IsNotEqual() { CheckFalse(Variant().Equals(Variant(key: "Total"))); } public void DifferentType_IsNotEqual() { CheckFalse(Variant().Equals(Variant(type: "long"))); } public void DifferentPlace_IsNotEqual() { CheckFalse(Variant().Equals(Variant(filePath: "Other.cs"))); } public void DifferentHiddenIn_IsNotEqual() { CheckFalse(Variant().Equals(Variant(hiddenIn: "Animal"))); } } public class GetHashCodeTests : TestFixture { public void EqualMembers_HaveEqualHashCodes() { CheckEqual(Variant().GetHashCode(), Variant().GetHashCode()); } } } }