public void ValueObjectsWithSameReferenceAreEqual()
        {
            var testValueObject = new TestValueObject { Firstname = "Robin", Lastname = "van der Knaap" };
            var testValueObject2 = testValueObject;

            Assert.AreEqual(testValueObject, testValueObject2);
            Assert.IsTrue(testValueObject == testValueObject2);
            Assert.IsFalse(testValueObject != testValueObject2);

            var valueObjectSet = new HashSet<ValueObject> {testValueObject, testValueObject2};

            Assert.AreEqual(1, valueObjectSet.Count);
        }
        public void ValueObjectsAreNotEqualWhenNotAllPropertiesHaveSameValue()
        {
            var testValueObject = new TestValueObject { Firstname = "Robin", Lastname = "van der Knaap" };
            var testValueObject2 = new TestValueObject { Firstname = "Daan", Lastname = "le Duc" };

            Assert.AreNotEqual(testValueObject, testValueObject2);
            Assert.IsFalse(testValueObject == testValueObject2);
            Assert.IsTrue(testValueObject != testValueObject2);
            Assert.AreNotEqual(testValueObject.GetHashCode(), testValueObject2.GetHashCode());

            var valueObjectSet = new HashSet<ValueObject> {testValueObject, testValueObject2};

            Assert.AreEqual(2, valueObjectSet.Count);
        }