|
| 1 | +import pytest |
| 2 | + |
| 3 | +from leetcode_py import ListNode |
| 4 | +from leetcode_py.test_utils import logged_test |
| 5 | + |
| 6 | +from .solution import Solution |
| 7 | + |
| 8 | + |
| 9 | +class TestMergeKSortedLists: |
| 10 | + def setup_method(self): |
| 11 | + self.solution = Solution() |
| 12 | + |
| 13 | + @pytest.mark.parametrize( |
| 14 | + "lists_data, expected_data", |
| 15 | + [ |
| 16 | + ([[1, 4, 5], [1, 3, 4], [2, 6]], [1, 1, 2, 3, 4, 4, 5, 6]), |
| 17 | + ([], []), |
| 18 | + ([[]], []), |
| 19 | + ([[1]], [1]), |
| 20 | + ([[1, 2], [3, 4]], [1, 2, 3, 4]), |
| 21 | + ([[5], [1, 3], [2, 4, 6]], [1, 2, 3, 4, 5, 6]), |
| 22 | + ([[-1, 0, 1], [-2, 2]], [-2, -1, 0, 1, 2]), |
| 23 | + ([[1, 1, 1], [2, 2, 2]], [1, 1, 1, 2, 2, 2]), |
| 24 | + ([[]], []), |
| 25 | + ([[], [1], []], [1]), |
| 26 | + ([[0]], [0]), |
| 27 | + ([[-10, -5, -1], [-8, -3], [-7, -2, 0]], [-10, -8, -7, -5, -3, -2, -1, 0]), |
| 28 | + ([[1, 2, 3, 4, 5]], [1, 2, 3, 4, 5]), |
| 29 | + ([[10], [9], [8], [7]], [7, 8, 9, 10]), |
| 30 | + ([[1, 100], [2, 99], [3, 98]], [1, 2, 3, 98, 99, 100]), |
| 31 | + ([[], [], []], []), |
| 32 | + ([[0, 0, 0], [0, 0]], [0, 0, 0, 0, 0]), |
| 33 | + ([[1, 3, 5, 7], [2, 4, 6, 8]], [1, 2, 3, 4, 5, 6, 7, 8]), |
| 34 | + ( |
| 35 | + [[100, 200, 300], [50, 150, 250], [75, 125, 175]], |
| 36 | + [50, 75, 100, 125, 150, 175, 200, 250, 300], |
| 37 | + ), |
| 38 | + ], |
| 39 | + ) |
| 40 | + @logged_test |
| 41 | + def test_merge_k_lists(self, lists_data: list[list[int]], expected_data: list[int]): |
| 42 | + lists = [ListNode.from_list(lst) for lst in lists_data] |
| 43 | + result = self.solution.merge_k_lists(lists) |
| 44 | + expected = ListNode.from_list(expected_data) |
| 45 | + assert result == expected |
0 commit comments