@@ -177,3 +177,35 @@ assert_eq("abc" * 0, "")
177177assert_eq ("abc" * - 1 , "" )
178178assert_fails (lambda : "abc" * (1 << 35 ), "got 34359738368 for repeat, want value in signed 32-bit range" )
179179assert_fails (lambda : "abc" * (1 << 30 ), "excessive repeat \\ (3 \\ * 1073741824 characters\\ )" )
180+
181+ # removeprefix
182+ assert_eq ("Apricot" .removeprefix ("Apr" ), "icot" )
183+ assert_eq ("Apricot" .removeprefix ("apr" ), "Apricot" )
184+ assert_eq ("Apricot" .removeprefix ("A" ), "pricot" )
185+ assert_eq ("a" .removeprefix ("" ), "a" )
186+ assert_eq ("" .removeprefix ("" ), "" )
187+ assert_eq ("" .removeprefix ("a" ), "" )
188+ assert_eq ("Apricot" .removeprefix ("pr" ), "Apricot" )
189+ assert_eq ("AprApricot" .removeprefix ("Apr" ), "Apricot" )
190+ def removeprefix_self_unmodified ():
191+ original_string = "Apricot"
192+ assert_eq (original_string .removeprefix ("Apr" ), "icot" )
193+ assert_eq (original_string , "Apricot" )
194+ removeprefix_self_unmodified ()
195+ assert_fails (lambda : "1234" .removeprefix (1 ), "got value of type 'int', want 'string" )
196+
197+ # removesuffix
198+ assert_eq ("Apricot" .removesuffix ("cot" ), "Apri" )
199+ assert_eq ("Apricot" .removesuffix ("Cot" ), "Apricot" )
200+ assert_eq ("Apricot" .removesuffix ("t" ), "Aprico" )
201+ assert_eq ("a" .removesuffix ("" ), "a" )
202+ assert_eq ("" .removesuffix ("" ), "" )
203+ assert_eq ("" .removesuffix ("a" ), "" )
204+ assert_eq ("Apricot" .removesuffix ("co" ), "Apricot" )
205+ assert_eq ("Apricotcot" .removesuffix ("cot" ), "Apricot" )
206+ def removesuffix_self_unmodified ():
207+ original_string = "Apricot"
208+ assert_eq (original_string .removesuffix ("cot" ), "Apri" )
209+ assert_eq (original_string , "Apricot" )
210+ removesuffix_self_unmodified ()
211+ assert_fails (lambda : "1234" .removesuffix (4 ), "got value of type 'int', want 'string" )
0 commit comments