/ src / tests / test_randomtrackingdict.py
test_randomtrackingdict.py
 1  """
 2  Tests for RandomTrackingDict Class
 3  """
 4  import random
 5  import unittest
 6  
 7  from time import time
 8  
 9  
10  class TestRandomTrackingDict(unittest.TestCase):
11      """
12      Main protocol test case
13      """
14  
15      @staticmethod
16      def randString():
17          """helper function for tests, generates a random string"""
18          retval = ''
19          for _ in range(32):
20              retval += chr(random.randint(0, 255))
21          return retval
22  
23      def test_check_randomtrackingdict(self):
24          """Check the logic of RandomTrackingDict class"""
25          from pybitmessage.randomtrackingdict import RandomTrackingDict
26          a = []
27          k = RandomTrackingDict()
28  
29          a.append(time())
30          for i in range(50000):
31              k[self.randString()] = True
32          a.append(time())
33  
34          while k:
35              retval = k.randomKeys(1000)
36              if not retval:
37                  self.fail("error getting random keys")
38  
39              try:
40                  k.randomKeys(100)
41                  self.fail("bad")
42              except KeyError:
43                  pass
44              for i in retval:
45                  del k[i]
46          a.append(time())
47  
48          for x in range(len(a) - 1):
49              self.assertLess(a[x + 1] - a[x], 10)