|
7 | 7 | import pandas._testing as tm
|
8 | 8 |
|
9 | 9 |
|
| 10 | +@pytest.fixture |
| 11 | +def sort_kind(): |
| 12 | + return ["quicksort", "mergesort", "heapsort", "stable"] |
| 13 | + |
| 14 | + |
10 | 15 | class TestSeriesSortIndex:
|
11 | 16 | def test_sort_index_name(self, datetime_series):
|
12 | 17 | result = datetime_series.sort_index(ascending=False)
|
@@ -104,18 +109,13 @@ def test_sort_index_multiindex(self, level):
|
104 | 109 | res = s.sort_index(level=level, sort_remaining=False)
|
105 | 110 | tm.assert_series_equal(s, res)
|
106 | 111 |
|
107 |
| - def test_sort_index_kind(self): |
| 112 | + @pytest.mark.parametrize("kind", sort_kind) |
| 113 | + def test_sort_index_kind(self, kind): |
108 | 114 | # GH#14444 & GH#13589: Add support for sort algo choosing
|
109 | 115 | series = Series(index=[3, 2, 1, 4, 3], dtype=object)
|
110 | 116 | expected_series = Series(index=[1, 2, 3, 3, 4], dtype=object)
|
111 | 117 |
|
112 |
| - index_sorted_series = series.sort_index(kind="mergesort") |
113 |
| - tm.assert_series_equal(expected_series, index_sorted_series) |
114 |
| - |
115 |
| - index_sorted_series = series.sort_index(kind="quicksort") |
116 |
| - tm.assert_series_equal(expected_series, index_sorted_series) |
117 |
| - |
118 |
| - index_sorted_series = series.sort_index(kind="heapsort") |
| 118 | + index_sorted_series = series.sort_index(kind=kind) |
119 | 119 | tm.assert_series_equal(expected_series, index_sorted_series)
|
120 | 120 |
|
121 | 121 | def test_sort_index_na_position(self):
|
@@ -251,32 +251,22 @@ def test_sort_index_key_int(self):
|
251 | 251 | result = series.sort_index(key=lambda x: 2 * x)
|
252 | 252 | tm.assert_series_equal(result, series)
|
253 | 253 |
|
254 |
| - def test_sort_index_kind_key(self, sort_by_key): |
| 254 | + @pytest.mark.parametrize("kind", sort_kind) |
| 255 | + def test_sort_index_kind_key(self, kind, sort_by_key): |
255 | 256 | # GH #14444 & #13589: Add support for sort algo choosing
|
256 | 257 | series = Series(index=[3, 2, 1, 4, 3], dtype=object)
|
257 | 258 | expected_series = Series(index=[1, 2, 3, 3, 4], dtype=object)
|
258 | 259 |
|
259 |
| - index_sorted_series = series.sort_index(kind="mergesort", key=sort_by_key) |
260 |
| - tm.assert_series_equal(expected_series, index_sorted_series) |
261 |
| - |
262 |
| - index_sorted_series = series.sort_index(kind="quicksort", key=sort_by_key) |
263 |
| - tm.assert_series_equal(expected_series, index_sorted_series) |
264 |
| - |
265 |
| - index_sorted_series = series.sort_index(kind="heapsort", key=sort_by_key) |
| 260 | + index_sorted_series = series.sort_index(kind=kind, key=sort_by_key) |
266 | 261 | tm.assert_series_equal(expected_series, index_sorted_series)
|
267 | 262 |
|
268 |
| - def test_sort_index_kind_neg_key(self): |
| 263 | + @pytest.mark.parametrize("kind", sort_kind) |
| 264 | + def test_sort_index_kind_neg_key(self, kind): |
269 | 265 | # GH #14444 & #13589: Add support for sort algo choosing
|
270 | 266 | series = Series(index=[3, 2, 1, 4, 3], dtype=object)
|
271 | 267 | expected_series = Series(index=[4, 3, 3, 2, 1], dtype=object)
|
272 | 268 |
|
273 |
| - index_sorted_series = series.sort_index(kind="mergesort", key=lambda x: -x) |
274 |
| - tm.assert_series_equal(expected_series, index_sorted_series) |
275 |
| - |
276 |
| - index_sorted_series = series.sort_index(kind="quicksort", key=lambda x: -x) |
277 |
| - tm.assert_series_equal(expected_series, index_sorted_series) |
278 |
| - |
279 |
| - index_sorted_series = series.sort_index(kind="heapsort", key=lambda x: -x) |
| 269 | + index_sorted_series = series.sort_index(kind=kind, key=lambda x: -x) |
280 | 270 | tm.assert_series_equal(expected_series, index_sorted_series)
|
281 | 271 |
|
282 | 272 | def test_sort_index_na_position_key(self, sort_by_key):
|
|
0 commit comments