Example #1
0
 def test_init_with_elements(self):
     elements = b'\x00\x01\x02\x03\x04'
     m = 7
     k = 10
     filter = crypto.BloomFilter(m=m, k=k, ntweak=123456, elements=elements)
     self.assertEqual(m, filter.bits.length())
     self.assertEqual(k, len(filter.seeds))
Example #2
0
 def test_add_and_check(self):
     # modelled after https://github.com/neo-project/neo/blob/982e69090f27c1415872536ce39aea22f0873467/neo.UnitTests/Cryptography/UT_BloomFilter.cs#L12
     elements = b'\x00\x01\x02\x03\x04'
     filter = crypto.BloomFilter(m=7, k=10, ntweak=123456)
     filter.add(elements)
     self.assertTrue(filter.check(elements))
     self.assertFalse(filter.check(elements + b'\x05'))
Example #3
0
 def test_seed_building(self):
     filter = crypto.BloomFilter(m=7, k=10, ntweak=123456)
     # these values have been captured by creating a BloomFilter in C# and reading the seed values through debugging
     expected_seeds = [
         123456, 4222003669, 4148916586, 4075829503, 4002742420, 3929655337,
         3856568254, 3783481171, 3710394088, 3637307005
     ]
     self.assertEqual(expected_seeds, filter.seeds)
Example #4
0
 def test_get_bits(self):
     """
     byte[] elements = { 0, 1, 2, 3, 4};
     BloomFilter bf = new BloomFilter(7, 10, 123456, elements);
     byte[] buffer = new byte[(bf.M/8)+1];
     Console.WriteLine($"\\x{BitConverter.ToString(buffer).Replace("-", "\\x")}");
     """
     elements = b'\x00\x01\x02\x03\x04'
     filter = crypto.BloomFilter(m=7, k=10, ntweak=123456, elements=elements)
     self.assertEqual(b'\x00', filter.get_bits())
Example #5
0
 def _serializable_init(cls):
     bf = crypto.BloomFilter(8, 2, 345)
     return cls(bf)