|
4 | 4 | from Orange.data import ContinuousVariable, DiscreteVariable, StringVariable, \ |
5 | 5 | TimeVariable |
6 | 6 | from Orange.data.io_util import guess_data_type |
| 7 | +from Orange.misc.collections import natural_sorted |
7 | 8 |
|
8 | 9 |
|
9 | 10 | class TestTableFilters(unittest.TestCase): |
10 | | - |
11 | 11 | def test_guess_data_type_continuous(self): |
12 | 12 | # should be ContinuousVariable |
13 | 13 | valuemap, values, coltype = guess_data_type(list(range(1, 100))) |
@@ -42,7 +42,7 @@ def test_guess_data_type_discrete(self): |
42 | 42 | in_values = list(map(lambda x: str(x) + "a", range(24))) + ["a"] * 76 |
43 | 43 | valuemap, values, coltype = guess_data_type(in_values) |
44 | 44 | self.assertEqual(DiscreteVariable, coltype) |
45 | | - self.assertEqual(sorted(set(in_values)), valuemap) |
| 45 | + self.assertEqual(natural_sorted(set(in_values)), valuemap) |
46 | 46 | np.testing.assert_array_equal(in_values, values) |
47 | 47 |
|
48 | 48 | def test_guess_data_type_string(self): |
@@ -93,3 +93,21 @@ def test_guess_data_type_time(self): |
93 | 93 | valuemap, _, coltype = guess_data_type(in_values) |
94 | 94 | self.assertEqual(TimeVariable, coltype) |
95 | 95 | self.assertIsNone(valuemap) |
| 96 | + |
| 97 | + def test_guess_data_type_values_order(self): |
| 98 | + """ |
| 99 | + Test if values are ordered naturally |
| 100 | + """ |
| 101 | + in_values = [ |
| 102 | + "something1", "something12", "something2", "something1", |
| 103 | + "something20", "something1", "something2", "something12", |
| 104 | + "something1", "something12" |
| 105 | + ] |
| 106 | + res = ["something1", "something2", "something12", "something20"] |
| 107 | + valuemap, _, coltype = guess_data_type(in_values) |
| 108 | + self.assertEqual(DiscreteVariable, coltype) |
| 109 | + self.assertListEqual(res, valuemap) |
| 110 | + |
| 111 | + |
| 112 | +if __name__ == "__main__": |
| 113 | + unittest.main() |
0 commit comments