57 lines
1.2 KiB
Python
57 lines
1.2 KiB
Python
|
from __future__ import division
|
||
|
import pytest
|
||
|
import pickle
|
||
|
|
||
|
from preshed.bloom import BloomFilter
|
||
|
|
||
|
def test_contains():
|
||
|
bf = BloomFilter()
|
||
|
assert 23 not in bf
|
||
|
bf.add(23)
|
||
|
assert 23 in bf
|
||
|
|
||
|
bf.add(5)
|
||
|
bf.add(42)
|
||
|
bf.add(1002)
|
||
|
assert 5 in bf
|
||
|
assert 42 in bf
|
||
|
assert 1002 in bf
|
||
|
|
||
|
def test_no_false_negatives():
|
||
|
bf = BloomFilter(size=100, hash_funcs=2)
|
||
|
for ii in range(0,1000,20):
|
||
|
bf.add(ii)
|
||
|
|
||
|
for ii in range(0,1000,20):
|
||
|
assert ii in bf
|
||
|
|
||
|
def test_from_error():
|
||
|
bf = BloomFilter.from_error_rate(1000)
|
||
|
for ii in range(0,1000,20):
|
||
|
bf.add(ii)
|
||
|
|
||
|
for ii in range(0,1000,20):
|
||
|
assert ii in bf
|
||
|
|
||
|
def test_to_from_bytes():
|
||
|
bf = BloomFilter(size=100, hash_funcs=2)
|
||
|
for ii in range(0,1000,20):
|
||
|
bf.add(ii)
|
||
|
data = bf.to_bytes()
|
||
|
bf2 = BloomFilter()
|
||
|
for ii in range(0,1000,20):
|
||
|
assert ii not in bf2
|
||
|
bf2.from_bytes(data)
|
||
|
for ii in range(0,1000,20):
|
||
|
assert ii in bf2
|
||
|
assert bf2.to_bytes() == data
|
||
|
|
||
|
def test_bloom_pickle():
|
||
|
bf = BloomFilter(size=100, hash_funcs=2)
|
||
|
for ii in range(0,1000,20):
|
||
|
bf.add(ii)
|
||
|
data = pickle.dumps(bf)
|
||
|
bf2 = pickle.loads(data)
|
||
|
for ii in range(0,1000,20):
|
||
|
assert ii in bf2
|