def test_pickle(self, single): for name, data in single: rb = RoaringBitmap(data) rb_pickled = pickle.dumps(rb, protocol=-1) rb_unpickled = pickle.loads(rb_pickled) rb._checkconsistency() assert rb_unpickled == rb, name
def test_aggregateand(self, multi): ref = set(multi[0]) ref.intersection_update(*[set(a) for a in multi[1:]]) rb = RoaringBitmap(multi[0]) rb.intersection_update(*[RoaringBitmap(a) for a in multi[1:]]) rb._checkconsistency() assert rb == ref, name
def test_aggregateor(self, multi): ref = set(multi[0]) ref.update(*[set(a) for a in multi[1:]]) rb = RoaringBitmap(multi[0]) rb.update(*[RoaringBitmap(a) for a in multi[1:]]) rb._checkconsistency() assert rb == ref
def test_initrange(self): # creates a positive, dense, and inverted block, respectively for n in [400, 6000, 61241]: ref = set(range(23, n)) rb = RoaringBitmap(range(23, n)) rb._checkconsistency() assert ref == rb, ('range(23, %d)' % n)
def test_initrange(self): # creates a positive, dense, and inverted block, respectively for n in [400, 6000, 61241]: ref = set(range(23, n)) rb = RoaringBitmap(range(23, n)) rb._checkconsistency() assert ref == rb, ('range(23, %d)' % n)
def test_aggregateor(self, multi): ref = set(multi[0]) ref.update(*[set(a) for a in multi[1:]]) rb = RoaringBitmap(multi[0]) rb.update(*[RoaringBitmap(a) for a in multi[1:]]) rb._checkconsistency() assert rb == ref, name
def test_pickle(self, single): for name, data in single: rb = RoaringBitmap(data) rb_pickled = pickle.dumps(rb, protocol=-1) rb_unpickled = pickle.loads(rb_pickled) rb._checkconsistency() assert rb_unpickled == rb, name
def test_ior(self, pair): for name, data1, data2 in pair: ref, ref2 = set(data1), set(data2) rb, rb2 = RoaringBitmap(data1), RoaringBitmap(data2) ref |= ref2 rb |= rb2 rb._checkconsistency() assert rb == ref, name
def test_ior(self, pair): for name, data1, data2 in pair: ref, ref2 = set(data1), set(data2) rb, rb2 = RoaringBitmap(data1), RoaringBitmap(data2) ref |= ref2 rb |= rb2 rb._checkconsistency() assert rb == ref, name
def test_ixor(self, pair): for name, data1, data2 in pair: ref, ref2 = set(data1), set(data2) rb, rb2 = RoaringBitmap(data1), RoaringBitmap(data2) ref ^= ref2 rb ^= rb2 rb._checkconsistency() assert len(ref) == len(rb), name assert ref == rb, name
def test_pop(self): rb = RoaringBitmap([60748, 28806, 54664, 28597, 58922, 75684, 56364, 67421, 52608, 55686, 10427, 48506, 64363, 14506, 73077, 59035, 70246, 19875, 73145, 40225, 58664, 6597, 65554, 73102, 26636, 74227, 59566, 19023]) while rb: rb.pop() rb._checkconsistency() assert len(rb) == 0
def test_ixor(self, pair): for name, data1, data2 in pair: ref, ref2 = set(data1), set(data2) rb, rb2 = RoaringBitmap(data1), RoaringBitmap(data2) ref ^= ref2 rb ^= rb2 rb._checkconsistency() assert len(ref) == len(rb), name assert ref == rb, name
def test_pop(self): rb = RoaringBitmap([ 60748, 28806, 54664, 28597, 58922, 75684, 56364, 67421, 52608, 55686, 10427, 48506, 64363, 14506, 73077, 59035, 70246, 19875, 73145, 40225, 58664, 6597, 65554, 73102, 26636, 74227, 59566, 19023 ]) while rb: rb.pop() rb._checkconsistency() assert len(rb) == 0
def test_contains(self, single): for name, data in single: ref = set(data) rb = RoaringBitmap(data) for a in data: assert a in ref, name assert a in rb, name for a in set(range(20000)) - set(data): assert a not in ref, name assert a not in rb, name rb._checkconsistency()
def test_contains(self, single): for name, data in single: ref = set(data) rb = RoaringBitmap(data) for a in data: assert a in ref, name assert a in rb, name for a in set(range(20000)) - set(data): assert a not in ref, name assert a not in rb, name rb._checkconsistency()
def test_discard(self, single): for name, data in single: ref = set() rb = RoaringBitmap() for n in sorted(data): ref.add(n) rb.add(n) for n in sorted(data): ref.discard(n) rb.discard(n) rb._checkconsistency() assert len(ref) == 0, name assert len(rb) == 0, name assert rb == ref, name
def test_add(self, single): for name, data in single: ref = set() rb = RoaringBitmap() for n in sorted(data): ref.add(n) rb.add(n) assert rb == ref, name with pytest.raises(OverflowError): rb.add(-1) rb.add(1 << 32) rb.add(0) rb.add((1 << 32) - 1) rb._checkconsistency()
def test_initrangestep(self): # creates a positive, dense, and inverted block, respectively for n in [400, 6000, 61241]: for step in (2, 7, 113): ref = set(range(23, n * step, step)) rb = RoaringBitmap(range(23, n * step, step)) rb._checkconsistency() assert ref == rb, ('range(23, %d, %d)' % (n, step)) n = 100 * (1 << 16) step = (1 << 16) + 7 ref = set(range(23, n, step)) rb = RoaringBitmap(range(23, n, step)) rb._checkconsistency() assert ref == rb, ('range(23, %d, %d)' % (n, step))
def test_add(self, single): for name, data in single: ref = set() rb = RoaringBitmap() for n in sorted(data): ref.add(n) rb.add(n) assert rb == ref, name with pytest.raises(OverflowError): rb.add(-1) rb.add(1 << 32) rb.add(0) rb.add((1 << 32) - 1) rb._checkconsistency()
def test_discard(self, single): for name, data in single: ref = set() rb = RoaringBitmap() for n in sorted(data): ref.add(n) rb.add(n) for n in sorted(data): ref.discard(n) rb.discard(n) rb._checkconsistency() assert len(ref) == 0, name assert len(rb) == 0, name assert rb == ref, name
def test_inititerator(self, single): for name, data in single: ref = set(a for a in data) rb = RoaringBitmap(a for a in data) rb._checkconsistency() assert ref == rb, name
def test_inititerator(self, single): for name, data in single: ref = set(a for a in data) rb = RoaringBitmap(a for a in data) rb._checkconsistency() assert ref == rb, name
def test_inittrivial(self): data = list(range(5)) ref = set(data) rb = RoaringBitmap(data) rb._checkconsistency() assert ref == rb
def test_initunsorted(self, single): for name, data in single: ref = set(data) rb = RoaringBitmap(data) rb._checkconsistency() assert ref == rb, name
def test_inittrivial(self): data = list(range(5)) ref = set(data) rb = RoaringBitmap(data) rb._checkconsistency() assert ref == rb
def test_initunsorted(self, single): for name, data in single: ref = set(data) rb = RoaringBitmap(data) rb._checkconsistency() assert ref == rb, name