Example #1
0
def test_many_ranges(data):
    # number of version ranges to use
    n_ranges = data.draw(integers(min_value=0, max_value=N + 1))
    rng_tuples = [data.draw(range_tuples()) for _ in range(n_ranges)]
    ranges = [range_tuple_to_str(rng) for rng in rng_tuples]
    note(ranges)
    result = filter_versions(VERSIONS, ranges)
    for rng in rng_tuples:
        _check(result, *rng)
def test_two_2_param_ranges(left1, v11, v12, right1, left2, v21, v22, right2):
    assume(v11 < v12)
    assume(v21 < v22)

    ranges = [f'{left1}{v11},{v12}{right1}', f'{left2}{v21},{v22}{right2}']
    note(ranges)
    result = api.filter_versions(VERSIONS, ranges)
    _check(result, left1, v11, v12, right1)
    _check(result, left2, v21, v22, right2)
def test_maximum_filtered_version(data):
    n_ranges = data.draw(integers(min_value=0, max_value=N + 1))
    rng_tuples = [data.draw(range_tuples()) for _ in range(n_ranges)]
    ranges = [range_tuple_to_str(rng) for rng in rng_tuples]
    note(ranges)
    result = api.maximum_filtered_version(asc_versions=VERSIONS, ranges=ranges)

    filtered_versions = api.filter_versions(asc_versions=VERSIONS,
                                            ranges=ranges)
    if result is None:
        assert not filtered_versions
    else:
        assert result == filtered_versions[-1]
def test_next_filtered_version(data, current_version):
    n_ranges = data.draw(integers(min_value=0, max_value=N + 1))
    rng_tuples = [data.draw(range_tuples()) for _ in range(n_ranges)]
    ranges = [range_tuple_to_str(rng) for rng in rng_tuples]
    note(ranges)
    result = api.next_filtered_version(current_version=str(current_version),
                                       asc_versions=VERSIONS,
                                       ranges=ranges)
    if result is None:
        filtered_versions = api.filter_versions(asc_versions=VERSIONS,
                                                ranges=ranges)
        no_versions = filtered_versions == []
        # -1 is smaller than any version in VERSIONS, this is just for the code
        # not to explode in case no filtered versions were returned. In that
        # case, the `current_version_greater_than_filtered` case is irrelevant.
        max_version = filtered_versions[-1] if filtered_versions else -1
        version_too_big = int(max_version) < current_version
        assert no_versions or version_too_big
    else:
        assert int(result) >= int(current_version)
Example #5
0
def test_unbound_lower_version(left, v, right):
    ranges = [f'{left},{v}{right}']
    note(ranges)
    result = filter_versions(VERSIONS, ranges)
    _check(result, left=left, v2=v, right=right)
Example #6
0
def test_single_version_range(v):
    ranges = [f'[{v}]']
    note(ranges)
    result = filter_versions(VERSIONS, ranges)
    assert str(v) not in result
Example #7
0
def test_2_param_range(left, v1, v2, right):
    assume(v1 < v2)
    ranges = [f'{left}{v1},{v2}{right}']
    note(ranges)
    result = filter_versions(VERSIONS, ranges)
    _check(result, left, v1, v2, right)
def test_unbound_upper_version(left, v, right):
    ranges = [f'{left}{v},{right}']
    note(ranges)
    result = api.filter_versions(VERSIONS, ranges)
    _check(result, left=left, v1=v, right=right)