summaryrefslogtreecommitdiff
path: root/tests/test_numbits.py
blob: b54f65dfb9fdf801ccf6132fee745922a74bc8ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt

"""Tests for coverage.numbits"""

import random

from coverage.numbits import nums_to_numbits, numbits_to_nums, merge_numbits

from tests.coveragetest import CoverageTest

class NumbitsOpTest(CoverageTest):
    """Tests of the numbits operations in numbits.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)
            numbits = nums_to_numbits(nums)
            self.assertEqual(sorted(numbits_to_nums(numbits)), sorted(nums))

    def test_merging(self):
        r = random.Random(314159)
        for _ in range(10):
            nums1 = self.numbers(r)
            nums2 = self.numbers(r)
            merged = numbits_to_nums(merge_numbits(nums_to_numbits(nums1), nums_to_numbits(nums2)))
            all_nums = set()
            all_nums.update(nums1)
            all_nums.update(nums2)
            self.assertEqual(sorted(all_nums), sorted(merged))