Example #1
0
 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
Example #2
0
 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
Example #3
0
 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
Example #4
0
 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)
Example #5
0
	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)
Example #6
0
	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
Example #7
0
	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
Example #8
0
	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
Example #9
0
 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
Example #10
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
Example #11
0
	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
Example #12
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
Example #13
0
 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
Example #14
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()
Example #15
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()
Example #16
0
 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
Example #17
0
 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()
Example #18
0
 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))
Example #19
0
	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()
Example #20
0
	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
Example #21
0
 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
Example #22
0
	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
Example #23
0
	def test_inittrivial(self):
		data = list(range(5))
		ref = set(data)
		rb = RoaringBitmap(data)
		rb._checkconsistency()
		assert ref == rb
Example #24
0
 def test_initunsorted(self, single):
     for name, data in single:
         ref = set(data)
         rb = RoaringBitmap(data)
         rb._checkconsistency()
         assert ref == rb, name
Example #25
0
 def test_inittrivial(self):
     data = list(range(5))
     ref = set(data)
     rb = RoaringBitmap(data)
     rb._checkconsistency()
     assert ref == rb
Example #26
0
	def test_initunsorted(self, single):
		for name, data in single:
			ref = set(data)
			rb = RoaringBitmap(data)
			rb._checkconsistency()
			assert ref == rb, name