summaryrefslogtreecommitdiff
path: root/tests/test_data.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_data.py')
-rw-r--r--tests/test_data.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/test_data.py b/tests/test_data.py
index bc988bcb..5ac08bb6 100644
--- a/tests/test_data.py
+++ b/tests/test_data.py
@@ -6,6 +6,7 @@
import glob
import os
import os.path
+import random
import sqlite3
import threading
@@ -16,6 +17,7 @@ from coverage.data import add_data_to_hash, line_counts
from coverage.debug import DebugControlString
from coverage.files import PathAliases, canonical_filename
from coverage.misc import CoverageException
+from coverage.sqldata import nums_to_bitmap, bitmap_to_nums, merge_bitmaps
from tests.coveragetest import CoverageTest
@@ -805,3 +807,31 @@ class CoverageDataFilesTest(DataTestHelpers, CoverageTest):
# then this would try to use tables that no longer exist.
# "no such table: meta"
covdata2.add_lines(LINES_1)
+
+
+class BitmapOpTest(CoverageTest):
+ """Tests of the bitmap operations in sqldata.py."""
+
+ run_in_temp_dir = False
+
+ def numbers(self, r):
+ """Produce a list of numbers from a Random object."""
+ return list(set(r.randint(1, 1000) for _ in range(r.randint(100, 200))))
+
+ def test_conversion(self):
+ r = random.Random(1792)
+ for _ in range(10):
+ nums = self.numbers(r)
+ bitmap = nums_to_bitmap(nums)
+ self.assertEqual(sorted(bitmap_to_nums(bitmap)), sorted(nums))
+
+ def test_merging(self):
+ r = random.Random(314159)
+ for _ in range(10):
+ nums1 = self.numbers(r)
+ nums2 = self.numbers(r)
+ merged = bitmap_to_nums(merge_bitmaps(nums_to_bitmap(nums1), nums_to_bitmap(nums2)))
+ all_nums = set()
+ all_nums.update(nums1)
+ all_nums.update(nums2)
+ self.assertEqual(sorted(all_nums), sorted(merged))