test_translit.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # -*- coding: utf-8 -*-
  2. """
  3. Unit-tests for pytils.translit
  4. """
  5. import unittest
  6. import pytils
  7. class TranslitTestCase(unittest.TestCase):
  8. """
  9. Test case for pytils.translit
  10. """
  11. def ckTransl(self, in_, out_):
  12. """
  13. Checks translify
  14. """
  15. self.assertEqual(pytils.translit.translify(in_), out_)
  16. def ckDetransl(self, in_, out_):
  17. """
  18. Checks detranslify
  19. """
  20. self.assertEqual(pytils.translit.detranslify(in_), out_)
  21. def ckSlug(self, in_, out_):
  22. """
  23. Checks slugify
  24. """
  25. self.assertEqual(pytils.translit.slugify(in_), out_)
  26. def testTransliteration(self):
  27. """
  28. Unit-test for transliterations
  29. """
  30. self.ckTransl("тест", 'test')
  31. self.ckTransl("проверка", 'proverka')
  32. self.ckTransl("транслит", 'translit')
  33. self.ckTransl("правда ли это", 'pravda li eto')
  34. self.ckTransl("Щука", 'Schuka')
  35. def testTransliterationExceptions(self):
  36. """
  37. Unit-test for testing translify's exceptions
  38. """
  39. self.assertRaises(ValueError, pytils.translit.translify, '\u00bfHabla espa\u00f1ol?')
  40. def testDetransliteration(self):
  41. """
  42. Unit-test for detransliterations
  43. """
  44. self.ckDetransl('test', "тест")
  45. self.ckDetransl('proverka', "проверка")
  46. self.ckDetransl('translit', "транслит")
  47. self.ckDetransl('SCHuka', "Щука")
  48. self.ckDetransl('Schuka', "Щука")
  49. def testSlug(self):
  50. """
  51. Unit-test for slugs
  52. """
  53. self.ckSlug("ТеСт", 'test')
  54. self.ckSlug("Проверка связи", 'proverka-svyazi')
  55. self.ckSlug("me&you", 'me-and-you')
  56. self.ckSlug("и еще один тест", 'i-esche-odin-test')
  57. def testTranslifyAdditionalUnicodeSymbols(self):
  58. """
  59. Unit-test for testing additional unicode symbols
  60. """
  61. self.ckTransl("«Вот так вот»", '"Vot tak vot"')
  62. self.ckTransl("‘Или вот так’", "'Ili vot tak'")
  63. self.ckTransl("– Да…", "- Da...")
  64. def testSlugifyIssue10(self):
  65. """
  66. Unit-test for testing that bug#10 fixed
  67. """
  68. self.ckSlug("Проверка связи…", 'proverka-svyazi')
  69. self.ckSlug("Проверка\x0aсвязи 2", 'proverka-svyazi-2')
  70. self.ckSlug("Проверка\201связи 3", 'proverkasvyazi-3')
  71. def testSlugifyIssue15(self):
  72. """
  73. Unit-test for testing that bug#15 fixed
  74. """
  75. self.ckSlug("World of Warcraft", "world-of-warcraft")
  76. def testAdditionalDashesAndQuotes(self):
  77. """
  78. Unit-test for testing additional dashes (figure and em-dash)
  79. and quotes
  80. """
  81. self.ckSlug("Юнит-тесты — наше всё", 'yunit-testyi---nashe-vsyo')
  82. self.ckSlug("Юнит-тесты ‒ наше всё", 'yunit-testyi---nashe-vsyo')
  83. self.ckSlug("95−34", '95-34')
  84. self.ckTransl("Двигатель “Pratt&Whitney”", 'Dvigatel\' "Pratt&Whitney"')
  85. if __name__ == '__main__':
  86. unittest.main()