using UnitTestSharp; namespace Vellum.Generator.UnitTests { public class SaveableModelTests : TestFixture { public static SaveableModel Variant(bool hasShape = true, string checksName = "A") { SaveableShape shape = null; if (hasShape) { shape = SaveableShapeTests.Variant(); } return new SaveableModel(shape, SaveableChecksTests.Variant(name: checksName)); } public class CtorTests : TestFixture { public void KeepsTheShapeAndTheChecks() { SaveableModel model = Variant(); CheckEqual(SaveableShapeTests.Variant(), model.Shape); CheckEqual(SaveableChecksTests.Variant(), model.Checks); } } public class EqualsTests : TestFixture { public void SameValues_AreEqual() { CheckTrue(Variant().Equals(Variant())); CheckTrue(Variant().Equals((object)Variant())); } public void NoShapeOnBothSides_AreEqual() { CheckTrue(Variant(hasShape: false).Equals(Variant(hasShape: false))); } public void Null_IsNotEqual() { CheckFalse(Variant().Equals((SaveableModel)null)); CheckFalse(Variant().Equals((object)null)); } public void OtherType_IsNotEqual() { CheckFalse(Variant().Equals("A")); } public void DifferentChecks_AreNotEqual() { CheckFalse(Variant().Equals(Variant(checksName: "B"))); } public void ShapeOnOneSideOnly_IsNotEqual() { CheckFalse(Variant().Equals(Variant(hasShape: false))); CheckFalse(Variant(hasShape: false).Equals(Variant())); } public void DifferentShapes_AreNotEqual() { var other = new SaveableModel(SaveableShapeTests.Variant(name: "B"), SaveableChecksTests.Variant()); CheckFalse(Variant().Equals(other)); } } public class GetHashCodeTests : TestFixture { public void EqualModels_HaveEqualHashCodes() { CheckEqual(Variant().GetHashCode(), Variant().GetHashCode()); } } } }