Skip to content

Commit 0c32650

Browse files
committed
more tests
1 parent 8840eae commit 0c32650

File tree

1 file changed

+42
-23
lines changed

1 file changed

+42
-23
lines changed

Lib/test/test_sort.py

Lines changed: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,6 @@ def test_exclusivity_with_key(self):
414414
[].sort(key=1, keylist=1)
415415

416416
def test_argtype(self):
417-
msg = 'Only one of key and keylist can be provided.'
418417
for arg in [1, (), iter(())]:
419418
msg = f"'{type(arg).__name__}' object is not a list"
420419
with self.assertRaisesRegex(TypeError, msg):
@@ -426,31 +425,51 @@ def test_unequal_sizes(self):
426425
with self.assertRaisesRegex(ValueError, msg):
427426
[1, 2, 3].sort(keylist=arg)
428427

429-
def test_keylist_vs_key(self):
430-
data = list(range(10))
431-
# NOTE: BORLAND32
432-
keyfunc = lambda x: ((22695477 * x + 1) % 2**32) % 10
433-
keylist = list(map(keyfunc, data))
434-
res_keyfunc = sorted(data, key=keyfunc)
435-
res_keylist = sorted(data, keylist=keylist)
436-
self.assertEqual(res_keyfunc, res_keylist)
428+
def test_empty(self):
429+
data = []
430+
keylist = []
431+
data.sort(keylist=keylist)
432+
self.assertEqual(data, [])
433+
self.assertEqual(keylist, [])
437434

438-
def test_mutability_plus(self):
439-
for size in [10, 100, 1000]:
440-
data = list(range(size))
441-
# NOTE: BORLAND32
442-
keyfunc = lambda x: ((22695477 * x + 1) % 2**32) % size
435+
def test_keylist_vs_key(self):
436+
for reverse in [False, True]:
437+
data = list(range(10))
438+
# NOTE: BORLAND32-RNG-LIKE
439+
keyfunc = lambda x: ((22695477 * x + 1) % 2**32) % 10
443440
keylist = list(map(keyfunc, data))
444-
orig_keylist = list(keylist)
445-
446-
expected_keylist = sorted(keylist)
447-
result = sorted(data, keylist=keylist)
448-
self.assertEqual(keylist, expected_keylist)
441+
res_keyfunc = sorted(data, key=keyfunc, reverse=reverse)
442+
res_keylist = sorted(data, keylist=keylist, reverse=reverse)
443+
self.assertEqual(res_keyfunc, res_keylist)
449444

450-
# And for completeness check the result
451-
idxs = sorted(range(len(keylist)), key=orig_keylist.__getitem__)
452-
expected_result = [data[i] for i in idxs]
453-
self.assertEqual(result, expected_result)
445+
def test_mutability_plus(self):
446+
for reverse in [False, True]:
447+
for size in [10, 100, 1000]:
448+
data = list(range(size))
449+
# NOTE: BORLAND32-RNG-LIKE
450+
keyfunc = lambda x: ((22695477 * x + 1) % 2**32) % size
451+
keylist = list(map(keyfunc, data))
452+
orig_keylist = list(keylist)
453+
454+
expected_keylist = sorted(keylist, reverse=reverse)
455+
result = sorted(data, keylist=keylist, reverse=reverse)
456+
self.assertEqual(keylist, expected_keylist)
457+
458+
# And for completeness check the result
459+
rge = range(len(keylist))
460+
idxs = sorted(rge, key=orig_keylist.__getitem__, reverse=reverse)
461+
expected_result = [data[i] for i in idxs]
462+
self.assertEqual(result, expected_result)
463+
464+
def test_mid_failure(self):
465+
values = list(range(5))
466+
keylist = [2, 1, 3, 0, None]
467+
with self.assertRaises(TypeError):
468+
values.sort(keylist=keylist)
469+
470+
expected_values = sorted(range(4), keylist=[2, 1, 3, 0])
471+
self.assertEqual(values, expected_values + [4])
472+
self.assertEqual(keylist, [0, 1, 2, 3, None])
454473

455474

456475
if __name__ == "__main__":

0 commit comments

Comments
 (0)