043_str_splitlines.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. try:
  2. ''.splitlines(5)
  3. exit(1)
  4. except TypeError:
  5. pass
  6. try:
  7. ''.splitlines(5, 5)
  8. exit(1)
  9. except TypeError:
  10. pass
  11. assert ''.splitlines() == []
  12. assert ''.splitlines(False) == []
  13. assert ''.splitlines(True) == []
  14. assert '\n'.splitlines() == [''] # Line Feed
  15. assert '\r'.splitlines() == [''] # Carriage return
  16. assert '\r\n'.splitlines() == [''] # Line feed + carriage return
  17. assert '\v'.splitlines() == [''] # Line tabulation
  18. assert '\f'.splitlines() == [''] # Form field
  19. assert '\x1c'.splitlines() == [''] # File separator
  20. assert '\x1d'.splitlines() == [''] # Group separator
  21. assert '\x1e'.splitlines() == [''] # Record separator
  22. assert b'\xc2\x85'.decode().splitlines() == [''] # \u85 Next line (C1 control code)
  23. assert b'\xe2\x80\xa8'.decode().splitlines() == [''] # \u2028 Unicode line separator
  24. assert b'\xe2\x80\xa9'.decode().splitlines() == [''] # \u2029 Unicode paragraph separator
  25. assert '🥕'.splitlines() == ['🥕']
  26. all_ends = ['\n', '\r', '\r\n', '\v', '\f', '\x1c', '\x1d', '\x1e', b'\xc2\x85'.decode(), b'\xe2\x80\xa8'.decode(), b'\xe2\x80\xa9'.decode()]
  27. for eol in all_ends:
  28. assert (eol).splitlines() == ['']
  29. assert (eol).splitlines(False) == ['']
  30. assert (eol).splitlines(True) == [eol]
  31. for text in ['a', 'a b', 'abc\tdef', '🥕 and 🍋', '测试123测试']:
  32. assert (text).splitlines(False) == [text]
  33. assert (text).splitlines(True) == [text]
  34. assert (text + eol).splitlines(False) == [text]
  35. assert (text + eol).splitlines(True) == [text + eol]
  36. assert (eol + eol).splitlines(False) == ['', '']
  37. assert (eol + eol).splitlines(True) == [eol, eol]
  38. assert (eol + text).splitlines(False) == ['', text]
  39. assert (eol + text).splitlines(True) == [eol, text]
  40. assert (text + eol + eol + eol + eol).splitlines(False) == [text, '', '', '']
  41. assert (text + eol + eol + eol + eol).splitlines(True) == [text + eol, eol, eol, eol]
  42. assert (eol + eol + text + eol + eol + eol + eol).splitlines(False) == ['', '', text, '', '', '']
  43. assert (eol + eol + text + eol + eol + eol + eol).splitlines(True) == [eol, eol, text + eol, eol, eol, eol]
  44. assert (text + eol + text).splitlines(False) == [text, text]
  45. assert (text + eol + text).splitlines(True) == [text + eol, text]
  46. assert (text + eol + text + eol).splitlines(False) == [text, text]
  47. assert (text + eol + text + eol).splitlines(True) == [text + eol, text + eol]
  48. assert '\r\r\n'.splitlines() == ['', '']
  49. assert '\r\r\n'.splitlines(True) == ['\r', '\r\n']
  50. assert '\n\r\r\n'.splitlines() == ['', '', '']
  51. assert '\n\r\r\n'.splitlines(True) == ['\n', '\r', '\r\n']
  52. assert '\n\r\r\n\n'.splitlines() == ['', '', '', '']
  53. assert '\n\r\r\n\n'.splitlines(True) == ['\n', '\r', '\r\n', '\n']
  54. assert ''.join(all_ends).splitlines() == [''] * len(all_ends)
  55. assert ''.join(all_ends).splitlines(True) == all_ends