public void EqualsShouldReturnTrueWhenBothModelsAreNull()
        {
            ModelEqualityComparer<ModelStub> comparer = new ModelEqualityComparer<ModelStub>();

            Assert.That(((IEqualityComparer)comparer).Equals(null, null), Is.True);
            Assert.That(((IEqualityComparer<ModelStub>)comparer).Equals(null, null), Is.True);
        }
        public void GetHashCodeShouldReturnTheModelsHashCode()
        {
            var modelA = new ModelStub(System.Guid.NewGuid(), 1);

            ModelEqualityComparer<ModelStub> comparer = new ModelEqualityComparer<ModelStub>();

            Assert.That(((IEqualityComparer)comparer).GetHashCode(modelA), Is.EqualTo(modelA.GetHashCode()));
            Assert.That(((IEqualityComparer<ModelStub>)comparer).GetHashCode(modelA), Is.EqualTo(modelA.GetHashCode()));
        }
        public void EqualsShouldReturnTrueWhenBothModelsAreEqual()
        {
            var modelA = new ModelStub(System.Guid.NewGuid(), 1);
            var modelB = new ModelStub(modelA.Id, 1);

            ModelEqualityComparer<ModelStub> comparer = new ModelEqualityComparer<ModelStub>();

            Assert.That(((IEqualityComparer)comparer).Equals(modelA, modelB), Is.True);
            Assert.That(((IEqualityComparer<ModelStub>)comparer).Equals(modelA, modelB), Is.True);
        }
        public void EqualsShouldReturnFalseWhenEitherModelIsNull()
        {
            var modelA = new ModelStub(System.Guid.NewGuid(), 1);
            var modelB = new ModelStub(modelA.Id, 1);

            ModelEqualityComparer<ModelStub> comparer = new ModelEqualityComparer<ModelStub>();

            Assert.That(((IEqualityComparer)comparer).Equals(modelA, null), Is.False);
            Assert.That(((IEqualityComparer)comparer).Equals(null, modelB), Is.False);
            Assert.That(((IEqualityComparer<ModelStub>)comparer).Equals(modelA, null), Is.False);
            Assert.That(((IEqualityComparer<ModelStub>)comparer).Equals(null, modelB), Is.False);
        }