public void RollingHashCalculator1Test() { var r = new RollingHashCalculator <int>(1, 256, 101); r.Add(7); Assert.AreEqual(7, r.HashCode); r.Add(17); Assert.AreEqual(17, r.HashCode); }
public void RollingHashCalculator3Test() { var r = new RollingHashCalculator <int>(3, 256, 101); //"abr" r.Add(97); r.Add(98); r.Add(114); Assert.AreEqual(4, r.HashCode); //"bra" r.Add(97); Assert.AreEqual(30, r.HashCode); // back to "abr" r.Add(98); r.Add(114); Assert.AreEqual(4, r.HashCode); }
public void SequenceEqualTest() { var r = new RollingHashCalculator <int>(4, 2048, 10007); r.Add(8); r.Add(316); r.Add(76); r.Add(130); var s = new RollingHashCalculator <int>(4, 2048, 10007); s.Add(8); s.Add(316); s.Add(76); s.Add(130); Assert.IsTrue(r.Components.SequenceEqual(s.Components)); Assert.AreEqual(r.HashCode, s.HashCode); }
public void RollingHashCalculator2Test(int b, int m, int val1, int val2, int result) { var r = new RollingHashCalculator <int>(2, b, m); r.Add(val1); r.Add(val2); Assert.AreEqual(result, r.HashCode); // If we flush it other stuff, the hash should be something else r.Add(5); r.Add(120); Assert.AreNotEqual(result, r.HashCode); // If we flush "hi" back in, the hash should come back. r.Add(val1); r.Add(val2); Assert.AreEqual(result, r.HashCode); }
public void KnownCollisionTest() { var r = new RollingHashCalculator <int>(30, 2048, 10007); r.Add(8); r.Add(316); r.Add(76); r.Add(130); r.Add(9); r.Add(150); r.Add(162); r.Add(316); r.Add(8); r.Add(316); r.Add(8); r.Add(316); r.Add(9); r.Add(9); r.Add(20); r.Add(133); r.Add(8); r.Add(124); r.Add(26); r.Add(316); r.Add(8); r.Add(316); r.Add(9); r.Add(9); r.Add(150); r.Add(162); r.Add(316); r.Add(8); r.Add(316); r.Add(8); var s = new RollingHashCalculator <int>(30, 2048, 10007); s.Add(316); s.Add(170); s.Add(316); s.Add(9); s.Add(13); s.Add(133); s.Add(8); s.Add(316); s.Add(26); s.Add(316); s.Add(8); s.Add(316); s.Add(26); s.Add(316); s.Add(24); s.Add(169); s.Add(316); s.Add(316); s.Add(9); s.Add(9); s.Add(13); s.Add(133); s.Add(8); s.Add(2); s.Add(316); s.Add(26); s.Add(316); s.Add(8); s.Add(316); s.Add(26); Assert.IsFalse(r.Components.SequenceEqual(s.Components)); Assert.AreEqual(r.HashCode, s.HashCode); }