Ejemplo n.º 1
0
 def test_merging(self):
     a = sparsebitfield.SparseBitfield()
     b = sparsebitfield.SparseBitfield()
     a.add(0)
     b.add(0)
     a.update(b)
     self.assertEqual(list(a), [0])
     a.add(1000)
     b.add(1000000)
     b.update(a)
     self.assertEqual(list(b), [0, 1000, 1000000])
Ejemplo n.º 2
0
    def test_multi_page(self):

        def nums(*numbers):
            return list([page_numbers[n] for n in numbers])

        page_max = sparsebitfield.get_all_sizes()["PAGE_MAX"]
        page_numbers = [5 + (page_max * i) for i in range(10)]
        a = sparsebitfield.SparseBitfield(nums(0, 2))
        b = sparsebitfield.SparseBitfield(nums(1, 3))
        self._test_methods(a, b)
        self._test_methods(b, a)
Ejemplo n.º 3
0
    def test_creating_large_field(self):
        # This is a strange test, the idea is to create a large set, then do something with it
        # provided the test completes in a 'reasonable' timescale, then it should be fine
        one_million = 1000000
        size = one_million * 1000

        field1 = sparsebitfield.SparseBitfield([[0, size]])
        field2 = sparsebitfield.SparseBitfield([[size, size * 2]])
        self.assertEqual(len(field1), size)
        self.assertEqual(len(field2), size)
        self.assertEqual(len(field1 | field2), size * 2)
Ejemplo n.º 4
0
 def test_add_remove(self):
     b = sparsebitfield.SparseBitfield()
     self.assertEqual(list(b), [])
     for i in range(0, 1000000, 881):
         b.add(i)
         self.assertEqual(list(b), [i])
         b.remove(i)
Ejemplo n.º 5
0
 def test_large_numbers(self):
     size = 78
     field1 = sparsebitfield.SparseBitfield()
     field2 = sparsebitfield.SparseBitfield()
     for p in range(1, size + 1):
         field1.add(2**p)
         self.assertIn(2**p, field1)
         field2.add(2**p - 1)
         self.assertIn(2**p - 1, field2)
     self.assertEqual(len(field1), size)
     self.assertEqual(len(field2), size)
     self.assertEqual(len(field1 | field2), size * 2)
     field1 = sparsebitfield.SparseBitfield([[2**70, 2**70 + 3000000]])
     for num in range(2**70, 2**70 + 3000000):
         self.assertIn(num, field1)
     self.assertEqual(len(field1), 3000000)
Ejemplo n.º 6
0
 def test_membership(self):
     b = sparsebitfield.SparseBitfield()
     b.add(0)
     b.add(1)
     b.add(2)
     self.assertTrue(1 in b)
     self.assertFalse(3 in b)
     self.assertEqual(list(b), [0, 1, 2])
Ejemplo n.º 7
0
 def test_count(self):
     b = sparsebitfield.SparseBitfield()
     self.assertEqual(b.count, 0)
     b.add(0)
     self.assertEqual(b.count, 1)
     b.add(10000)
     self.assertEqual(b.count, 2)
     self.assertEqual(len(b), 2)
Ejemplo n.º 8
0
 def test_clone(self):
     a = sparsebitfield.SparseBitfield()
     a.add(1)
     a.add(10)
     a.add(5000000)
     b = a.clone()
     self.assertEqual(a, b)
     b.add(45)
     self.assertNotEqual(a, b)
Ejemplo n.º 9
0
 def test_repr_eval(self):
     b = sparsebitfield.SparseBitfield()
     b.add(100)
     c = eval(repr(b))
     self.assertEqual(b, c)
     for i in range(0, 1000, 13):
         b.add(i)
     c = eval(repr(b))
     self.assertEqual(b, c)
Ejemplo n.º 10
0
 def test_mutating_while_iterating(self):
     b = sparsebitfield.SparseBitfield([[0, 1000]])
     count = len(b)
     for num in b:
         self.assertIn(num, b)
         b.remove(num)
         count -= 1
         self.assertEqual(len(b), count)
         self.assertNotIn(num, b)
     self.assertEqual(count, 0)
Ejemplo n.º 11
0
 def test_in(self):
     a = sparsebitfield.SparseBitfield()
     for i in range(0, 100, 13):
         a.add(i)
     self.assertIn(13, a)
     self.assertIn(0, a)
     self.assertIn(26, a)
     self.assertNotIn(27, a)
     self.assertIn(39, a)
     self.assertNotIn(1000000, a)
     a.add(1000000)
     self.assertIn(1000000, a)
Ejemplo n.º 12
0
 def test_empty_full(self):
     page_max = sparsebitfield.get_all_sizes()["PAGE_MAX"]
     a = sparsebitfield.SparseBitfield([[0, page_max]])
     b = sparsebitfield.SparseBitfield()
     self._test_methods(a, b)
     self._test_methods(b, a)
Ejemplo n.º 13
0
 def test_simple(self):
     self._test_methods(sparsebitfield.SparseBitfield([1, 2, 3]), sparsebitfield.SparseBitfield([1, 2, 3]))
     self._test_methods(sparsebitfield.SparseBitfield([1, 2, 3]), sparsebitfield.SparseBitfield([1, 2]))
     self._test_methods(sparsebitfield.SparseBitfield([1, 2, 3]), sparsebitfield.SparseBitfield([3, 4, 5]))
     self._test_methods(sparsebitfield.SparseBitfield([1]), sparsebitfield.SparseBitfield([1, 3, 4, 5]))
Ejemplo n.º 14
0
 def test_empty(self):
     self._test_methods(sparsebitfield.SparseBitfield(), sparsebitfield.SparseBitfield())
Ejemplo n.º 15
0
 def test_init_with_large_ranges(self):
     a = sparsebitfield.SparseBitfield(((0, 20000), (30000, 100000)))
     self.assertEqual(len(a), 90000)
     self.assertEqual(max(a), 99999)
     self.assertEqual(min(a), 0)
Ejemplo n.º 16
0
 def test_init_with_small_ranges(self):
     a = sparsebitfield.SparseBitfield((
         (0, 1),
         (3, 10),
     ),)
     self.assertSequenceEqual(list(a), [0, 3, 4, 5, 6, 7, 8, 9])