def test_double_hash_singularity(self): singular_ngrams = ["635", "1402"] non_singular_ngrams = ["666", "1401"] for ngram in singular_ngrams: bf = double_hash_encode_ngrams([ngram], (b'secret1', b'secret2'), 20, 1024, 'ascii') self.assertEqual(bf.count(), 1) bf_ns = double_hash_encode_ngrams_non_singular( [ngram], (b'secret1', b'secret2'), 20, 1024, 'ascii') self.assertGreater(bf_ns.count(), 1) self.assertNotEqual(bf, bf_ns) for ngram in non_singular_ngrams: bf = double_hash_encode_ngrams([ngram], (b'secret1', b'secret2'), 20, 1024, 'ascii') self.assertGreater(bf.count(), 1) bf_ns = double_hash_encode_ngrams_non_singular( [ngram], (b'secret1', b'secret2'), 20, 1024, 'ascii') self.assertGreater(bf_ns.count(), 1) self.assertEqual(bf, bf_ns)
def test_order_of_ngrams(self): self._test_order_of_ngrams( lambda ngrams: blake_encode_ngrams(ngrams, (self.key_sha1, ), self. ks, 1024, 'ascii'), copy(self.ngrams)) self._test_order_of_ngrams( lambda ngrams: double_hash_encode_ngrams(ngrams, ( self.key_sha1, self.key_md5), self.ks, 1024, 'ascii'), copy(self.ngrams)) self._test_order_of_ngrams( lambda ngrams: double_hash_encode_ngrams_non_singular( ngrams, (self.key_sha1, self.key_md5), self.ks, 1024, 'ascii'), copy(self.ngrams))
def test_double_hash_encoding_non_singular(self): bf = double_hash_encode_ngrams_non_singular( self.ngrams, (self.key_sha1, self.key_md5), self.ks, 1024, 'ascii') self._test_bit_range(bf.count(), self.k, len(self.ngrams))