1*da0073e9SAndroid Build Coastguard Worker# Owner(s): ["oncall: jit"] 2*da0073e9SAndroid Build Coastguard Worker 3*da0073e9SAndroid Build Coastguard Workerfrom test_jit import JitTestCase 4*da0073e9SAndroid Build Coastguard Workerfrom torch.testing._internal.common_utils import run_tests 5*da0073e9SAndroid Build Coastguard Worker 6*da0073e9SAndroid Build Coastguard Workerfrom typing import List, Tuple 7*da0073e9SAndroid Build Coastguard Worker 8*da0073e9SAndroid Build Coastguard Workerclass TestScript(JitTestCase): 9*da0073e9SAndroid Build Coastguard Worker def test_str_ops(self): 10*da0073e9SAndroid Build Coastguard Worker def test_str_is(s: str) -> Tuple[bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool]: 11*da0073e9SAndroid Build Coastguard Worker return s.isupper(), s.islower(), s.isdigit(), s.isspace(), \ 12*da0073e9SAndroid Build Coastguard Worker s.isalnum(), s.isalpha(), s.isdecimal(), s.isnumeric(), \ 13*da0073e9SAndroid Build Coastguard Worker s.isidentifier(), s.istitle(), s.isprintable() 14*da0073e9SAndroid Build Coastguard Worker 15*da0073e9SAndroid Build Coastguard Worker def test_str_to(s: str) -> Tuple[str, str, str, str, str]: 16*da0073e9SAndroid Build Coastguard Worker return s.upper(), s.lower(), s.capitalize(), s.title(), s.swapcase() 17*da0073e9SAndroid Build Coastguard Worker 18*da0073e9SAndroid Build Coastguard Worker def test_str_strip(s: str) -> Tuple[str, str, str]: 19*da0073e9SAndroid Build Coastguard Worker return ( 20*da0073e9SAndroid Build Coastguard Worker s.lstrip(), 21*da0073e9SAndroid Build Coastguard Worker s.rstrip(), 22*da0073e9SAndroid Build Coastguard Worker s.strip(), 23*da0073e9SAndroid Build Coastguard Worker ) 24*da0073e9SAndroid Build Coastguard Worker 25*da0073e9SAndroid Build Coastguard Worker def test_str_strip_char_set(s: str, char_set: str) -> Tuple[str, str, str]: 26*da0073e9SAndroid Build Coastguard Worker return ( 27*da0073e9SAndroid Build Coastguard Worker s.lstrip(char_set), 28*da0073e9SAndroid Build Coastguard Worker s.rstrip(char_set), 29*da0073e9SAndroid Build Coastguard Worker s.strip(char_set), 30*da0073e9SAndroid Build Coastguard Worker ) 31*da0073e9SAndroid Build Coastguard Worker 32*da0073e9SAndroid Build Coastguard Worker inputs = ["", "12a", "!B", "12", "a", "B", "aB", "$12", "B12", "AB ", 33*da0073e9SAndroid Build Coastguard Worker " \t", " \n", "\na", "abc", "123.3", "s a", "b12a ", 34*da0073e9SAndroid Build Coastguard Worker "more strings with spaces", "Titular Strings", "\x0acan'tprintthis", 35*da0073e9SAndroid Build Coastguard Worker "spaces at the end ", " begin"] 36*da0073e9SAndroid Build Coastguard Worker 37*da0073e9SAndroid Build Coastguard Worker def test_str_center(i: int, s: str) -> str: 38*da0073e9SAndroid Build Coastguard Worker return s.center(i) 39*da0073e9SAndroid Build Coastguard Worker 40*da0073e9SAndroid Build Coastguard Worker def test_str_center_fc(i: int, s: str) -> str: 41*da0073e9SAndroid Build Coastguard Worker return s.center(i, '*') 42*da0073e9SAndroid Build Coastguard Worker 43*da0073e9SAndroid Build Coastguard Worker def test_str_center_error(s: str) -> str: 44*da0073e9SAndroid Build Coastguard Worker return s.center(10, '**') 45*da0073e9SAndroid Build Coastguard Worker 46*da0073e9SAndroid Build Coastguard Worker def test_ljust(s: str, i: int) -> str: 47*da0073e9SAndroid Build Coastguard Worker return s.ljust(i) 48*da0073e9SAndroid Build Coastguard Worker 49*da0073e9SAndroid Build Coastguard Worker def test_ljust_fc(s: str, i: int, fc: str) -> str: 50*da0073e9SAndroid Build Coastguard Worker return s.ljust(i, fc) 51*da0073e9SAndroid Build Coastguard Worker 52*da0073e9SAndroid Build Coastguard Worker def test_ljust_fc_err(s: str) -> str: 53*da0073e9SAndroid Build Coastguard Worker return s.ljust(10, '**') 54*da0073e9SAndroid Build Coastguard Worker 55*da0073e9SAndroid Build Coastguard Worker def test_rjust(s: str, i: int) -> str: 56*da0073e9SAndroid Build Coastguard Worker return s.rjust(i) 57*da0073e9SAndroid Build Coastguard Worker 58*da0073e9SAndroid Build Coastguard Worker def test_rjust_fc(s: str, i: int, fc: str) -> str: 59*da0073e9SAndroid Build Coastguard Worker return s.rjust(i, fc) 60*da0073e9SAndroid Build Coastguard Worker 61*da0073e9SAndroid Build Coastguard Worker def test_rjust_fc_err(s: str) -> str: 62*da0073e9SAndroid Build Coastguard Worker return s.rjust(10, '**') 63*da0073e9SAndroid Build Coastguard Worker 64*da0073e9SAndroid Build Coastguard Worker def test_zfill(s: str, i: int) -> str: 65*da0073e9SAndroid Build Coastguard Worker return s.zfill(i) 66*da0073e9SAndroid Build Coastguard Worker 67*da0073e9SAndroid Build Coastguard Worker for input in inputs: 68*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_str_is, (input,)) 69*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_str_to, (input,)) 70*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_str_strip, (input,)) 71*da0073e9SAndroid Build Coastguard Worker for char_set in ["abc", "123", " ", "\t"]: 72*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_str_strip_char_set, (input, char_set)) 73*da0073e9SAndroid Build Coastguard Worker for i in range(7): 74*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_str_center, (i, input,)) 75*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_str_center_fc, (i, input,)) 76*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_ljust, (input, i)) 77*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_ljust_fc, (input, i, '*')) 78*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_rjust, (input, i)) 79*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_rjust_fc, (input, i, '*')) 80*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_zfill, (input, i)) 81*da0073e9SAndroid Build Coastguard Worker 82*da0073e9SAndroid Build Coastguard Worker with self.assertRaises(Exception): 83*da0073e9SAndroid Build Coastguard Worker test_str_center_error("error") 84*da0073e9SAndroid Build Coastguard Worker test_ljust("error") 85*da0073e9SAndroid Build Coastguard Worker 86*da0073e9SAndroid Build Coastguard Worker def test_count() -> Tuple[int, int, int, int, int, int, int, int, int, int, int, int]: 87*da0073e9SAndroid Build Coastguard Worker return ( 88*da0073e9SAndroid Build Coastguard Worker "hello".count("h"), 89*da0073e9SAndroid Build Coastguard Worker "hello".count("h", 0, 1), 90*da0073e9SAndroid Build Coastguard Worker "hello".count("h", -3), 91*da0073e9SAndroid Build Coastguard Worker "hello".count("h", -10, 1), 92*da0073e9SAndroid Build Coastguard Worker "hello".count("h", 0, -10), 93*da0073e9SAndroid Build Coastguard Worker "hello".count("h", 0, 10), 94*da0073e9SAndroid Build Coastguard Worker "hello".count("ell"), 95*da0073e9SAndroid Build Coastguard Worker "hello".count("ell", 0, 1), 96*da0073e9SAndroid Build Coastguard Worker "hello".count("ell", -3), 97*da0073e9SAndroid Build Coastguard Worker "hello".count("ell", -10, 1), 98*da0073e9SAndroid Build Coastguard Worker "hello".count("ell", 0, -10), 99*da0073e9SAndroid Build Coastguard Worker "hello".count("ell", 0, 10) 100*da0073e9SAndroid Build Coastguard Worker ) 101*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_count, ()) 102*da0073e9SAndroid Build Coastguard Worker 103*da0073e9SAndroid Build Coastguard Worker def test_endswith() -> Tuple[bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool]: 104*da0073e9SAndroid Build Coastguard Worker return ( 105*da0073e9SAndroid Build Coastguard Worker "hello".endswith("lo"), 106*da0073e9SAndroid Build Coastguard Worker "hello".endswith("lo", 0), 107*da0073e9SAndroid Build Coastguard Worker "hello".endswith("lo", -2), 108*da0073e9SAndroid Build Coastguard Worker "hello".endswith("lo", -8), 109*da0073e9SAndroid Build Coastguard Worker "hello".endswith("lo", 0, -5), 110*da0073e9SAndroid Build Coastguard Worker "hello".endswith("lo", -2, 3), 111*da0073e9SAndroid Build Coastguard Worker "hello".endswith("lo", -8, 4), 112*da0073e9SAndroid Build Coastguard Worker "hello".endswith("l"), 113*da0073e9SAndroid Build Coastguard Worker "hello".endswith("l", 0), 114*da0073e9SAndroid Build Coastguard Worker "hello".endswith("l", -2), 115*da0073e9SAndroid Build Coastguard Worker "hello".endswith("l", -8), 116*da0073e9SAndroid Build Coastguard Worker "hello".endswith("l", 0, -5), 117*da0073e9SAndroid Build Coastguard Worker "hello".endswith("l", -2, 3), 118*da0073e9SAndroid Build Coastguard Worker "hello".endswith("l", -8, 4) 119*da0073e9SAndroid Build Coastguard Worker ) 120*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_endswith, ()) 121*da0073e9SAndroid Build Coastguard Worker 122*da0073e9SAndroid Build Coastguard Worker def test_startswith() -> Tuple[bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool]: 123*da0073e9SAndroid Build Coastguard Worker return ( 124*da0073e9SAndroid Build Coastguard Worker "hello".startswith("lo"), 125*da0073e9SAndroid Build Coastguard Worker "hello".startswith("lo", 0), 126*da0073e9SAndroid Build Coastguard Worker "hello".startswith("lo", -2), 127*da0073e9SAndroid Build Coastguard Worker "hello".startswith("lo", -8), 128*da0073e9SAndroid Build Coastguard Worker "hello".startswith("lo", 0, -5), 129*da0073e9SAndroid Build Coastguard Worker "hello".startswith("lo", -2, 3), 130*da0073e9SAndroid Build Coastguard Worker "hello".startswith("lo", -8, 4), 131*da0073e9SAndroid Build Coastguard Worker "hello".startswith("l"), 132*da0073e9SAndroid Build Coastguard Worker "hello".startswith("l", 0), 133*da0073e9SAndroid Build Coastguard Worker "hello".startswith("l", -2), 134*da0073e9SAndroid Build Coastguard Worker "hello".startswith("l", -8), 135*da0073e9SAndroid Build Coastguard Worker "hello".startswith("l", 0, -5), 136*da0073e9SAndroid Build Coastguard Worker "hello".startswith("l", -2, 3), 137*da0073e9SAndroid Build Coastguard Worker "hello".startswith("l", -8, 4) 138*da0073e9SAndroid Build Coastguard Worker ) 139*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_startswith, ()) 140*da0073e9SAndroid Build Coastguard Worker 141*da0073e9SAndroid Build Coastguard Worker def test_expandtabs() -> Tuple[str, str, str, str, str, str]: 142*da0073e9SAndroid Build Coastguard Worker return ( 143*da0073e9SAndroid Build Coastguard Worker 'xyz\t82345\tabc'.expandtabs(), 144*da0073e9SAndroid Build Coastguard Worker 'xyz\t32345\tabc'.expandtabs(3), 145*da0073e9SAndroid Build Coastguard Worker 'xyz\t52345\tabc'.expandtabs(5), 146*da0073e9SAndroid Build Coastguard Worker 'xyz\t62345\tabc'.expandtabs(6), 147*da0073e9SAndroid Build Coastguard Worker 'xyz\t72345\tabc'.expandtabs(7), 148*da0073e9SAndroid Build Coastguard Worker 'xyz\t62345\tabc'.expandtabs(-5), 149*da0073e9SAndroid Build Coastguard Worker ) 150*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_expandtabs, ()) 151*da0073e9SAndroid Build Coastguard Worker 152*da0073e9SAndroid Build Coastguard Worker def test_rfind() -> Tuple[int, int, int, int, int, int, int, int, int]: 153*da0073e9SAndroid Build Coastguard Worker return ( 154*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("llo"), 155*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("12"), 156*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("ab"), 157*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("ll", -1), 158*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("12", 4), 159*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("ab", -7), 160*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("ll", -1, 8), 161*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("12", 4, -4), 162*da0073e9SAndroid Build Coastguard Worker "hello123abc".rfind("ab", -7, -20), 163*da0073e9SAndroid Build Coastguard Worker ) 164*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_rfind, ()) 165*da0073e9SAndroid Build Coastguard Worker 166*da0073e9SAndroid Build Coastguard Worker def test_find() -> Tuple[int, int, int, int, int, int, int, int, int]: 167*da0073e9SAndroid Build Coastguard Worker return ( 168*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("llo"), 169*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("12"), 170*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("ab"), 171*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("ll", -1), 172*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("12", 4), 173*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("ab", -7), 174*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("ll", -1, 8), 175*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("12", 4, -4), 176*da0073e9SAndroid Build Coastguard Worker "hello123abc".find("ab", -7, -20), 177*da0073e9SAndroid Build Coastguard Worker ) 178*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_find, ()) 179*da0073e9SAndroid Build Coastguard Worker 180*da0073e9SAndroid Build Coastguard Worker def test_index() -> Tuple[int, int, int, int, int, int]: 181*da0073e9SAndroid Build Coastguard Worker return ( 182*da0073e9SAndroid Build Coastguard Worker "hello123abc".index("llo"), 183*da0073e9SAndroid Build Coastguard Worker "hello123abc".index("12"), 184*da0073e9SAndroid Build Coastguard Worker "hello123abc".index("ab"), 185*da0073e9SAndroid Build Coastguard Worker "hello123abc".index("12", 4), 186*da0073e9SAndroid Build Coastguard Worker "hello123abc".index("ab", -7), 187*da0073e9SAndroid Build Coastguard Worker "hello123abc".index("12", 4, -4), 188*da0073e9SAndroid Build Coastguard Worker ) 189*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_index, ()) 190*da0073e9SAndroid Build Coastguard Worker 191*da0073e9SAndroid Build Coastguard Worker def test_rindex() -> Tuple[int, int, int, int, int, int]: 192*da0073e9SAndroid Build Coastguard Worker return ( 193*da0073e9SAndroid Build Coastguard Worker "hello123abc".rindex("llo"), 194*da0073e9SAndroid Build Coastguard Worker "hello123abc".rindex("12"), 195*da0073e9SAndroid Build Coastguard Worker "hello123abc".rindex("ab"), 196*da0073e9SAndroid Build Coastguard Worker "hello123abc".rindex("12", 4), 197*da0073e9SAndroid Build Coastguard Worker "hello123abc".rindex("ab", -7), 198*da0073e9SAndroid Build Coastguard Worker "hello123abc".rindex("12", 4, -4), 199*da0073e9SAndroid Build Coastguard Worker ) 200*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_rindex, ()) 201*da0073e9SAndroid Build Coastguard Worker 202*da0073e9SAndroid Build Coastguard Worker def test_replace() -> Tuple[str, str, str, str, str, str, str]: 203*da0073e9SAndroid Build Coastguard Worker return ( 204*da0073e9SAndroid Build Coastguard Worker "hello123abc".replace("llo", "sdf"), 205*da0073e9SAndroid Build Coastguard Worker "ff".replace("f", "ff"), 206*da0073e9SAndroid Build Coastguard Worker "abc123".replace("a", "testing"), 207*da0073e9SAndroid Build Coastguard Worker "aaaaaa".replace("a", "testing", 3), 208*da0073e9SAndroid Build Coastguard Worker "bbb".replace("a", "testing", 3), 209*da0073e9SAndroid Build Coastguard Worker "ccc".replace("c", "ccc", 3), 210*da0073e9SAndroid Build Coastguard Worker "cc".replace("c", "ccc", -3), 211*da0073e9SAndroid Build Coastguard Worker ) 212*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_replace, ()) 213*da0073e9SAndroid Build Coastguard Worker 214*da0073e9SAndroid Build Coastguard Worker def test_partition() -> Tuple[Tuple[str, str, str], Tuple[str, str, str], Tuple[str, str, str], 215*da0073e9SAndroid Build Coastguard Worker Tuple[str, str, str], Tuple[str, str, str], Tuple[str, str, str], 216*da0073e9SAndroid Build Coastguard Worker Tuple[str, str, str]]: 217*da0073e9SAndroid Build Coastguard Worker return ( 218*da0073e9SAndroid Build Coastguard Worker "hello123abc".partition("llo"), 219*da0073e9SAndroid Build Coastguard Worker "ff".partition("f"), 220*da0073e9SAndroid Build Coastguard Worker "abc123".partition("a"), 221*da0073e9SAndroid Build Coastguard Worker "aaaaaa".partition("testing"), 222*da0073e9SAndroid Build Coastguard Worker "bbb".partition("a"), 223*da0073e9SAndroid Build Coastguard Worker "ccc".partition("ccc"), 224*da0073e9SAndroid Build Coastguard Worker "cc".partition("ccc"), 225*da0073e9SAndroid Build Coastguard Worker ) 226*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_partition, ()) 227*da0073e9SAndroid Build Coastguard Worker 228*da0073e9SAndroid Build Coastguard Worker def test_rpartition() -> Tuple[Tuple[str, str, str], Tuple[str, str, str], Tuple[str, str, str], 229*da0073e9SAndroid Build Coastguard Worker Tuple[str, str, str], Tuple[str, str, str], Tuple[str, str, str], 230*da0073e9SAndroid Build Coastguard Worker Tuple[str, str, str]]: 231*da0073e9SAndroid Build Coastguard Worker return ( 232*da0073e9SAndroid Build Coastguard Worker "hello123abc".rpartition("llo"), 233*da0073e9SAndroid Build Coastguard Worker "ff".rpartition("f"), 234*da0073e9SAndroid Build Coastguard Worker "abc123".rpartition("a"), 235*da0073e9SAndroid Build Coastguard Worker "aaaaaa".rpartition("testing"), 236*da0073e9SAndroid Build Coastguard Worker "bbb".rpartition("a"), 237*da0073e9SAndroid Build Coastguard Worker "ccc".rpartition("ccc"), 238*da0073e9SAndroid Build Coastguard Worker "cc".rpartition("ccc"), 239*da0073e9SAndroid Build Coastguard Worker ) 240*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_rpartition, ()) 241*da0073e9SAndroid Build Coastguard Worker 242*da0073e9SAndroid Build Coastguard Worker def test_split() -> Tuple[List[str], List[str], List[str], List[str], List[str], 243*da0073e9SAndroid Build Coastguard Worker List[str], List[str], List[str], List[str], List[str], List[str]]: 244*da0073e9SAndroid Build Coastguard Worker return ( 245*da0073e9SAndroid Build Coastguard Worker "a a a a a".split(), 246*da0073e9SAndroid Build Coastguard Worker "a a a a a".split(), 247*da0073e9SAndroid Build Coastguard Worker " a a\ta \v a \v\f\n a \t ".split(), 248*da0073e9SAndroid Build Coastguard Worker " a a a a a ".split(" "), 249*da0073e9SAndroid Build Coastguard Worker "a a a a a ".split(" ", 10), 250*da0073e9SAndroid Build Coastguard Worker "a a a a a ".split(" ", -1), 251*da0073e9SAndroid Build Coastguard Worker "a a a a a ".split(" ", 3), 252*da0073e9SAndroid Build Coastguard Worker " a a a a a ".split("*"), 253*da0073e9SAndroid Build Coastguard Worker " a*a a*a a".split("*"), 254*da0073e9SAndroid Build Coastguard Worker " a*a a*a a ".split("*", -1), 255*da0073e9SAndroid Build Coastguard Worker " a*a a*a a ".split("a*", 10), 256*da0073e9SAndroid Build Coastguard Worker ) 257*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_split, ()) 258*da0073e9SAndroid Build Coastguard Worker 259*da0073e9SAndroid Build Coastguard Worker # test raising error for empty separator 260*da0073e9SAndroid Build Coastguard Worker def test_split_empty_separator(): 261*da0073e9SAndroid Build Coastguard Worker s = "test" 262*da0073e9SAndroid Build Coastguard Worker return s.split("") 263*da0073e9SAndroid Build Coastguard Worker 264*da0073e9SAndroid Build Coastguard Worker self.checkScriptRaisesRegex(test_split_empty_separator, (), Exception, 265*da0073e9SAndroid Build Coastguard Worker "empty separator") 266*da0073e9SAndroid Build Coastguard Worker 267*da0073e9SAndroid Build Coastguard Worker def test_rsplit() -> Tuple[List[str], List[str], List[str], List[str], List[str], 268*da0073e9SAndroid Build Coastguard Worker List[str], List[str], List[str], List[str]]: 269*da0073e9SAndroid Build Coastguard Worker return ( 270*da0073e9SAndroid Build Coastguard Worker "a a a a a".rsplit(), 271*da0073e9SAndroid Build Coastguard Worker " a a a a a ".rsplit(" "), 272*da0073e9SAndroid Build Coastguard Worker "a a a a a ".rsplit(" ", 10), 273*da0073e9SAndroid Build Coastguard Worker "a a a a a ".rsplit(" ", -1), 274*da0073e9SAndroid Build Coastguard Worker "a a a a a ".rsplit(" ", 3), 275*da0073e9SAndroid Build Coastguard Worker " a a a a a ".rsplit("*"), 276*da0073e9SAndroid Build Coastguard Worker " a*a a*a a ".rsplit("*"), 277*da0073e9SAndroid Build Coastguard Worker " a*a a*a a ".rsplit("*", -1), 278*da0073e9SAndroid Build Coastguard Worker " a*a a*a a".rsplit("a*", 10), 279*da0073e9SAndroid Build Coastguard Worker ) 280*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_rsplit, ()) 281*da0073e9SAndroid Build Coastguard Worker 282*da0073e9SAndroid Build Coastguard Worker def test_splitlines() -> Tuple[List[str], List[str], List[str], List[str], 283*da0073e9SAndroid Build Coastguard Worker List[str], List[str]]: 284*da0073e9SAndroid Build Coastguard Worker return ( 285*da0073e9SAndroid Build Coastguard Worker "hello\ntest".splitlines(), 286*da0073e9SAndroid Build Coastguard Worker "hello\n\ntest\n".splitlines(), 287*da0073e9SAndroid Build Coastguard Worker "hello\ntest\n\n".splitlines(), 288*da0073e9SAndroid Build Coastguard Worker "hello\vtest".splitlines(), 289*da0073e9SAndroid Build Coastguard Worker "hello\v\f\ntest".splitlines(), 290*da0073e9SAndroid Build Coastguard Worker "hello\ftest".splitlines(), 291*da0073e9SAndroid Build Coastguard Worker ) 292*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_splitlines, ()) 293*da0073e9SAndroid Build Coastguard Worker 294*da0073e9SAndroid Build Coastguard Worker def test_str_cmp(a: str, b: str) -> Tuple[bool, bool, bool, bool, bool, bool]: 295*da0073e9SAndroid Build Coastguard Worker return a != b, a == b, a < b, a > b, a <= b, a >= b 296*da0073e9SAndroid Build Coastguard Worker 297*da0073e9SAndroid Build Coastguard Worker for i in range(len(inputs) - 1): 298*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_str_cmp, (inputs[i], inputs[i + 1])) 299*da0073e9SAndroid Build Coastguard Worker 300*da0073e9SAndroid Build Coastguard Worker def test_str_join(): 301*da0073e9SAndroid Build Coastguard Worker return ( 302*da0073e9SAndroid Build Coastguard Worker ",".join(["a"]), 303*da0073e9SAndroid Build Coastguard Worker ",".join(["a", "b", "c"]), 304*da0073e9SAndroid Build Coastguard Worker ",".join(["aa", "bb", "cc"]), 305*da0073e9SAndroid Build Coastguard Worker ",".join(["a,a", "bb", "c,c"]), 306*da0073e9SAndroid Build Coastguard Worker "**a**".join(["b", "c", "d", "e"]), 307*da0073e9SAndroid Build Coastguard Worker "".join(["a", "b", "c"]), 308*da0073e9SAndroid Build Coastguard Worker ) 309*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_str_join, ()) 310*da0073e9SAndroid Build Coastguard Worker 311*da0073e9SAndroid Build Coastguard Worker def test_bool_conversion(a: str): 312*da0073e9SAndroid Build Coastguard Worker if a: 313*da0073e9SAndroid Build Coastguard Worker return a 314*da0073e9SAndroid Build Coastguard Worker else: 315*da0073e9SAndroid Build Coastguard Worker return "default" 316*da0073e9SAndroid Build Coastguard Worker 317*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_bool_conversion, ("nonempty",)) 318*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_bool_conversion, ("",)) 319*da0073e9SAndroid Build Coastguard Worker 320*da0073e9SAndroid Build Coastguard Worker def test_string_slice(self): 321*da0073e9SAndroid Build Coastguard Worker def test_slice(a: str) -> Tuple[str, str, str, str, str]: 322*da0073e9SAndroid Build Coastguard Worker return ( 323*da0073e9SAndroid Build Coastguard Worker a[0:1:2], 324*da0073e9SAndroid Build Coastguard Worker a[0:6:1], 325*da0073e9SAndroid Build Coastguard Worker a[4:1:2], 326*da0073e9SAndroid Build Coastguard Worker a[0:3:2], 327*da0073e9SAndroid Build Coastguard Worker a[-1:1:3], 328*da0073e9SAndroid Build Coastguard Worker ) 329*da0073e9SAndroid Build Coastguard Worker 330*da0073e9SAndroid Build Coastguard Worker self.checkScript(test_slice, ("hellotest",)) 331*da0073e9SAndroid Build Coastguard Worker 332*da0073e9SAndroid Build Coastguard Workerif __name__ == '__main__': 333*da0073e9SAndroid Build Coastguard Worker run_tests() 334