Exemplo n.º 1
0
def test_merge_empty():
    qd1 = QuantileDigest(3, 5)
    q1_counts = qd1.count()
    assert q1_counts == 0, "Incorrect number of elements"

    qd2 = QuantileDigest(3, 5)
    q2_counts = qd2.count()
    assert q2_counts == 0, "Incorrect number of elements"

    qd1.merge(qd2)

    assert len(qd1) == 0, "Invalid length"
    assert qd1.count() == 0, "Incorrect number of elements"
Exemplo n.º 2
0
def test_merge_unmergeable():
    qd1 = QuantileDigest(3, 5)
    qd2 = QuantileDigest(3, 2)

    with pytest.raises(ValueError) as excinfo:
        qd1.merge(qd2)
    assert str(excinfo.value) == 'Compression factors have to be equal'

    qd1 = QuantileDigest(3, 5)
    qd2 = QuantileDigest(4, 5)

    with pytest.raises(ValueError) as excinfo:
        qd1.merge(qd2)
    assert str(excinfo.value) == 'Ranges have to be equal'
Exemplo n.º 3
0
def test_merge():
    qd1 = QuantileDigest(3, 5)

    for i in range(8):
        qd1.add(0)
    for i in range(8):
        qd1.add(1)
    for i in range(4):
        qd1.add(2)
    for i in range(1):
        qd1.add(3)
    for i in range(5):
        qd1.add(4)
    for i in range(3):
        qd1.add(5)
    for i in range(5):
        qd1.add(6)
    for i in range(2):
        qd1.add(7)

    q1_counts = qd1.count()
    qd1.compress()

    qd2 = QuantileDigest(3, 5)

    for i in range(10):
        qd2.add(0)
    for i in range(12):
        qd2.add(1)
    for i in range(8):
        qd2.add(2)
    for i in range(20):
        qd2.add(3)

    q2_counts = qd2.count()
    qd2.compress()

    qd1.merge(qd2)
    assert qd1.count() == q1_counts + q2_counts, "Incorrect counts"
    assert len(qd1) == 6, "Incorrect length"