@@ -117,3 +117,42 @@ def __eq__(self, x):
117
117
assert a == b
118
118
119
119
assert [foo ] == [foo ]
120
+
121
+ for size in [1 , 2 , 3 , 4 , 5 , 8 , 10 , 100 , 1000 ]:
122
+ lst = list (range (size ))
123
+ orig = lst [:]
124
+ lst .sort ()
125
+ assert lst == orig
126
+ assert sorted (lst ) == orig
127
+ assert_raises (ZeroDivisionError , lambda : sorted (lst , key = lambda x : 1 / x ))
128
+ lst .reverse ()
129
+ assert sorted (lst ) == orig
130
+ assert sorted (lst , reverse = True ) == lst
131
+ assert sorted (lst , key = lambda x : - x ) == lst
132
+ assert sorted (lst , key = lambda x : - x , reverse = True ) == orig
133
+
134
+ assert sorted ([(1 , 2 , 3 ), (0 , 3 , 6 )]) == [(0 , 3 , 6 ), (1 , 2 , 3 )]
135
+ assert sorted ([(1 , 2 , 3 ), (0 , 3 , 6 )], key = lambda x : x [0 ]) == [(0 , 3 , 6 ), (1 , 2 , 3 )]
136
+ assert sorted ([(1 , 2 , 3 ), (0 , 3 , 6 )], key = lambda x : x [1 ]) == [(1 , 2 , 3 ), (0 , 3 , 6 )]
137
+ assert sorted ([(1 , 2 ), (), (5 ,)], key = len ) == [(), (5 ,), (1 , 2 )]
138
+
139
+ lst = [3 , 1 , 5 , 2 , 4 ]
140
+ class C :
141
+ def __init__ (self , x ): self .x = x
142
+ def __lt__ (self , other ): return self .x < other .x
143
+ lst .sort (key = C )
144
+ assert lst == [1 , 2 , 3 , 4 , 5 ]
145
+
146
+ lst = [3 , 1 , 5 , 2 , 4 ]
147
+ class C :
148
+ def __init__ (self , x ): self .x = x
149
+ def __gt__ (self , other ): return self .x > other .x
150
+ lst .sort (key = C )
151
+ assert lst == [1 , 2 , 3 , 4 , 5 ]
152
+
153
+ lst = [5 , 1 , 2 , 3 , 4 ]
154
+ def f (x ):
155
+ lst .append (1 )
156
+ return x
157
+ assert_raises (ValueError , lambda : lst .sort (key = f )) # "list modified during sort"
158
+ assert lst == [1 , 2 , 3 , 4 , 5 ]
0 commit comments