示例#1
0
        public void TwoHashes_WithSameData_AreSame()
        {
            var inputX = new byte[] { 0, 1, 2, 3, 4 };
            var inputY = new byte[] { 0, 1, 2, 3, 4 };

            var equalityComparer = new HashEqualityComparer();

            var x = Mock.Of <IHash>(m => m.Bytes == inputX);
            var y = Mock.Of <IHash>(m => m.Bytes == inputY);

            Assert.IsTrue(equalityComparer.Equals(x, y));
        }
示例#2
0
        public void TwoHashes_WithDifferentData_AreDifferent()
        {
            var inputX = new byte[] { 0, 1, 2, 3, 4 };
            var inputY = new byte[] { 1, 2, 3, 4, 5 };

            var equalityComparer = new HashEqualityComparer();

            var x = Mock.Of <IHash>(m => m.Bytes == inputX);
            var y = Mock.Of <IHash>(m => m.Bytes == inputY);

            Assert.IsFalse(equalityComparer.Equals(x, y));
        }
        public void HashEqualityComparer_Equals_SameSize1()
        {
            byte[] vector1 = "92937945B518814341DE3F726500D4FF".HexToBinary();
            byte[] vector2 = (byte[])vector1.Clone();
            bool   result  = comparer.Equals(vector1, vector2);

            Assert.AreEqual(true, result);
        }
 /// <summary>
 /// Constructor
 /// </summary>
 protected KeyConfigurationBase(ICountConfiguration <TCount> configuration, bool createValueFilter = true) :
     base(createValueFilter)
 {
     _countConfiguration = configuration;
     _getId  = GetIdImpl;
     _idHash = id =>
     {
         var res = BitConverter.ToInt32(_murmurHash.Hash(BitConverter.GetBytes(id)), 0);
         return(res == 0 ? 1 : res);
     };
     _hashes = (hash, hashCount) => ComputeHash(hash, BitConverter.ToInt32(_murmurHash.Hash(BitConverter.GetBytes(hash), 912345678), 0), hashCount, 1);
     //the hashSum value is an identity hash.
     _entityHash = e => IdHash(GetId(e));
     _isPure     = (d, p) => CountConfiguration.IsPure(d.Counts[p]) &&
                   HashEqualityComparer.Equals(d.HashSumProvider[p], IdHash(d.IdSumProvider[p]));
     _idAdd                = _idRemove = (id1, id2) => id1 ^ id2;
     _idIntersect          = (id1, id2) => id1 & id2;
     _hashIdentity         = 0;
     _idIdentity           = 0L;
     _hashAdd              = _hashRemove = (h1, h2) => h1 ^ h2;
     _hashIntersect        = (h1, h2) => h1 & h2;
     _idEqualityComparer   = EqualityComparer <long> .Default;
     _hashEqualityComparer = EqualityComparer <int> .Default;
 }