Source code for hashtron.hash.test_hash

import unittest
from hashtron.hash.hash import Hash

[docs] class TestHash(unittest.TestCase):
[docs] def test_hash(self): # Test cases for hash function self.assertEqual(Hash.hash(0, 0, 0), 0) self.assertLess(Hash.hash(1, 1, 10), 10)
[docs] def test_string_hash(self): # Test cases for string_hash function self.assertEqual(Hash.string_hash(0, "test"), Hash.string_hash(0, "test"))
[docs] def test_loop_length(self): # Loop length test bound1 = 10 bound2 = 100000 count = 0 max_val = 1 while max_val <= (1 << bound1): visited = [False] * max_val current = 0 for s in range(bound2): current = Hash.hash(current, s, max_val) if current == 0 or visited[current]: visited = [False] * max_val continue else: visited[current] = True count += 1 max_val <<= 1 print(f"Tested bound1 1 << {bound1}, bound2 {bound2}, result: {count} (higher is likely better)")
if __name__ == '__main__': unittest.main()