xref: /aosp_15_r20/external/pytorch/test/test_jit_string.py (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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