|
13 | 13 | _normalize_metadata_field_name, |
14 | 14 | _parse_dict_from_json, |
15 | 15 | _reciprocal_rank_fusion, |
| 16 | + expand_page_range, |
16 | 17 | ) |
17 | 18 |
|
18 | 19 |
|
@@ -168,3 +169,29 @@ def test_parse_dict_from_json_missing_keys_raise_false(self, mock_logger): |
168 | 169 | assert "Missing expected keys in JSON: {missing_keys}" in args[0] |
169 | 170 | assert kwargs["missing_keys"] == ["key2"] |
170 | 171 | assert kwargs["keys"] == ["key1"] |
| 172 | + |
| 173 | + |
| 174 | +class TestExpandPageRange: |
| 175 | + def test_single_page_integers(self): |
| 176 | + assert expand_page_range([1, 3, 5]) == [1, 3, 5] |
| 177 | + |
| 178 | + def test_single_page_strings(self): |
| 179 | + assert expand_page_range(["1", "3", "5"]) == [1, 3, 5] |
| 180 | + |
| 181 | + def test_range_strings_expanded(self): |
| 182 | + assert expand_page_range(["1-3", "5", "8", "10-12"]) == [1, 2, 3, 5, 8, 10, 11, 12] |
| 183 | + |
| 184 | + def test_mixed_integers_and_range_strings(self): |
| 185 | + assert expand_page_range([1, "3-5", 7]) == [1, 3, 4, 5, 7] |
| 186 | + |
| 187 | + def test_empty_input_raises_value_error(self): |
| 188 | + with pytest.raises(ValueError, match="No valid page numbers"): |
| 189 | + expand_page_range([]) |
| 190 | + |
| 191 | + def test_invalid_string_raises_value_error(self): |
| 192 | + with pytest.raises(ValueError, match="Invalid page range"): |
| 193 | + expand_page_range(["abc"]) |
| 194 | + |
| 195 | + def test_malformed_range_with_multiple_hyphens_raises_value_error(self): |
| 196 | + with pytest.raises(ValueError, match="Invalid page range"): |
| 197 | + expand_page_range(["1-3", "5-10-15"]) |
0 commit comments