-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestBloomFilter.py
More file actions
107 lines (82 loc) · 3.65 KB
/
testBloomFilter.py
File metadata and controls
107 lines (82 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import unittest
from bloomFilter import BloomFilter
class TestNativeDictionary(unittest.TestCase):
def test_hash1(self):
bf = BloomFilter(10)
self.assertEqual(bf.hash1('0123456789'), 7)
self.assertEqual(bf.hash1('1234567890'), 5)
self.assertEqual(bf.hash1('2345678901'), 3)
self.assertEqual(bf.hash1('3456789012'), 1)
self.assertEqual(bf.hash1('4567890123'), 9)
self.assertEqual(bf.hash1('5678901234'), 7)
self.assertEqual(bf.hash1('6789012345'), 5)
self.assertEqual(bf.hash1('7890123456'), 3)
self.assertEqual(bf.hash1('8901234567'), 1)
self.assertEqual(bf.hash1('9012345678'), 9)
def test_hash2(self):
bf = BloomFilter(10)
self.assertEqual(bf.hash2('0123456789'), 9)
self.assertEqual(bf.hash2('1234567890'), 3)
self.assertEqual(bf.hash2('2345678901'), 7)
self.assertEqual(bf.hash2('3456789012'), 1)
self.assertEqual(bf.hash2('4567890123'), 5)
self.assertEqual(bf.hash2('5678901234'), 9)
self.assertEqual(bf.hash2('6789012345'), 3)
self.assertEqual(bf.hash2('7890123456'), 7)
self.assertEqual(bf.hash2('8901234567'), 1)
self.assertEqual(bf.hash2('9012345678'), 5)
def test_add(self):
bf = BloomFilter(10)
self.assertEqual(bf.add('0123456789'), int(
'0b1010000000', 2)) # 7 + 9 bits
self.assertEqual(bf.add('1234567890'), int(
'0b0000101000', 2)) # 5 + 3
self.assertEqual(bf.add('2345678901'), int(
'0b0010001000', 2)) # 3 + 7
self.assertEqual(bf.add('3456789012'), int(
'0b0000000010', 2)) # 1 + 1
self.assertEqual(bf.add('4567890123'), int(
'0b1000100000', 2)) # 9 +5
self.assertEqual(bf.add('5678901234'), int(
'0b1010000000', 2)) # 7 + 9
self.assertEqual(bf.add('6789012345'), int(
'0b0000101000', 2)) # 5 + 3
self.assertEqual(bf.add('7890123456'), int(
'0b0010001000', 2)) # 3 + 7
self.assertEqual(bf.add('8901234567'), int(
'0b0000000010', 2)) # 1 + 1
self.assertEqual(bf.add('9012345678'), int(
'0b1000100000', 2)) # 9 + 5
self.assertEqual(bf.get_idx(), int(
'0b1010101010', 2)) # in index set 9 7 5 3 1 bits
def test_is_value(self):
bf = BloomFilter(10)
bf.add('0123456789')
bf.add('1234567890')
bf.add('2345678901')
bf.add('3456789012')
bf.add('4567890123')
bf.add('5678901234')
bf.add('6789012345')
bf.add('7890123456')
bf.add('8901234567')
bf.add('9012345678')
self.assertEqual(bf.is_value('0123456789'), True)
self.assertEqual(bf.is_value('1234567890'), True)
self.assertEqual(bf.is_value('2345678901'), True)
self.assertEqual(bf.is_value('3456789012'), True)
self.assertEqual(bf.is_value('4567890123'), True)
self.assertEqual(bf.is_value('5678901234'), True)
self.assertEqual(bf.is_value('6789012345'), True)
self.assertEqual(bf.is_value('7890123456'), True)
self.assertEqual(bf.is_value('8901234567'), True)
self.assertEqual(bf.is_value('9012345678'), True)
self.assertEqual(bf.is_value(
'42347hbtr556byftynrtnyt'), True) # 9bit is set
self.assertEqual(bf.is_value('32423'), False) # 0 bit - not set
bf.add('32423') # 0
self.assertEqual(bf.is_value('32423'), True) # 0 bit - not set
# 1bit - Wrong result ;)
self.assertEqual(bf.is_value('345435214'), True)
with self.assertRaises(TypeError):
print(bf.get_idx()[0])