Exemplo n.º 1
0
        public unsafe void TestPieces()
        {
            var bufArr = new byte[BufferSize];
            for (int i = 0; i < BufferSize; ++i)
            {
                bufArr[i] = unchecked((byte)i);
            }
            for (int i = 0; i < BufferSize; ++i)
            {
                ulong a, b, c, d, seed1 = 1, seed2 = 2;
                var state = new SpookyHash();

                // all as one call
                a = seed1;
                b = seed2;
                fixed(byte* buf = bufArr)
                    SpookyHash.Hash128(buf, i, ref a, ref b);

                // all as one piece
                c = 0xdeadbeefdeadbeef;
                d = 0xbaceba11baceba11;
                state.Init(seed1, seed2);
                fixed(byte* buf = bufArr)
                    state.Update(buf, i);
                state.Final(out c, out d);

                Assert.Equal(a, c);
                Assert.Equal(b, d);

                for (int j = 0; j < i; ++j)
                {
                    c = seed1;
                    d = seed2;
                    state.Init(c, d);
                    fixed(byte* buf = bufArr)
                    {
                        state.Update(buf, j);
                        state.Update(buf + j, i - j);
                    }
                    state.Final(out c, out d);
                    Assert.Equal(a, c);
                    Assert.Equal(b, d);
                }
            }
        }
Exemplo n.º 2
0
 public void ConstructorsEquivalent()
 {
     ulong ui1 = 0xdeadcafe;
     ulong ui2 = 0xbaceba11;
     var fromU = new SpookyHash(ui1, ui2);
     var fromZU = new SpookyHash();
     fromZU.Init(ui1, ui2);
     long l1 = unchecked((long)ui1);
     long l2 = unchecked((long)ui2);
     var fromL = new SpookyHash(l1, l2);
     var fromZL = new SpookyHash();
     fromZL.Init(l1, l2);
     fromU.Update(MediumLengthString);
     fromZU.Update(MediumLengthString);
     fromL.Update(MediumLengthString);
     fromZL.Update(MediumLengthString);
     var hash = fromU.Final();
     Assert.Equal(hash, fromZU.Final());
     Assert.Equal(hash, fromL.Final());
     Assert.Equal(hash, fromZL.Final());
     Assert.Equal(hash.ToString(), fromZL.Final().ToString());
 }