@@ -1183,6 +1183,63 @@ def test_rpartition(self):
11831183 self .checkraises (ValueError , S , 'rpartition' , '' )
11841184 self .checkraises (TypeError , S , 'rpartition' , None )
11851185
1186+ def test_none_arguments (self ):
1187+ # issue 11828
1188+ s = 'hello'
1189+ self .checkequal (2 , s , 'find' , 'l' , None )
1190+ self .checkequal (3 , s , 'find' , 'l' , - 2 , None )
1191+ self .checkequal (2 , s , 'find' , 'l' , None , - 2 )
1192+ self .checkequal (0 , s , 'find' , 'h' , None , None )
1193+
1194+ self .checkequal (3 , s , 'rfind' , 'l' , None )
1195+ self .checkequal (3 , s , 'rfind' , 'l' , - 2 , None )
1196+ self .checkequal (2 , s , 'rfind' , 'l' , None , - 2 )
1197+ self .checkequal (0 , s , 'rfind' , 'h' , None , None )
1198+
1199+ self .checkequal (2 , s , 'index' , 'l' , None )
1200+ self .checkequal (3 , s , 'index' , 'l' , - 2 , None )
1201+ self .checkequal (2 , s , 'index' , 'l' , None , - 2 )
1202+ self .checkequal (0 , s , 'index' , 'h' , None , None )
1203+
1204+ self .checkequal (3 , s , 'rindex' , 'l' , None )
1205+ self .checkequal (3 , s , 'rindex' , 'l' , - 2 , None )
1206+ self .checkequal (2 , s , 'rindex' , 'l' , None , - 2 )
1207+ self .checkequal (0 , s , 'rindex' , 'h' , None , None )
1208+
1209+ self .checkequal (2 , s , 'count' , 'l' , None )
1210+ self .checkequal (1 , s , 'count' , 'l' , - 2 , None )
1211+ self .checkequal (1 , s , 'count' , 'l' , None , - 2 )
1212+ self .checkequal (0 , s , 'count' , 'x' , None , None )
1213+
1214+ self .checkequal (True , s , 'endswith' , 'o' , None )
1215+ self .checkequal (True , s , 'endswith' , 'lo' , - 2 , None )
1216+ self .checkequal (True , s , 'endswith' , 'l' , None , - 2 )
1217+ self .checkequal (False , s , 'endswith' , 'x' , None , None )
1218+
1219+ self .checkequal (True , s , 'startswith' , 'h' , None )
1220+ self .checkequal (True , s , 'startswith' , 'l' , - 2 , None )
1221+ self .checkequal (True , s , 'startswith' , 'h' , None , - 2 )
1222+ self .checkequal (False , s , 'startswith' , 'x' , None , None )
1223+
1224+ def test_find_etc_raise_correct_error_messages (self ):
1225+ # issue 11828
1226+ s = 'hello'
1227+ x = 'x'
1228+ self .assertRaisesRegexp (TypeError , r'^find\(' , s .find ,
1229+ x , None , None , None )
1230+ self .assertRaisesRegexp (TypeError , r'^rfind\(' , s .rfind ,
1231+ x , None , None , None )
1232+ self .assertRaisesRegexp (TypeError , r'^index\(' , s .index ,
1233+ x , None , None , None )
1234+ self .assertRaisesRegexp (TypeError , r'^rindex\(' , s .rindex ,
1235+ x , None , None , None )
1236+ self .assertRaisesRegexp (TypeError , r'^count\(' , s .count ,
1237+ x , None , None , None )
1238+ self .assertRaisesRegexp (TypeError , r'^startswith\(' , s .startswith ,
1239+ x , None , None , None )
1240+ self .assertRaisesRegexp (TypeError , r'^endswith\(' , s .endswith ,
1241+ x , None , None , None )
1242+
11861243
11871244class MixinStrUnicodeTest :
11881245 # Additional tests that only work with str and unicode.
0 commit comments