public void ShouldReturnFalseIfObjectsDifferentImplementIEquatableAndComparingOnObject()
            {
                // Arrange
                var first = new TestEqualityObject {
                    Name = "Hello, World", Count = 10
                };
                var second = new TestEqualityObject {
                    Name = "World, Hello", Count = 5
                };

                var comparer = new GenericEqualityComparer <TestEqualityObject>(o => o);

                // Act
                bool areEqual = comparer.Equals(first, second);

                // Assert
                areEqual.ShouldBeFalse();
            }
            public void ShouldReturnTrueIfObjectsSimilarImplementIEquatableAndComparingOnObject()
            {
                // Arrange
                string objectName  = "Hello, World!";
                int    objectCount = 10;

                var first = new TestEqualityObject {
                    Name = objectName, Count = objectCount
                };
                var second = new TestEqualityObject {
                    Name = objectName, Count = objectCount
                };

                var comparer = new GenericEqualityComparer <TestEqualityObject>(o => o);

                // Act
                bool areEqual = comparer.Equals(first, second);

                // Assert
                areEqual.ShouldBeTrue();
            }