|
2 | 2 |
|
3 | 3 | import numpy as np |
4 | 4 | import pytest |
5 | | -import warnings |
6 | 5 |
|
7 | 6 | from numpy.random import RandomState |
8 | 7 | from numpy import nan |
@@ -60,93 +59,6 @@ def test_strings(self): |
60 | 59 | tm.assert_series_equal(result, expected) |
61 | 60 |
|
62 | 61 |
|
63 | | -class TestSafeSort(object): |
64 | | - |
65 | | - def test_basic_sort(self): |
66 | | - values = [3, 1, 2, 0, 4] |
67 | | - result = algos.safe_sort(values) |
68 | | - expected = np.array([0, 1, 2, 3, 4]) |
69 | | - tm.assert_numpy_array_equal(result, expected) |
70 | | - |
71 | | - values = list("baaacb") |
72 | | - result = algos.safe_sort(values) |
73 | | - expected = np.array(list("aaabbc")) |
74 | | - tm.assert_numpy_array_equal(result, expected) |
75 | | - |
76 | | - values = [] |
77 | | - result = algos.safe_sort(values) |
78 | | - expected = np.array([]) |
79 | | - tm.assert_numpy_array_equal(result, expected) |
80 | | - |
81 | | - def test_labels(self): |
82 | | - values = [3, 1, 2, 0, 4] |
83 | | - expected = np.array([0, 1, 2, 3, 4]) |
84 | | - |
85 | | - labels = [0, 1, 1, 2, 3, 0, -1, 4] |
86 | | - result, result_labels = algos.safe_sort(values, labels) |
87 | | - expected_labels = np.array([3, 1, 1, 2, 0, 3, -1, 4], dtype=np.intp) |
88 | | - tm.assert_numpy_array_equal(result, expected) |
89 | | - tm.assert_numpy_array_equal(result_labels, expected_labels) |
90 | | - |
91 | | - # na_sentinel |
92 | | - labels = [0, 1, 1, 2, 3, 0, 99, 4] |
93 | | - result, result_labels = algos.safe_sort(values, labels, |
94 | | - na_sentinel=99) |
95 | | - expected_labels = np.array([3, 1, 1, 2, 0, 3, 99, 4], dtype=np.intp) |
96 | | - tm.assert_numpy_array_equal(result, expected) |
97 | | - tm.assert_numpy_array_equal(result_labels, expected_labels) |
98 | | - |
99 | | - # out of bound indices |
100 | | - labels = [0, 101, 102, 2, 3, 0, 99, 4] |
101 | | - result, result_labels = algos.safe_sort(values, labels) |
102 | | - expected_labels = np.array([3, -1, -1, 2, 0, 3, -1, 4], dtype=np.intp) |
103 | | - tm.assert_numpy_array_equal(result, expected) |
104 | | - tm.assert_numpy_array_equal(result_labels, expected_labels) |
105 | | - |
106 | | - labels = [] |
107 | | - result, result_labels = algos.safe_sort(values, labels) |
108 | | - expected_labels = np.array([], dtype=np.intp) |
109 | | - tm.assert_numpy_array_equal(result, expected) |
110 | | - tm.assert_numpy_array_equal(result_labels, expected_labels) |
111 | | - |
112 | | - def test_mixed_integer(self): |
113 | | - values = np.array(['b', 1, 0, 'a', 0, 'b'], dtype=object) |
114 | | - result = algos.safe_sort(values) |
115 | | - expected = np.array([0, 0, 1, 'a', 'b', 'b'], dtype=object) |
116 | | - tm.assert_numpy_array_equal(result, expected) |
117 | | - |
118 | | - values = np.array(['b', 1, 0, 'a'], dtype=object) |
119 | | - labels = [0, 1, 2, 3, 0, -1, 1] |
120 | | - result, result_labels = algos.safe_sort(values, labels) |
121 | | - expected = np.array([0, 1, 'a', 'b'], dtype=object) |
122 | | - expected_labels = np.array([3, 1, 0, 2, 3, -1, 1], dtype=np.intp) |
123 | | - tm.assert_numpy_array_equal(result, expected) |
124 | | - tm.assert_numpy_array_equal(result_labels, expected_labels) |
125 | | - |
126 | | - def test_unsortable(self): |
127 | | - # GH 13714 |
128 | | - arr = np.array([1, 2, datetime.now(), 0, 3], dtype=object) |
129 | | - if compat.PY2 and not pd._np_version_under1p10: |
130 | | - # RuntimeWarning: tp_compare didn't return -1 or -2 for exception |
131 | | - with warnings.catch_warnings(): |
132 | | - pytest.raises(TypeError, algos.safe_sort, arr) |
133 | | - else: |
134 | | - pytest.raises(TypeError, algos.safe_sort, arr) |
135 | | - |
136 | | - def test_exceptions(self): |
137 | | - with tm.assert_raises_regex(TypeError, |
138 | | - "Only list-like objects are allowed"): |
139 | | - algos.safe_sort(values=1) |
140 | | - |
141 | | - with tm.assert_raises_regex(TypeError, |
142 | | - "Only list-like objects or None"): |
143 | | - algos.safe_sort(values=[0, 1, 2], labels=1) |
144 | | - |
145 | | - with tm.assert_raises_regex(ValueError, |
146 | | - "values should be unique"): |
147 | | - algos.safe_sort(values=[0, 1, 2, 1], labels=[0, 1]) |
148 | | - |
149 | | - |
150 | 62 | class TestFactorize(object): |
151 | 63 |
|
152 | 64 | def test_basic(self): |
|
0 commit comments