public void NullValuesAreHashable() { PAssert.That(() => FieldwiseHasher.Hash <SampleStruct?>(null) == FieldwiseHasher.Hash <SampleStruct?>(null)); PAssert.That(() => FieldwiseHasher.Hash <SampleStruct?>(null) != FieldwiseHasher.Hash <SampleStruct?>(default(SampleStruct))); PAssert.That(() => FieldwiseHasher.Hash <SampleClass>(null) == FieldwiseHasher.Hash <SampleClass>(null)); PAssert.That(() => FieldwiseHasher.Hash <SampleClass>(null) != FieldwiseHasher.Hash <SampleStruct?>(null)); }
public void ClassStructFieldsAffectHash() { var object1 = new SampleClass { PlainStruct = new CustomStruct { Bla = 1 } }; var object2 = new SampleClass { PlainStruct = new CustomStruct { Bla = 2 } }; var object3A = new SampleClass { PlainStruct = new CustomStruct { Bla = 3 } }; var object3B = new SampleClass { PlainStruct = new CustomStruct { Bla = 3 } }; PAssert.That(() => FieldwiseHasher.Hash(object1) != FieldwiseHasher.Hash(object2)); PAssert.That(() => FieldwiseHasher.Hash(object3A) == FieldwiseHasher.Hash(object3B)); }
public void IdenticalObjectsHaveIdenticalHashes() { //it's important that this is a class not struct instance so we've checked that //also, that means we're accessing another assemblies private fields PAssert.That(() => FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 4)) == FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 4))); }
public void TypeMattersAtCompileTime() => PAssert.That(() => FieldwiseHasher.Hash(new SampleClass { AnEnum = SampleEnum.Q }) != FieldwiseHasher.Hash(new SampleSubClass { AnEnum = SampleEnum.Q }) );
public void NonIdenticalValuesHaveDifferentHash() { var a = new SampleSubWithPrivateInherited(1); var b = new SampleSubWithPrivateInherited(2); PAssert.That(() => FieldwiseHasher.Hash(a) != FieldwiseHasher.Hash(b) && !ReferenceEquals(a, b) ); }
public void IdenticalValuesHaveSameHash() { var a = new SampleSubWithProtectedInherited(1); var b = new SampleSubWithProtectedInherited(1); PAssert.That(() => FieldwiseHasher.Hash(a) == FieldwiseHasher.Hash(b) && !ReferenceEquals(a, b) ); }
public void OneDifferentObjectMemberChangesHash() { PAssert.That(() => FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 4)) != FieldwiseHasher.Hash(Tuple.Create(11, 2, "3", 4))); PAssert.That(() => FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 4)) != FieldwiseHasher.Hash(Tuple.Create(1, 12, "3", 4))); PAssert.That(() => FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 4)) != FieldwiseHasher.Hash(Tuple.Create(1, 2, "13", 4))); PAssert.That(() => FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 4)) != FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 14))); }
public void AutoPropsAffectHash() { PAssert.That(() => FieldwiseHasher.Hash(new SampleClass { AutoPropWithPrivateBackingField = "x" }) == FieldwiseHasher.Hash(new SampleClass { AutoPropWithPrivateBackingField = "x" })); PAssert.That(() => FieldwiseHasher.Hash(new SampleClass { AutoPropWithPrivateBackingField = "x" }) != FieldwiseHasher.Hash(new SampleClass { AutoPropWithPrivateBackingField = "y" })); }
public void ClassNullableIntFieldsAffectHash() { PAssert.That(() => FieldwiseHasher.Hash(new SampleClass { NullableField = null }) != FieldwiseHasher.Hash(new SampleClass { NullableField = 1 })); PAssert.That(() => FieldwiseHasher.Hash(new SampleClass { NullableField = 3 }) == FieldwiseHasher.Hash(new SampleClass { NullableField = 3 })); }
public void StructIntFieldsAffectHash() { PAssert.That(() => FieldwiseHasher.Hash(new CustomStruct { Bla = 1 }) != FieldwiseHasher.Hash(new CustomStruct { Bla = 2 })); PAssert.That(() => FieldwiseHasher.Hash(new CustomStruct { Bla = 3 }) == FieldwiseHasher.Hash(new CustomStruct { Bla = 3 })); }
public void SubClassesCheckBaseClassFields() { PAssert.That(() => FieldwiseHasher.Hash(new SampleSubClassWithFields { AnEnum = SampleEnum.Q }) != FieldwiseHasher.Hash(new SampleSubClassWithFields { AnEnum = SampleEnum.P })); PAssert.That(() => FieldwiseHasher.Hash(new SampleSubClassWithFields { AnEnum = SampleEnum.Q }) == FieldwiseHasher.Hash(new SampleSubClassWithFields { AnEnum = SampleEnum.Q })); }
public void IdenticalObjectsHaveIdenticalHashes() => PAssert.That(() => FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 4)) == FieldwiseHasher.Hash(Tuple.Create(1, 2, "3", 4)) );