def test_builder_insert_intervals_equivalent_to_successive_union(intervals): builder = IntSet.Builder() equiv = IntSet.empty() for ij in intervals: equiv |= IntSet.interval(*ij) builder.insert_interval(*ij) assert builder.build() == equiv
def test_is_equal_to_random_insertion(imp, rnd): items = list(imp) rnd.shuffle(items) equiv = IntSet.empty() for i in items: equiv = equiv.insert(i) assert imp == equiv
def test_default_intset_is_empty(): assert IntSet() == IntSet.empty()
def test_interval_ending_at_zero_is_zero(): assert IntSet.interval(0, 0) == IntSet.empty()
def test_is_equal_to_reverse_insertion(imp): equiv = IntSet.empty() for i in reversed(list(imp)): equiv = equiv.insert(i) assert imp == equiv
def test_is_equal_to_sequential_insertion(imp): equiv = IntSet.empty() for i in imp: equiv = equiv.insert(i) assert imp == equiv
SMALL = 100 short_intervals = st.builds( lambda start, length: assume( start + length <= 2 ** 64) and (start, start + length), integers_in_range, st.integers(0, SMALL)) interval_list = st.lists(intervals, average_size=10) IntSets = st.builds( IntSet.from_intervals, interval_list) | integers_in_range.map( IntSet.single) | intervals.map(lambda x: IntSet.interval(*x)) @example(IntSet.empty()) @example(IntSet.single(1)) @example(IntSet([1, 2, 3, 6])) @given(IntSets) def test_pickling_works_correctly(x): assert pickle.loads(pickle.dumps(x)) == x @example(IntSet.interval(0, 10)) @example(IntSet([(0, 10), (15, 20)])) @given(IntSets) def test_copies_as_self(x): assert copy(x) is x assert deepcopy(x) is x
def result(): d = IntSet.empty() for v in dataset: d = d.insert(v) return d
def __init__(self): self.builder = IntSet.Builder() self.equivalent = IntSet.empty()