string_functions.py 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. __author__ = "gerbal"
  2. # unit test files should be named test_<your name here>.py
  3. # this ensures they will automatically be included in the
  4. # ./skulpt.py test or ./skulpt.py dist testing procedures
  5. #
  6. # These tests are a modification of the cPython buffer tests
  7. import unittest
  8. class string_functions(unittest.TestCase):
  9. def test_islower(self):
  10. self.assertFalse("".islower(), "islower")
  11. self.assertTrue("a".islower(), "islower")
  12. self.assertFalse("A".islower(), "islower")
  13. self.assertFalse("\n".islower(), "islower")
  14. self.assertTrue("abc".islower(), "islower")
  15. self.assertFalse("aBc".islower(), "islower")
  16. self.assertTrue("abc\n".islower(), "islower")
  17. # self.assertRaises(TypeError, "abc".islower, 42) #
  18. def test_isupper(self):
  19. self.assertFalse("".isupper())
  20. self.assertFalse("a".isupper())
  21. self.assertTrue("A".isupper())
  22. self.assertFalse("\n".isupper())
  23. self.assertTrue("ABC".isupper())
  24. self.assertFalse("AbC".isupper())
  25. self.assertTrue("ABC\n".isupper())
  26. # self.assertRaises(TypeError, "abc".isupper, 42) #
  27. def test_istitle(self):
  28. self.assertFalse("".istitle())
  29. self.assertFalse("a".istitle())
  30. self.assertTrue("A".istitle())
  31. self.assertFalse("\n".istitle()) ##
  32. self.assertTrue("A Titlecased Line".istitle()) ##
  33. self.assertTrue("A\nTitlecased Line".istitle()) ##
  34. self.assertTrue("A Titlecased, Line".istitle()) ##
  35. self.assertFalse("Not a capitalized String".istitle())
  36. self.assertFalse("Not\ta Titlecase String".istitle())
  37. self.assertFalse("Not--a Titlecase String".istitle())
  38. self.assertFalse("NOT".istitle())
  39. # self.assertRaises(TypeError, "abc".istitle, 42) #
  40. def test_isspace(self):
  41. self.assertFalse("".isspace())
  42. self.assertFalse("a".isspace())
  43. self.assertTrue(" ".isspace())
  44. self.assertTrue("\t".isspace())
  45. self.assertTrue("\r".isspace())
  46. self.assertTrue("\n".isspace())
  47. self.assertTrue(" \t\r\n".isspace())
  48. self.assertFalse(" \t\r\na".isspace())
  49. # self.assertRaises(TypeError, "abc".isspace, 42) #
  50. def test_isalpha(self):
  51. self.assertFalse("".isalpha())
  52. self.assertTrue("a".isalpha())
  53. self.assertTrue("A".isalpha())
  54. self.assertFalse("\n".isalpha())
  55. self.assertTrue("abc".isalpha())
  56. self.assertFalse("aBc123".isalpha())
  57. self.assertFalse("abc\n".isalpha())
  58. # self.assertRaises(TypeError, "abc".isalpha, 42)
  59. def test_isalnum(self):
  60. self.assertFalse("".isalnum())
  61. self.assertTrue("a".isalnum())
  62. self.assertTrue("A".isalnum())
  63. self.assertFalse("\n".isalnum())
  64. self.assertTrue("123abc456".isalnum())
  65. self.assertTrue("a1b3c".isalnum())
  66. self.assertFalse("aBc000 ".isalnum())
  67. self.assertFalse("abc\n".isalnum())
  68. # self.assertRaises(TypeError, "abc".isalnum, 42)
  69. def test_isdigit(self):
  70. self.assertFalse("".isdigit())
  71. self.assertFalse("a".isdigit())
  72. self.assertTrue("0".isdigit())
  73. self.assertTrue("0123456789".isdigit())
  74. self.assertFalse("0123456789a".isdigit())
  75. # self.assertRaises(TypeError, "abc".isdigit, 42)
  76. def test_lower(self):
  77. self.assertEqual("hello", "HeLLo".lower())
  78. self.assertEqual("hello", "hello".lower())
  79. # self.assertRaises(TypeError, "hello".lower, 42)
  80. def test_upper(self):
  81. self.assertEqual("HELLO", "HeLLo".upper())
  82. self.assertEqual("HELLO", "HELLO".upper())
  83. # self.assertRaises(TypeError, "hello".upper, 42)
  84. def test_capitalize(self):
  85. self.assertEqual(" hello ", " hello ".capitalize())
  86. self.assertEqual("Hello ", "Hello ".capitalize())
  87. self.assertEqual("Hello ", "hello ".capitalize())
  88. self.assertEqual("Aaaa", "aaaa".capitalize())
  89. self.assertEqual("Aaaa", "AaAa".capitalize())
  90. # self.assertRaises(TypeError, "hello".capitalize, 42)
  91. def test_ljust(self):
  92. self.assertEqual("abc ", "abc".ljust(10))
  93. self.assertEqual("abc ", "abc".ljust(6))
  94. self.assertEqual("abc", "abc".ljust(3))
  95. self.assertEqual("abc", "abc".ljust(2))
  96. self.assertEqual("abc*******", "abc".ljust(10, "*"))
  97. # self.assertRaises(TypeError, "abc".ljust)
  98. def test_rjust(self):
  99. self.assertEqual(" abc", "abc".rjust(10))
  100. self.assertEqual(" abc", "abc".rjust(6))
  101. self.assertEqual("abc", "abc".rjust(3))
  102. self.assertEqual("abc", "abc".rjust(2))
  103. self.assertEqual("*******abc", "abc".rjust(10, "*"))
  104. # self.assertRaises(TypeError, "abc".rjust)
  105. def test_center(self):
  106. self.assertEqual(" abc ", "abc".center(10))
  107. self.assertEqual(" abc ", "abc".center(6))
  108. self.assertEqual("abc", "abc".center(3))
  109. self.assertEqual("abc", "abc".center(2))
  110. self.assertEqual("***abc****", "abc".center(10, "*"))
  111. # self.assertRaises(TypeError, "abc".center)
  112. def test_swapcase(self):
  113. self.assertEqual("hEllO CoMPuTErS", "HeLLo cOmpUteRs".swapcase())
  114. # self.assertRaises(TypeError, "hello".swapcase, 42)
  115. def test_zfill(self):
  116. self.assertEqual("123", "123".zfill(2))
  117. self.assertEqual("123", "123".zfill(3))
  118. self.assertEqual("0123", "123".zfill(4))
  119. self.assertEqual("+123", "+123".zfill(3))
  120. self.assertEqual("+123", "+123".zfill(4))
  121. self.assertEqual("+0123", "+123".zfill(5))
  122. self.assertEqual("-123", "-123".zfill(3))
  123. self.assertEqual("-123", "-123".zfill(4))
  124. self.assertEqual("-0123", "-123".zfill(5))
  125. self.assertEqual("000", "".zfill(3))
  126. self.assertEqual("34", "34".zfill(1))
  127. self.assertEqual("0034", "34".zfill(4))
  128. # self.assertRaises(TypeError, "123".zfill)
  129. def test_expandtabs(self):
  130. self.assertEqual("abc\rab def\ng hi", "abc\rab\tdef\ng\thi".expandtabs())
  131. self.assertEqual("abc\rab def\ng hi", "abc\rab\tdef\ng\thi".expandtabs(8))
  132. self.assertEqual("abc\rab def\ng hi", "abc\rab\tdef\ng\thi".expandtabs(4))
  133. self.assertEqual("abc\r\nab def\ng hi", "abc\r\nab\tdef\ng\thi".expandtabs())
  134. self.assertEqual("abc\r\nab def\ng hi", "abc\r\nab\tdef\ng\thi".expandtabs(8))
  135. self.assertEqual("abc\r\nab def\ng hi", "abc\r\nab\tdef\ng\thi".expandtabs(4))
  136. self.assertEqual("abc\r\nab\r\ndef\ng\r\nhi", "abc\r\nab\r\ndef\ng\r\nhi".expandtabs(4))
  137. # kwargs only supported in python 3
  138. # self.assertEqual("abc\rab def\ng hi",
  139. # "abc\rab\tdef\ng\thi".expandtabs(tabsize=8))
  140. # self.assertEqual("abc\rab def\ng hi",
  141. # "abc\rab\tdef\ng\thi".expandtabs(tabsize=4))
  142. self.assertEqual(" a\n b", " \ta\n\tb".expandtabs(1))
  143. # self.assertRaises(TypeError, "hello".expandtabs, 42, 42)
  144. # # This test is only valid when sizeof(int) == sizeof(void*) == 4.
  145. # if sys.maxsize < (1 << 32) and struct.calcsize("P") == 4:
  146. # self.assertRaises(OverflowError,
  147. # "\ta\n\tb".expandtabs, sys.maxsize)
  148. def test_title(self):
  149. self.assertEqual(" Hello ", " hello ".title())
  150. self.assertEqual("Hello ", "hello ".title())
  151. self.assertEqual("Hello ", "Hello ".title())
  152. self.assertEqual("Format This As Title String",
  153. "fOrMaT thIs aS titLe String".title())
  154. self.assertEqual("Format,This-As*Title;String",
  155. "fOrMaT,thIs-aS*titLe;String".title())
  156. self.assertEqual("Getint", "getInt".title())
  157. # self.assertRaises(TypeError, "hello".title, 42)
  158. def test_splitlines(self):
  159. self.assertEqual(["abc", "def", "", "ghi"],
  160. "abc\ndef\n\rghi".splitlines())
  161. self.assertEqual(["abc", "def", "", "ghi"],
  162. "abc\ndef\n\r\nghi".splitlines())
  163. self.assertEqual(["abc", "def", "ghi"],
  164. "abc\ndef\r\nghi".splitlines())
  165. self.assertEqual(["abc", "def", "ghi"],
  166. "abc\ndef\r\nghi\n".splitlines())
  167. self.assertEqual(["abc", "def", "ghi", ""],
  168. "abc\ndef\r\nghi\n\r".splitlines())
  169. self.assertEqual(["", "abc", "def", "ghi", ""],
  170. "\nabc\ndef\r\nghi\n\r".splitlines())
  171. self.assertEqual(["", "abc", "def", "ghi", ""],
  172. "\nabc\ndef\r\nghi\n\r".splitlines(False))
  173. self.assertEqual(["\n", "abc\n", "def\r\n", "ghi\n", "\r"],
  174. "\nabc\ndef\r\nghi\n\r".splitlines(True))
  175. # self.assertEqual(["", "abc", "def", "ghi", ""],
  176. # "\nabc\ndef\r\nghi\n\r".splitlines(keepends=False))
  177. # self.assertEqual(["\n", "abc\n", "def\r\n", "ghi\n", "\r"],
  178. # "\nabc\ndef\r\nghi\n\r".splitlines(keepends=True))
  179. # self.assertRaises(TypeError, "abc".splitlines, 42, 42)
  180. if __name__ == "__main__":
  181. unittest.main()