예제 #1
0
def test_remove_none():
    v = VICBF(10000, 3)
    try:
        v.remove(None)
    except ValueError:
        assert True
        return
    assert False
예제 #2
0
def test_query_none():
    v = VICBF(10000, 3)
    try:
        v.query(None)
    except ValueError:
        assert True
        return
    assert False
예제 #3
0
def test_remove_not_inserted():
    v = VICBF(10000, 3)
    try:
        v.remove(124)
    except ValueError:
        assert True
        return
    assert False
예제 #4
0
def test_insert_none():
    v = VICBF(10000, 3)
    try:
        v.insert(None)
    except ValueError:
        assert True
        return
    assert False
예제 #5
0
def test_serialization_dumpall():
    v = VICBF(10000, 3)
    for i in range(5000):
        v += i
    ser = v.serialize()
    v2 = deserialize(ser)
    assert v.size() == v2.size()
    for i in range(5000):
        assert i in v2
예제 #6
0
def test_serialization_dumpselective():
    v = VICBF(10000, 3)
    v += 123
    v += 126
    ser = v.serialize()
    v2 = deserialize(ser)
    assert v.size() == v2.size()
    assert 123 in v2
    assert 126 in v2
    assert 124 not in v2
예제 #7
0
def test_serialization_independence():
    v = VICBF(10000, 3)
    for i in range(10):
        v += i
    ser = v.serialize()
    for i in range(10):
        v -= i
    des = deserialize(ser)
    for i in range(10):
        assert i in des
예제 #8
0
def test_size():
    v = VICBF(10000, 3)
    v += 123
    v += 124
    assert v.size() == 2
    v -= 124
    v -= 123
    assert v.size() == 0
    try:
        v -= 123
    except Exception:
        pass
    assert v.size() == 0
예제 #9
0
def test_remove_list_syntax():
    v = VICBF(10000, 3)
    v += 123
    v += 124
    v -= 123
    assert 123 not in v
    assert 124 in v
예제 #10
0
def test_incorrect_constructor_hashfunctions():
    try:
        VICBF(1000, -1)
    except ValueError:
        assert True
        return
    assert False
예제 #11
0
def test_incorrect_constructor_slots():
    try:
        VICBF(-1, 3)
    except ValueError:
        assert True
        return
    assert False
예제 #12
0
def test_incorrect_constructor_vibase():
    try:
        VICBF(1000, 3, vibase=3)
    except ValueError:
        assert True
        return
    assert False
예제 #13
0
def test_insert_overflow():
    v = VICBF(10000, 3)
    for i in range(1000):
        v.insert(123)
    assert v.query(123)
    for i in range(1000):
        v.remove(123)
    # Even though it should now theoretically be removed, the implementation
    # should still return true because the values should have been fixed at
    # the maximum when the overflow occured
    assert v.query(123)
예제 #14
0
def test_len():
    v = VICBF(10000, 3)
    v += 123
    v += 124
    assert len(v) == 2
    v -= 124
    v -= 123
    assert len(v) == 0
    try:
        v -= 123
    except Exception:
        pass
    assert len(v) == 0
예제 #15
0
def test_deletion_regression():
    # This is a regression test for the deletion bug described in commit
    # 85bef853ee5927deffc13d16e9a79be8a9756d6c. Basically, a deletion could
    # leave the VICBF in an inconsistent state.
    # The values were specifically chosen to map to the same first slot, but
    # different second slots.
    v = VICBF(10000, 3)
    v += 106
    v += 771
    try:
        v -= 132
        assert False, "Illegal deletion allowed"
    except ValueError:
        pass
    v -= 106
    assert 771 in v
예제 #16
0
def test_fpr_helper():
    # Test the FPR calculator with a few known-good values, calculated with
    # WolframAlpha
    v = VICBF(10000, 3)
    fpr = v._calculate_FPR(10000, 1000, 3, 4)
    assert abs(fpr - 0.00066503041161) <= 0.00000000000001
    fpr = v._calculate_FPR(5000, 5000, 3, 4)
    assert abs(fpr - 0.51818886904) <= 0.00000000001
    fpr = v._calculate_FPR(5000, 5000, 3, 8)
    assert abs(fpr - 0.47966585318) <= 0.00000000001
    fpr = v._calculate_FPR(5000, 5000, 2, 4)
    assert abs(fpr - 0.38364688995) <= 0.00000000001
예제 #17
0
def test_query_multi_insert_remove():
    v = VICBF(10000, 3)
    v.insert(123)
    v.insert(123)
    v.remove(123)
    assert v.query(123)
예제 #18
0
def test_query_not_inserted():
    v = VICBF(10000, 3)
    v.insert(123)
    assert not v.query(4567)
예제 #19
0
def test_query_inserted():
    v = VICBF(10000, 3)
    v.insert(123)
    assert v.query(123)
예제 #20
0
def test_insert_list_syntax():
    v = VICBF(10000, 3)
    v += 123
    assert 123 in v
예제 #21
0
def test_many_inserts():
    v = VICBF(10000, 3)
    for i in range(1000):
        v.insert(i)
    assert not v.query(1001)
예제 #22
0
def test_query_list_syntax():
    v = VICBF(10000, 3)
    v.insert(123)
    assert 123 in v
    assert 124 not in v
예제 #23
0
def test_insert():
    v = VICBF(10000, 3)
    v.insert(123)
    assert True
예제 #24
0
def test_remove():
    v = VICBF(10000, 3)
    v.insert(123)
    v.remove(123)
    assert not v.query(123)
예제 #25
0
def test_current_fpr():
    v = VICBF(10000, 3)
    for i in range(1000):
        v += i
    assert abs(v.FPR() - 0.00066503041161) <= 0.00000000000001
예제 #26
0
def test_vicbf_independence():
    v1 = VICBF(10000, 3)
    v2 = VICBF(10000, 3)
    v1 += 123
    assert 123 not in v2