public void AreEqual()
        {
            var element1 = new Element("test", 777, "key");
            var element2 = new Element("test", 777, "key");

            Assert.That(PropComparer.Equal(element1, element2), Is.True);
        }
        public void AreNotEqualKey()
        {
            var key = new object();

            var element1 = new Element("test", 777, "key");
            var element2 = new Element("test", 777, "key2");

            Assert.That(PropComparer.Equal(element1, element2), Is.False);
        }
        public void ReferenceEqual()
        {
            var element = new PrivateField("");

            Assert.That(PropComparer.Equal(element, element), Is.True);
        }
 public void MultiLevelPrivateFieldsNeq() => Assert.That(PropComparer.Equal(new PrivateFieldInherited2("1"), new PrivateFieldInherited2("2")), Is.False);
 public void DoNotIgnorePrivateField() => Assert.That(PropComparer.Equal(new PrivateField("1"), new PrivateField("2")), Is.False);
 public void MismatchingTypes() => Assert.That(PropComparer.Equal(new PrivateField(""), new Element()), Is.False);