@test def test_isdigit(): assert "0".isdigit() == True assert "".isdigit() == False assert "a".isdigit() == False assert "2829357".isdigit() == True assert "kshfkjhe".isdigit() == False assert "9735g385497".isdigit() == False @test def test_islower(): assert "".islower() == False assert "a".islower() == True assert "A".islower() == False assert "5".islower() == False assert "ahuiuej".islower() == True assert "AhUiUeJ".islower() == False assert "9735g385497".islower() == True assert "9735G385497".islower() == False @test def test_isupper(): assert "".isupper() == False assert "a".isupper() == False assert "A".isupper() == True assert "5".isupper() == False assert ".J, U-I".isupper() == True assert "AHUIUEJ".isupper() == True assert "AhUiUeJ".isupper() == False assert "9735g385497".isupper() == False assert "9735G385497".isupper() == True @test def test_isalnum(): assert "".isalnum() == False assert "a".isalnum() == True assert "5".isalnum() == True assert ",".isalnum() == False assert "H6".isalnum() == True assert ".J, U-I".isalnum() == False assert "A4kki83UE".isalnum() == True assert "AhUiUeJ".isalnum() == True assert "973 g38597".isalnum() == False assert "9735G3-5497".isalnum() == False @test def test_isalpha(): assert "".isalpha() == False assert "a".isalpha() == True assert "5".isalpha() == False assert ",".isalpha() == False assert "Hh".isalpha() == True assert ".J, U-I".isalpha() == False assert "A4kki83UE".isalpha() == False assert "AhUiUeJ".isalpha() == True assert "973 g38597".isalpha() == False assert "9735G3-5497".isalpha() == False @test def test_isspace(): assert "".isspace() == False assert " ".isspace() == True assert "5 ".isspace() == False assert "\t\n\r ".isspace() == True assert "\t ".isspace() == True assert "\t\ngh\r ".isspace() == False assert "A4kki 3UE".isspace() == False @test def test_istitle(): assert "".istitle() == False assert " ".istitle() == False assert "I ".istitle() == True assert "IH".istitle() == False assert "Ih".istitle() == True assert "Hter Hewri".istitle() == True assert "Kweiur oiejf".istitle() == False @test def test_capitalize(): assert " hello ".capitalize() == " hello " assert "Hello ".capitalize() == "Hello " assert "hello ".capitalize() == "Hello " assert "aaaa".capitalize() == "Aaaa" assert "AaAa".capitalize() == "Aaaa" @test def test_isdecimal(): assert "".isdecimal() == False assert "a".isdecimal() == False assert "0".isdecimal() == True assert "\xbc".isdecimal() == False assert "0123456789".isdecimal() == True assert "0123456789a".isdecimal() == False @test def test_lower(): assert "HeLLo".lower() == "hello" assert "hello".lower() == "hello" assert "HELLO".lower() == "hello" assert "HEL _ LO".lower() == "hel _ lo" @test def test_upper(): assert "HeLLo".upper() == "HELLO" assert "hello".upper() == "HELLO" assert "HELLO".upper() == "HELLO" assert "HEL _ LO".upper() == "HEL _ LO" @test def test_isascii(): assert "".isascii() == True assert "\x00".isascii() == True assert "\x7f".isascii() == True assert "\x00\x7f".isascii() == True assert "\x80".isascii() == False assert "строка".isascii() == False assert "\xe9".isascii() == False @test def test_casefold(): assert "".casefold() == "" assert "HeLLo".casefold() == "hello" assert "hello".casefold() == "hello" assert "HELLO".casefold() == "hello" assert "HEL _ LO".casefold() == "hel _ lo" @test def test_swapcase(): assert "".swapcase() == "" assert "HeLLo cOmpUteRs".swapcase() == "hEllO CoMPuTErS" assert "H.e_L,L-o cOmpUteRs".swapcase() == "h.E_l,l-O CoMPuTErS" @test def test_title(): assert "".title() == "" assert " hello ".title() == " Hello " assert "hello ".title() == "Hello " assert "Hello ".title() == "Hello " assert "fOrMaT thIs aS titLe String".title() == "Format This As Title String" assert "fOrMaT,thIs-aS*titLe;String".title() == "Format,This-As*Title;String" assert "getInt".title() == "Getint" @test def test_isnumeric(): assert "".isdecimal() == False assert "a".isdecimal() == False assert "0".isdecimal() == True assert "\xbc".isdecimal() == False assert "0123456789".isdecimal() == True assert "0123456789a".isdecimal() == False @test def test_ljust(): assert "abc".ljust(10, " ") == "abc " assert "abc".ljust(6, " ") == "abc " assert "abc".ljust(3, " ") == "abc" assert "abc".ljust(2, " ") == "abc" assert "abc".ljust(10, "*") == "abc*******" @test def test_rjust(): assert "abc".rjust(10, " ") == " abc" assert "abc".rjust(6, " ") == " abc" assert "abc".rjust(3, " ") == "abc" assert "abc".rjust(2, " ") == "abc" assert "abc".rjust(10, "*") == "*******abc" @test def test_center(): assert "abc".center(10, " ") == " abc " assert "abc".center(6, " ") == " abc " assert "abc".center(3, " ") == "abc" assert "abc".center(2, " ") == "abc" assert "abc".center(10, "*") == "***abc****" @test def test_zfill(): assert "123".zfill(2) == "123" assert "123".zfill(3) == "123" assert "123".zfill(4) == "0123" assert "+123".zfill(3) == "+123" assert "+123".zfill(4) == "+123" assert "+123".zfill(5) == "+0123" assert "-123".zfill(3) == "-123" assert "-123".zfill(4) == "-123" assert "-123".zfill(5) == "-0123" assert "".zfill(3) == "000" assert "34".zfill(1) == "34" assert "34".zfill(4) == "0034" assert "1+2".zfill(5) == "001+2" assert "+".zfill(10) == "+000000000" assert "-".zfill(10) == "-000000000" @test def test_count(): assert "aaa".count("a", 0, len("aaa")) == 3 assert "aaa".count("b", 0, len("aaa")) == 0 assert "aaa".count("a", 1, len("aaa")) == 2 assert "aaa".count("a", 10, len("aaa")) == 0 assert "aaa".count("a", -1, len("aaa")) == 1 assert "aaa".count("a", 0, 1) == 1 assert "aaa".count("a", 0, 10) == 3 assert "aaa".count("a", 0, -1) == 2 assert "aaa".count("aa") == 1 assert "ababa".count("aba") == 1 assert "abababa".count("aba") == 2 assert "abababa".count("abab") == 1 @test def test_find(): assert "abcdefghiabc".find("abc", 0, len("abcdefghiabc")) == 0 assert "abcdefghiabc".find("abc") == 0 assert "abcdefghiabc".find("abc", 1, len("abcdefghiabc")) == 9 assert "abcdefghiabc".find("def", 4, len("abcdefghiabc")) == -1 assert "abcdefghiabc".find("abcdef", 0, len("abcdefghiabc")) == 0 assert "abcdefghiabc".find("abcdef") == 0 assert "abcdefghiabc".find("hiabc", 1, len("abcdefghiabc")) == 7 assert "abcdefghiabc".find("defgh", 4, len("abcdefghiabc")) == -1 assert "rrarrrrrrrrra".find("a", 0, len("rrarrrrrrrrra")) == 2 assert "rrarrrrrrrrra".find("a", 4, len("rrarrrrrrrrra")) == 12 assert "rrarrrrrrrrra".find("a", 4, 6) == -1 assert "abc".find("", 0, len("abc")) == 0 assert "abc".find("", 3, len("abc")) == 3 assert "abc".find("", 4, len("abc")) == -1 @test def test_rfind(): assert "abcdefghiabc".rfind("abc", 0, len("abcdefghiabc")) == 9 assert "abcdefghiabc".rfind("", 0, len("abcdefghiabc")) == 12 assert "abcdefghiabc".rfind("abcd", 0, len("abcdefghiabc")) == 0 assert "abcdefghiabc".rfind("abcz", 0, len("abcdefghiabc")) == -1 assert "abcdefghiabc".rfind("abc") == 9 assert "abcdefghiabc".rfind("") == 12 assert "abcdefghiabc".rfind("abcd") == 0 assert "abcdefghiabc".rfind("abcz") == -1 assert "rrarrrrrrrrra".rfind("a", 0, len("rrarrrrrrrrra")) == 12 assert "rrarrrrrrrrra".rfind("a", 4, len("rrarrrrrrrrra")) == 12 assert "rrarrrrrrrrra".rfind("a", 4, 6) == -1 assert "abc".rfind("", 0, len("abc")) == 3 assert "abc".rfind("", 3, len("abc")) == 3 assert "abc".rfind("", 4, len("abc")) == -1 @test def test_isidentifier(): assert "a".isidentifier() == True assert "Z".isidentifier() == True assert "_".isidentifier() == True assert "b0".isidentifier() == True assert "bc".isidentifier() == True assert "b_".isidentifier() == True assert " ".isidentifier() == False assert "3t".isidentifier() == False assert "_gth_45".isidentifier() == True @test def test_isprintable(): assert "".isprintable() == True assert '"'.isprintable() == True assert "'".isprintable() == True assert " ".isprintable() == True assert "abcdef".isprintable() == True assert "0123456789".isprintable() == True assert "ABCDEFGHIJKLMNOPQRSTUVWXYZ".isprintable() == True assert "abcdefghijklmnopqrstuvwxyz".isprintable() == True assert "!#$%&()*+,-./:;?@[\\]^_`{|}~".isprintable() == True assert "abcdef\n".isprintable() == False @test def test_lstrip(): assert "".lstrip() == "" assert " ".lstrip() == "" assert " hello ".lstrip("") == "hello " assert " \t\n\rabc \t\n\r".lstrip("") == "abc \t\n\r" assert "xyzzyhelloxyzzy".lstrip("xyz") == "helloxyzzy" @test def test_rstrip(): assert "".rstrip() == "" assert " ".rstrip() == "" assert " hello ".rstrip("") == " hello" assert " \t\n\rabc \t\n\r".rstrip("") == " \t\n\rabc" assert "xyzzyhelloxyzzy".rstrip("xyz") == "xyzzyhello" @test def test_strip(): assert "".strip() == "" assert " ".strip() == "" assert " hello ".strip("") == "hello" assert " hello ".strip() == "hello" assert " \t\n\rabc \t\n\r".strip() == "abc" assert "xyzzyhelloxyzzy".strip("xyz") == "hello" assert "hello".strip("xyz") == "hello" assert "mississippi".strip("mississippi") == "" assert "mississippi".strip("i") == "mississipp" @test def test_partition(): assert "hello".partition("l") == ("he", "l", "lo") assert "this is the partition method".partition("ti") == ( "this is the par", "ti", "tion method", ) assert "http://www.seq.org".partition("://") == ("http", "://", "www.seq.org") assert "http://www.seq.org".partition("?") == ("http://www.seq.org", "", "") assert "http://www.seq.org".partition("http://") == ("", "http://", "www.seq.org") assert "http://www.seq.org".partition("org") == ("http://www.seq.", "org", "") @test def test_rpartition(): assert "hello".rpartition("l") == ("hel", "l", "o") assert "this is the rpartition method".rpartition("ti") == ( "this is the rparti", "ti", "on method", ) assert "http://www.seq.org".rpartition("://") == ("http", "://", "www.seq.org") assert "http://www.seq.org".rpartition("?") == ("", "", "http://www.seq.org") assert "http://www.seq.org".rpartition("http://") == ("", "http://", "www.seq.org") assert "http://www.seq.org".rpartition("org") == ("http://www.seq.", "org", "") @test def test_split(): assert " h l \t\n l o ".split() == ["h", "l", "l", "o"] assert " h l \t\n l o ".split(None, 2) == ["h", "l", "l o "] assert " h l \t\n l o ".split(None, 0) == ["h l \t\n l o "] assert not "".split() assert not " ".split() assert "h l l o".split(" ", -1) == ["h", "l", "l", "o"] assert "a|b|c|d".split("|", -1) == ["a", "b", "c", "d"] assert "h l l o".split(" ") == ["h", "l", "l", "o"] assert "a|b|c|d".split("|") == ["a", "b", "c", "d"] assert "a|b|c|d".split("|", 0) == ["a|b|c|d"] assert "abcd".split("|", -1) == ["abcd"] assert "".split("|", -1) == [""] assert "endcase |".split("|", -1) == ["endcase ", ""] assert "| startcase".split("|", -1) == ["", " startcase"] assert "|bothcase|".split("|", -1) == ["", "bothcase", ""] assert "abbbc".split("bb", -1) == ["a", "bc"] assert "aaa".split("aaa", -1) == ["", ""] assert "aaa".split("aaa", 0) == ["aaa"] assert "abbaab".split("ba", -1) == ["ab", "ab"] assert "aa".split("aaa", -1) == ["aa"] assert "Abbobbbobb".split("bbobb", -1) == ["A", "bobb"] assert "AbbobbBbbobb".split("bbobb", -1) == ["A", "B", ""] assert ("a|" * 20)[:-1].split("|", -1) == ["a"] * 20 assert ("a|" * 20)[:-1].split("|", 15) == ["a"] * 15 + ["a|a|a|a|a"] assert "a|b|c|d".split("|", 1) == ["a", "b|c|d"] assert "a|b|c|d".split("|", 2) == ["a", "b", "c|d"] assert "a|b|c|d".split("|", 3) == ["a", "b", "c", "d"] assert "a|b|c|d".split("|", 4) == ["a", "b", "c", "d"] assert "a||b||c||d".split("|", 2) == ["a", "", "b||c||d"] @test def test_rsplit(): assert " h l \t\n l o ".rsplit() == ["h", "l", "l", "o"] assert " h l \t\n l o ".rsplit(None, 2) == [" h l", "l", "o"] assert " h l \t\n l o ".rsplit(None, 0) == [" h l \t\n l o"] assert not "".rsplit() assert not " ".rsplit() assert "a|b|c|d".rsplit("|", -1) == ["a", "b", "c", "d"] assert "a|b|c|d".rsplit("|") == ["a", "b", "c", "d"] assert "a|b|c|d".rsplit("|", 1) == ["a|b|c", "d"] assert "a|b|c|d".rsplit("|", 2) == ["a|b", "c", "d"] assert "a|b|c|d".rsplit("|", 3) == ["a", "b", "c", "d"] assert "a|b|c|d".rsplit("|", 4) == ["a", "b", "c", "d"] assert "a|b|c|d".rsplit("|", 0) == ["a|b|c|d"] assert "a||b||c||d".rsplit("|", 2) == ["a||b||c", "", "d"] assert "abcd".rsplit("|", -1) == ["abcd"] assert "".rsplit("|", -1) == [""] assert "endcase |".rsplit("|", -1) == ["endcase ", ""] assert "| startcase".rsplit("|", -1) == ["", " startcase"] assert "|bothcase|".rsplit("|", -1) == ["", "bothcase", ""] # assert 'a\x00\x00b\x00c\x00d'.rsplit('\x00', -1) assert "abbbc".rsplit("bb", -1) == ["ab", "c"] assert "aaa".rsplit("aaa", -1) == ["", ""] assert "aaa".rsplit("aaa", 0) == ["aaa"] assert "abbaab".rsplit("ba", -1) == ["ab", "ab"] assert "aa".rsplit("aaa", -1) == ["aa"] assert "bbobbbobbA".rsplit("bbobb", -1) == ["bbob", "A"] assert "bbobbBbbobbA".rsplit("bbobb", -1) == ["", "B", "A"] assert ("aBLAH" * 20)[:-4].rsplit("BLAH", -1) == ["a"] * 20 assert ("a|" * 20)[:-1].rsplit("|", 15) == ["a|a|a|a|a"] + ["a"] * 15 assert "a||b||c||d".rsplit("|", 2) == ["a||b||c", "", "d"] @test def test_splitlines(): assert "\n\nasdf\nsadf\nsdf\n".splitlines(False) == ["", "", "asdf", "sadf", "sdf"] assert "\n\nasdf\nsadf\nsdf\n".splitlines() == ["", "", "asdf", "sadf", "sdf"] assert "abc\ndef\n\rghi".splitlines(False) == ["abc", "def", "", "ghi"] assert "abc\ndef\n\r\nghi".splitlines(False) == ["abc", "def", "", "ghi"] assert "abc\ndef\r\nghi".splitlines(False) == ["abc", "def", "ghi"] assert "abc\ndef\r\nghi\n".splitlines(False) == ["abc", "def", "ghi"] assert "abc\ndef\r\nghi\n\r".splitlines(False) == ["abc", "def", "ghi", ""] assert "\nabc\ndef\r\nghi\n\r".splitlines(False) == ["", "abc", "def", "ghi", ""] assert "\nabc\ndef\r\nghi\n\r".splitlines(True) == [ "\n", "abc\n", "def\r\n", "ghi\n", "\r", ] assert "abc\ndef\r\nghi\n".splitlines(True) == ["abc\n", "def\r\n", "ghi\n"] @test def test_startswith(): assert "hello".startswith("he", 0, len("hello")) == True assert "hello".startswith("hello", 0, len("hello")) == True assert "hello".startswith("hello world", 0, len("hello")) == False assert "hello".startswith("", 0, len("hello")) == True assert "hello".startswith("ello", 0, len("hello")) == False assert "hello".startswith("he") == True assert "hello".startswith("hello") == True assert "hello".startswith("hello world") == False assert "hello".startswith("") == True assert "hello".startswith("ello") == False assert "hello".startswith("ello", 1, len("hello")) == True assert "hello".startswith("o", 4, len("hello")) == True assert "hello".startswith("o", 5, len("hello")) == False assert "hello".startswith("lo", 3, len("hello")) == True assert "hello".startswith("", 5, len("hello")) == True assert "hello".startswith("lo", 6, len("hello")) == False assert "helloworld".startswith("lowo", 3, len("helloworld")) == True assert "helloworld".startswith("lowo", 3, 7) == True assert "helloworld".startswith("lowo", 3, 6) == False assert "".startswith("", 0, 1) == True assert "".startswith("", 0, 0) == True assert "".startswith("", 1, 0) == False assert "hello".startswith("he", 0, -1) == True assert "hello".startswith("hello", 0, -1) == False assert "hello".startswith("he", 0, -3) == True assert "hello".startswith("ello", -4, len("hello")) == True assert "hello".startswith("ello", -5, len("hello")) == False assert "hello".startswith("", -3, -3) == True assert "hello".startswith("o", -1, len("hello")) == True @test def test_endswith(): assert "hello".endswith("lo", 0, len("hello")) == True assert "hello".endswith("he", 0, len("hello")) == False assert "hello".endswith("", 0, len("hello")) == True assert "hello".endswith("hello world", 0, len("hello")) == False assert "hello".endswith("lo") == True assert "hello".endswith("he") == False assert "hello".endswith("") == True assert "hello".endswith("hello world") == False assert "helloworld".endswith("worl", 0, len("hello")) == False assert "helloworld".endswith("worl", 3, 9) == True assert "helloworld".endswith("world", 3, 12) == True assert "helloworld".endswith("lowo", 1, 7) == True assert "helloworld".endswith("lowo", 2, 7) == True assert "helloworld".endswith("lowo", 3, 7) == True assert "helloworld".endswith("lowo", 4, 7) == False assert "helloworld".endswith("lowo", 3, 8) == False assert "ab".endswith("ab", 0, 1) == False assert "ab".endswith("ab", 0, 0) == False assert "".endswith("", 0, 1) == True assert "".endswith("", 0, 0) == True assert "".endswith("", 1, 0) == False assert "hello".endswith("lo", -2, len("hello")) == True assert "hello".endswith("he", -2, len("hello")) == False assert "hello".endswith("", -3, -3) == True assert "helloworld".endswith("worl", -6, len("helloworld")) == False assert "helloworld".endswith("worl", -5, -1) == True assert "helloworld".endswith("worl", -5, 9) == True assert "helloworld".endswith("world", -7, 12) == True assert "helloworld".endswith("lowo", -99, -3) == True assert "helloworld".endswith("lowo", -8, -3) == True assert "helloworld".endswith("lowo", -7, -3) == True assert "helloworld".endswith("lowo", 3, -4) == False assert "helloworld".endswith("lowo", -8, -2) == False @test def test_index(): assert "abcdefghiabc".index("abc", 0, len("abcdefghiabc")) == 0 assert "abcdefghiabc".index("abc") == 0 assert "abcdefghiabc".index("abc", 1, len("abcdefghiabc")) == 9 assert "abc".index("", 0, len("abc")) == 0 assert "abc".index("", 3, len("abc")) == 3 assert "rrarrrrrrrrra".index("a", 0, len("rrarrrrrrrrra")) == 2 assert "rrarrrrrrrrra".index("a", 4, len("rrarrrrrrrrra")) == 12 try: "abcdefghiabc".index("def", 4, len("abcdefghiabc")) assert False except ValueError: pass @test def test_rindex(): assert "abcdefghiabc".rindex("", 0, len("abcdefghiabc")) == 12 assert "abcdefghiabc".rindex("") == 12 assert "abcdefghiabc".rindex("def", 0, len("abcdefghiabc")) == 3 assert "abcdefghiabc".rindex("abc", 0, len("abcdefghiabc")) == 9 assert "abcdefghiabc".rindex("abc", 0, -1) == 0 assert "rrarrrrrrrrra".rindex("a", 0, len("rrarrrrrrrrra")) == 12 assert "rrarrrrrrrrra".rindex("a", 4, len("rrarrrrrrrrra")) == 12 try: "rrarrrrrrrrra".rindex("a", 4, 6) assert False except ValueError: pass @test def test_replace(): # interleave-- default will be len(str) + 1 assert "A".replace("", "", len("A") + 1) == "A" assert "A".replace("", "*", len("A") + 1) == "*A*" assert "A".replace("", "*1", len("A") + 1) == "*1A*1" assert "A".replace("", "*-#", len("A") + 1) == "*-#A*-#" assert "AA".replace("", "*-", len("AA") + 1) == "*-A*-A*-" assert "AA".replace("", "*-", -1) == "*-A*-A*-" assert "AA".replace("", "*-") == "*-A*-A*-" assert "AA".replace("", "*-", 4) == "*-A*-A*-" assert "AA".replace("", "*-", 3) == "*-A*-A*-" assert "AA".replace("", "*-", 2) == "*-A*-A" assert "AA".replace("", "*-", 1) == "*-AA" assert "AA".replace("", "*-", 0) == "AA" # substring deletion assert "A".replace("A", "", len("A") + 1) == "" assert "AAA".replace("A", "", len("AAA") + 1) == "" assert "AAA".replace("A", "", -1) == "" assert "AAA".replace("A", "") == "" assert "AAA".replace("A", "", 4) == "" assert "AAA".replace("A", "", 3) == "" assert "AAA".replace("A", "", 2) == "A" assert "AAA".replace("A", "", 1) == "AA" assert "AAA".replace("A", "", 0) == "AAA" assert "ABACADA".replace("A", "", len("ABACADA") + 1) == "BCD" assert "ABACADA".replace("A", "", -1) == "BCD" assert "ABACADA".replace("A", "", 5) == "BCD" assert "ABACADA".replace("A", "", 4) == "BCD" assert "ABACADA".replace("A", "", 3) == "BCDA" assert "ABACADA".replace("A", "", 2) == "BCADA" assert "ABACADA".replace("A", "", 1) == "BACADA" assert "ABACADA".replace("A", "", 0) == "ABACADA" assert "ABCAD".replace("A", "", len("ABCAD") + 1) == "BCD" assert "ABCADAA".replace("A", "", len("ABCADAA") + 1) == "BCD" assert "BCD".replace("A", "", len("BCD") + 1) == "BCD" assert ("^" + ("A" * 1000) + "^").replace("A", "", 999) == "^A^" assert "the".replace("the", "", len("the") + 1) == "" assert "theater".replace("the", "", len("theater") + 1) == "ater" assert "thethe".replace("the", "", len("thethe") + 1) == "" assert "thethethethe".replace("the", "", len("thethethethe") + 1) == "" assert "theatheatheathea".replace("the", "", len("theatheatheathea") + 1) == "aaaa" assert "that".replace("the", "", len("that") + 1) == "that" assert ( "here and there".replace("the", "", len("here and there") + 1) == "here and re" ) assert ( "here and there and there".replace( "the", "", len("here and there and there") + 1 ) == "here and re and re" ) assert "here and there and there".replace("the", "", -1) == "here and re and re" assert "here and there and there".replace("the", "", 3) == "here and re and re" assert "here and there and there".replace("the", "", 2) == "here and re and re" assert "here and there and there".replace("the", "", 1) == "here and re and there" assert ( "here and there and there".replace("the", "", 0) == "here and there and there" ) # substring replace in place assert ( "Who goes there?".replace("o", "o", len("Who goes there?") + 1) == "Who goes there?" ) assert ( "Who goes there?".replace("o", "O", len("Who goes there?") + 1) == "WhO gOes there?" ) assert "Who goes there?".replace("o", "O", -1) == "WhO gOes there?" assert "Who goes there?".replace("o", "O", 3) == "WhO gOes there?" assert "Who goes there?".replace("o", "O", 2) == "WhO gOes there?" assert "Who goes there?".replace("o", "O", 1) == "WhO goes there?" assert "Who goes there?".replace("o", "O", 0) == "Who goes there?" assert ( "Who goes there?".replace("a", "q", len("Who goes there?") + 1) == "Who goes there?" ) assert ( "Who goes there?".replace("W", "w", len("Who goes there?") + 1) == "who goes there?" ) assert ( "WWho goes there?WW".replace("W", "w", len("WWho goes there?WW") + 1) == "wwho goes there?ww" ) assert ( "Who goes there?".replace("?", "!", len("Who goes there?") + 1) == "Who goes there!" ) assert ( "This is a tissue".replace("is", "**", len("This is a tissue") + 1) == "Th** ** a t**sue" ) assert "This is a tissue".replace("is", "**", -1) == "Th** ** a t**sue" assert "This is a tissue".replace("is", "**", 4) == "Th** ** a t**sue" assert "This is a tissue".replace("is", "**", 3) == "Th** ** a t**sue" assert "This is a tissue".replace("is", "**", 2) == "Th** ** a tissue" assert "This is a tissue".replace("is", "**", 1) == "Th** is a tissue" assert "This is a tissue".replace("is", "**", 0) == "This is a tissue" assert "Reykjavik".replace("k", "KK", len("Reykjavik") + 1) == "ReyKKjaviKK" assert "Reykjavik".replace("k", "KK", -1) == "ReyKKjaviKK" assert "Reykjavik".replace("k", "KK", 2) == "ReyKKjaviKK" assert "Reykjavik".replace("k", "KK", 1) == "ReyKKjavik" assert "Reykjavik".replace("k", "KK", 0) == "Reykjavik" assert "A.B.C.".replace(".", "----", len("A.B.C.") + 1) == "A----B----C----" assert ( "spam, spam, eggs and spam".replace( "spam", "ham", len("spam, spam, eggs and spam") + 1 ) == "ham, ham, eggs and ham" ) assert ( "spam, spam, eggs and spam".replace("spam", "ham", -1) == "ham, ham, eggs and ham" ) assert ( "spam, spam, eggs and spam".replace("spam", "ham", 4) == "ham, ham, eggs and ham" ) assert ( "spam, spam, eggs and spam".replace("spam", "ham", 3) == "ham, ham, eggs and ham" ) assert ( "spam, spam, eggs and spam".replace("spam", "ham", 2) == "ham, ham, eggs and spam" ) assert ( "spam, spam, eggs and spam".replace("spam", "ham", 1) == "ham, spam, eggs and spam" ) assert ( "spam, spam, eggs and spam".replace("spam", "ham", 0) == "spam, spam, eggs and spam" ) @test def test_expandtabs(): assert "abc\rab\tdef\ng\thi".expandtabs(8) == "abc\rab def\ng hi" assert "abc\rab\tdef\ng\thi".expandtabs(8) == "abc\rab def\ng hi" assert "abc\rab\tdef\ng\thi".expandtabs(4) == "abc\rab def\ng hi" assert "abc\r\nab\tdef\ng\thi".expandtabs(8) == "abc\r\nab def\ng hi" assert "abc\r\nab\tdef\ng\thi".expandtabs(4) == "abc\r\nab def\ng hi" assert "abc\r\nab\r\ndef\ng\r\nhi".expandtabs(4) == "abc\r\nab\r\ndef\ng\r\nhi" assert " \ta\n\tb".expandtabs(1) == " a\n b" assert "\tdndhd\ty\ty\tyu\t".expandtabs(3) == " dndhd y y yu " @test def test_translate(): assert "I yor ge".translate({ord("g"): "w", ord("y"): "f"}) == "I for we" assert "abababc".translate({ord("a"): ""}) == "bbbc" assert "abababc".translate({ord("a"): "", ord("b"): "i"}) == "iiic" assert "abababc".translate({ord("a"): "", ord("b"): "i", ord("c"): "x"}) == "iiix" assert "abababc".translate({ord("a"): "", ord("b"): ""}) == "c" assert "xzx".translate({ord("z"): "yy"}) == "xyyx" assert "aaabbbccc".translate({ord("b"): Optional("XY"), ord("c"): None, ord("a"): Optional("")}) == "XYXYXY" @test def test_repr(): assert repr("") == "''" assert repr("hello") == "'hello'" assert repr(" ") == "' '" assert repr("\r\a\n\t") == "'\\r\\a\\n\\t'" @test def test_fstr(): assert f"{2+2}" == "4" n = 42 assert f"{n}{n}xx{n}" == "4242xx42" assert f"{n=}" == "n=42" assert f"hello {n=} world" == "hello n=42 world" @test def test_slice( s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", indices=(0, 1, 3, 41, 0xFFFFFFFFFFF, -1, -2, -37), ): for start in indices: for stop in indices: for step in indices[1:]: L = list(s)[start:stop:step] assert s[start:stop:step] == "".join(L) @test def test_join(): assert "".join(str(a) for a in range(0)) == "" assert "".join(List[str]()) == "" assert "a".join(str(a) for a in range(0)) == "" assert "a".join(List[str]()) == "" assert "ab".join(str(a) for a in range(999, 1000)) == "999" assert "ab".join(["999"]) == "999" assert "xyz".join(str(a) for a in range(5)) == "0xyz1xyz2xyz3xyz4" assert "xyz".join(["00", "1", "22", "3", "44"]) == "00xyz1xyz22xyz3xyz44" assert "xyz".join(iter(["00", "1", "22", "3", "44"])) == "00xyz1xyz22xyz3xyz44" assert "xyz".join(["00", "1", "22", "3", "44"]) == "00xyz1xyz22xyz3xyz44" assert "xyz".join(iter(["00", "", "22", "3", ""])) == "00xyzxyz22xyz3xyz" @test def test_repr(): s = ( "\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19" "\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefg" "hijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91" "\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xff" ) assert repr(s) == ( "'\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11" "\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f !\"#$%&\\'()*+," "-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\" "x7f\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8a\\x8b\\x8c\\x8d\\x8e\\x8f\\x90" "\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9a\\x9b\\x9c\\x9d\\x9e\\x9f\\xa0\\xff'" ) assert repr("") == "''" assert repr('"') == "'\"'" assert repr("'") == '"\'"' assert repr("\"'") == "'\"\\''" test_isdigit() test_islower() test_isupper() test_isalnum() test_isalpha() test_isspace() test_istitle() test_capitalize() test_isdecimal() test_lower() test_upper() test_isascii() test_casefold() test_swapcase() test_title() test_isnumeric() test_ljust() test_rjust() test_center() test_zfill() test_count() test_find() test_rfind() test_isidentifier() test_isprintable() test_lstrip() test_rstrip() test_strip() test_partition() test_rpartition() test_split() test_rsplit() test_splitlines() test_startswith() test_endswith() test_index() test_rindex() test_replace() test_expandtabs() test_translate() test_repr() test_fstr() test_slice() test_join() test_repr()