041_str.py 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. assert 'testing' == 'test' + 'ing'
  2. assert 'testing' != 'test' + 'ing2'
  3. assert 'testing' < 'test' + 'ing2'
  4. assert 'testing' <= 'test' + 'ing2'
  5. assert 'testing5' > 'test' + 'ing1'
  6. assert 'testing5' >= 'test' + 'ing1'
  7. # test + *=
  8. assert 'abc' + 'def' == 'abcdef'
  9. assert 'abc' * 3 == 'abcabcabc'
  10. assert repr('\\\n\t\'\r\b\x48') in [
  11. r"'\\\n\t\'\r\bH'",
  12. '"\\\\\\n\\t\'\\r\\x08H"',
  13. ]
  14. a = ''
  15. b = 'test'
  16. c ='test'
  17. assert a == str()
  18. assert len(a) == 0
  19. assert len(b) == 4
  20. assert b == c
  21. # upper and lower does not work for utf-8
  22. assert ''.lower() == '' and ''.upper() == ''
  23. assert 'already+lower '.lower() == 'already+lower '
  24. assert 'ALREADY+UPPER '.upper() == 'ALREADY+UPPER '
  25. assert 'tEST+InG'.lower() == 'test+ing'
  26. assert 'tEST+InG'.upper() == 'TEST+ING'
  27. s = "football"
  28. q = "abcd"
  29. r = "zoo"
  30. t = "this is string example....wow!!!"
  31. assert s[0] == 'f'
  32. assert s[1:4] == 'oot'
  33. assert s[:-1] == 'footbal'
  34. assert s[:10] == 'football'
  35. assert s[-3] == 'a'
  36. assert t[-5:] == 'ow!!!'
  37. assert t[3:-3] == 's is string example....wow'
  38. assert s > q;assert s < r
  39. assert s.replace("o","") == "ftball"
  40. assert s.replace("o","O") == "fOOtball"
  41. assert s.replace("foo","ball") == "balltball"
  42. assert s.startswith('f') == True;assert s.endswith('o') == False
  43. assert t.startswith('this') == True;
  44. assert t.split('w') == ['this is string example....', 'o', '!!!']
  45. assert "a,b,c".split(',') == ['a', 'b', 'c']
  46. assert 'a,'.split(',') == ['a', '']
  47. assert 'foo!!bar!!baz'.split('!!') == ['foo', 'bar', 'baz']
  48. assert ' 4 3 '.split() == ['4', '3']
  49. assert ' 4 3 '.split(' ') == ['', '', '4', '3', '', '']
  50. assert 'aa bb cccc'.split('cc') == ['aa bb ', '', '']
  51. assert '.a.b.'.split('.') == ['', 'a', 'b', '']
  52. assert '.a...b.'.split('.') == ['', 'a', '', '', 'b', '']
  53. # https://github.com/pocketpy/pocketpy/issues/378
  54. assert "a b \n c\td".split() == ['a', 'b', 'c', 'd']
  55. try:
  56. 'a'.split('')
  57. exit(1)
  58. except ValueError:
  59. pass
  60. assert '111'.count('1') == 3
  61. assert '111'.count('11') == 1
  62. assert '1111'.count('11') == 2
  63. assert '11'.count('') == 3
  64. assert ''.count('1') == 0
  65. assert ''.count('') == 1
  66. assert 'é日'.count('') == 3
  67. assert 'ab'.replace('', '-') == '-a-b-'
  68. assert 'é日'.replace('', '|') == '|é|日|'
  69. assert ''.replace('', 'x') == 'x'
  70. t = "*****this is **string** example....wow!!!*****"
  71. s = "123abcrunoob321"
  72. assert t.strip( '*' ) == "this is **string** example....wow!!!"
  73. assert s.strip( '12' ) == "3abcrunoob3"
  74. assert t.strip( '*' ) == "this is **string** example....wow!!!"
  75. assert s.strip( '12' ) == "3abcrunoob3"
  76. assert '测试123'.strip('测试') == '123'
  77. assert '测试123测试'.strip('测试') == '123'
  78. assert '123测试'.strip('2') == '123测试'
  79. assert '测试123'.strip('测') == '试123'
  80. assert '测试123'.strip('试') == '测试123'
  81. assert '测试123测试'.lstrip('测试') == '123测试'
  82. assert '测试123测试'.rstrip('测试') == '测试123'
  83. assert 'abc'.lstrip('a') == 'bc'
  84. assert 'abc'.lstrip('b') == 'abc'
  85. assert 'abc'.lstrip('c') == 'abc'
  86. assert 'abc'.rstrip('a') == 'abc'
  87. assert 'abc'.rstrip('b') == 'abc'
  88. assert 'abc'.rstrip('c') == 'ab'
  89. assert 'abc'.lstrip('abc') == ''
  90. assert 'abc'.rstrip('abc') == ''
  91. assert 'abc'.strip('abc') == ''
  92. s = ' asd\n asd \n'
  93. assert s.strip() == 'asd\n asd'
  94. s1 = "-"
  95. s2 = ""
  96. seq = ["r","u","n","o","o","b"]
  97. assert s1.join( seq ) == "r-u-n-o-o-b"
  98. assert s2.join( seq ) == "runoob"
  99. assert 'x'.zfill(5) == '0000x'
  100. assert '568'.zfill(1) == '568'
  101. assert '-5'.zfill(4) == '-005'
  102. assert '+5'.zfill(4) == '+005'
  103. assert '-'.zfill(3) == '-00'
  104. num = 6
  105. assert str(num) == '6'
  106. # test Lo group names
  107. 测试 = "test"
  108. assert 测试 == "test"
  109. a = 'abcd'
  110. assert list(a) == ['a', 'b', 'c', 'd']
  111. a = '测试'
  112. assert list(a) == ['测', '试']
  113. a = 'a测b试c'
  114. assert list(a) == ['a', '测', 'b', '试', 'c']
  115. a = 'a测b试'
  116. assert list(a) == ['a', '测', 'b', '试']
  117. a = '测b试c'
  118. assert list(a) == ['测', 'b', '试', 'c']
  119. a = '测b'
  120. assert list(a) == ['测', 'b']
  121. a = 'b'
  122. assert list(a) == ['b']
  123. a = '测'
  124. assert list(a) == ['测']
  125. # 3rd slice
  126. a = "Hello, World!"
  127. assert a[::-1] == "!dlroW ,olleH"
  128. assert a[::2] == "Hlo ol!"
  129. assert a[2:5:2] == "lo"
  130. assert a[5:2:-1] == ",ol"
  131. assert a[5:2:-2] == ",l"
  132. a = '123'
  133. assert a.rjust(5) == ' 123'
  134. assert a.rjust(5, '0') == '00123'
  135. assert a.ljust(5) == '123 '
  136. assert a.ljust(5, '0') == '12300'
  137. assert 'é'.ljust(3) == 'é '
  138. assert 'é'.rjust(3, '*') == '**é'
  139. assert '日本'.ljust(3, '-') == '日本-'
  140. assert 'a'.rjust(3, 'é') == 'ééa'
  141. assert '\x30\x31\x32' == '012'
  142. assert '\b\b\b' == '\x08\x08\x08'
  143. assert repr('\x1f\x1e\x1f') == '\'\\x1f\\x1e\\x1f\''
  144. assert '\a' == '\x07'
  145. assert '\b' == '\x08'
  146. assert '\f' == '\x0c'
  147. assert '\v' == '\x0b'
  148. assert '\0' == '\x00'
  149. a = '123'
  150. assert a.index('2') == 1
  151. assert a.index('1') == 0
  152. assert a.index('3') == 2
  153. assert a.index('23') == 1
  154. assert a.index('2', 1) == 1
  155. assert a.index('1', 0) == 0
  156. assert a.index('2', -2) == 1
  157. assert a.find('1') == 0
  158. assert a.find('1', 1) == -1
  159. # find and index return character indices, not byte offsets
  160. s = 'aßa-é日'
  161. assert s.find('é') == 4
  162. assert s.find('日', -1) == 5
  163. assert s.find('a', 1) == 2
  164. assert s.index('é', 3) == 4
  165. assert s[s.find('é'):] == 'é日'
  166. assert 'ab'.find('', 2) == 2
  167. assert 'ab'.find('', 3) == -1
  168. b = list("Hello, World!")
  169. assert b == ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']
  170. assert b[::-1] == ['!', 'd', 'l', 'r', 'o', 'W', ' ', ',', 'o', 'l', 'l', 'e', 'H']
  171. assert b[::2] == ['H', 'l', 'o', ' ', 'o', 'l', '!']
  172. assert b[2:5:2] == ['l', 'o']
  173. assert b[5:2:-1] == [',', 'o', 'l']
  174. assert b[5:2:-2] == [',', 'l']
  175. assert hex(-42) == '-0x2a'
  176. assert hex(42) == '0x2a'
  177. assert hex(0) == '0x0'
  178. assert hex(1) == '0x1'
  179. assert hex(15) == '0xf'
  180. assert hex(16) == '0x10'
  181. assert hex(255) == '0xff'
  182. assert hex(256) == '0x100'
  183. assert hex(257) == '0x101'
  184. assert hex(17) == '0x11'
  185. assert bin(-42) == '-0b101010'
  186. assert bin(42) == '0b101010'
  187. assert bin(0) == '0b0'
  188. assert bin(1) == '0b1'
  189. assert bin(15) == '0b1111'
  190. assert bin(16) == '0b10000'
  191. assert bin(255) == '0b11111111'
  192. assert bin(256) == '0b100000000'
  193. assert bin(257) == '0b100000001'
  194. assert bin(17) == '0b10001'
  195. assert '-'.join(['r', 'u', 'n', 'o', 'o', 'b']) == 'r-u-n-o-o-b'
  196. assert (1 != '1') is True
  197. assert (1 == '1') is False
  198. assert 1 == 1.0
  199. assert chr(97) == 'a'
  200. assert ord('a') == 97
  201. assert ord('🥕') == 0x1f955
  202. assert chr(0x1f955) == '🥕'
  203. assert ord('测') == 27979
  204. assert chr(27979) == '测'
  205. assert '测试'[0] == '测'
  206. assert '测试'[1] == '试'
  207. assert '测试'[-1] == '试'
  208. assert '测试'[-2] == '测'
  209. # test format()
  210. assert "Hello, {}!".format("World") == "Hello, World!"
  211. assert "{} {} {}".format("I", "love", "Python") == "I love Python"
  212. assert "{0} {1} {2}".format("I", "love", "Python") == "I love Python"
  213. assert "{2} {1} {0}".format("I", "love", "Python") == "Python love I"
  214. assert "{0}{1}{0}".format("abra", "cad") == "abracadabra"
  215. # assert "{k}={v}".format(k="key", v="value") == "key=value"
  216. # assert "{k}={k}".format(k="key") == "key=key"
  217. assert "{0}={1}".format('{0}', '{1}') == "{0}={1}"
  218. assert "{{{0}}}".format(1) == "{1}"
  219. assert "{0}{1}{1}".format(1, 2, 3) == "122"
  220. try:
  221. "{0}={1}}".format(1, 2)
  222. exit(1)
  223. except ValueError:
  224. pass
  225. assert "{{{}xxx{}x}}".format(1, 2) == "{1xxx2x}"
  226. assert "{{abc}}".format() == "{abc}"
  227. # test f-string
  228. assert f"{1+2}" == "3"
  229. # assert f"{1, 2, 3}" == "(1, 2, 3)"
  230. assert f"{(1, 2, 3)}" == "(1, 2, 3)"
  231. # stack=[1,2,3,4]
  232. # assert f"{stack[2:]}" == '[3, 4]'
  233. assert id('1' * 16) is not None
  234. assert id('1' * 15) is None