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));
 }
示例#2
0
        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));
        }
示例#3
0
 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
 })
                                                        );
示例#5
0
        public void NonIdenticalValuesHaveDifferentHash()
        {
            var a = new SampleSubWithPrivateInherited(1);
            var b = new SampleSubWithPrivateInherited(2);

            PAssert.That(() =>
                         FieldwiseHasher.Hash(a) != FieldwiseHasher.Hash(b) &&
                         !ReferenceEquals(a, b)
                         );
        }
示例#6
0
        public void IdenticalValuesHaveSameHash()
        {
            var a = new SampleSubWithProtectedInherited(1);
            var b = new SampleSubWithProtectedInherited(1);

            PAssert.That(() =>
                         FieldwiseHasher.Hash(a) == FieldwiseHasher.Hash(b) &&
                         !ReferenceEquals(a, b)
                         );
        }
示例#7
0
 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)));
 }
示例#8
0
 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"
     }));
 }
示例#9
0
 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
     }));
 }
示例#10
0
 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
     }));
 }
示例#11
0
 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))
                                                                   );