aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/test_data_helpers.py
blob: 1eec3cc3254f6ce3a2d55be69f6af99439e5a505 (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
"""
Test functions in gn3.data_helpers
"""

from unittest import TestCase

from gn3.data_helpers import partition_all

class TestDataHelpers(TestCase):
    """
    Test functions in gn3.data_helpers
    """

    def test_partition_all(self):
        """
        Test that `gn3.data_helpers.partition_all` partitions sequences as expected.

        Given:
            - `num`: The number of items per partition
            - `items`: A sequence of items
        When:
            - The arguments above are passed to the `gn3.data_helpers.partition_all`
        Then:
            - Return a new sequence with partitions, each of which has `num`
              items in the same order as those in `items`, save for the last
              partition which might have fewer items than `num`.
        """
        for count, items, expected in (
                (1, [0, 1, 2, 3], ((0,), (1,), (2,), (3,))),
                (3, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9),
                 ((0, 1, 2), (3, 4, 5), (6, 7, 8), (9, ))),
                (4, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                 ((0, 1, 2, 3), (4, 5, 6, 7), (8, 9))),
                (13, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                 ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9), ))):
            with self.subTest(n=count, items=items):
                self.assertEqual(partition_all(count, items), expected)