test01_cfg.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. from os import environ, unlink
  2. from unittest import TestCase
  3. from scriptshifter.tables import get_language
  4. def setUpModule():
  5. from scriptshifter.tables import init_db
  6. init_db()
  7. def tearDownModule():
  8. unlink(environ["TXL_DB_PATH"])
  9. class TestConfig(TestCase):
  10. """ Test configuration parsing. """
  11. def test_ordering(self):
  12. tbl = get_language("ordering")
  13. exp_order = ["ABCD", "AB", "A", "BCDE", "BCD", "BEFGH", "B"]
  14. self.assertEqual(
  15. [s[0] for s in tbl["roman_to_script"]["map"]], exp_order)
  16. class TestOverride(TestCase):
  17. """ Test configuration overrides. """
  18. def test_override_map(self):
  19. tbl = get_language("inherited")
  20. self.assertEqual(tbl["label"], "Test inheritance leaf file")
  21. self.assertEqual(tbl["marc_code"], "inh")
  22. self.assertEqual(tbl["description"], "Test description.")
  23. # Entries are additive.
  24. self.assertEqual(
  25. tbl["roman_to_script"]["ignore"],
  26. ("Fritter my wig", "Hi", "Ho", "Thing-um-a-jig"))
  27. self.assertEqual(
  28. tbl["roman_to_script"]["map"],
  29. (
  30. ("A", "a"),
  31. ("B", "b"),
  32. ("C", "c"),
  33. ("D", "d"),
  34. ("E", "e"),
  35. ("F", "f"),
  36. ("G", "g"),
  37. ("H", "h"),
  38. ("I", "i"),
  39. ("J", "j"),
  40. ("K", "k"),
  41. ("L", "l"),
  42. ("M", "m"),
  43. ("N", "n"),
  44. ("O", "o"),
  45. ("P", "p"),
  46. ("Q", "q"),
  47. ("R", "r"),
  48. ("S", "s"),
  49. ("T", "t"),
  50. ("U", "u"),
  51. ("V", "v"),
  52. ("W", "w"),
  53. ("X", "x"),
  54. ("Y", "y"),
  55. ("Z", "z"),
  56. ))
  57. # First 4 entries are overridden multiple times.
  58. self.assertEqual(
  59. tbl["script_to_roman"]["map"],
  60. (
  61. ("a", "9"),
  62. ("b", "0"),
  63. ("c", "7"),
  64. ("d", "8"),
  65. ("e", "E"),
  66. ("f", "F"),
  67. ("g", "G"),
  68. ("h", "H"),
  69. ("i", "I"),
  70. ("j", "J"),
  71. ("k", "K"),
  72. ("l", "L"),
  73. ("m", "M"),
  74. ("n", "N"),
  75. ("o", "O"),
  76. ("p", "P"),
  77. ("q", "Q"),
  78. ("r", "R"),
  79. ("s", "S"),
  80. ("t", "T"),
  81. ("u", "U"),
  82. ("v", "V"),
  83. ("w", "W"),
  84. ("x", "X"),
  85. ("y", "Y"),
  86. ("z", "Z"),
  87. ))
  88. class TestHooks(TestCase):
  89. """ Test parsing of hook functions. """
  90. def test_rot3(self):
  91. tbl = get_language("rot3")
  92. self.assertEqual(
  93. tbl["script_to_roman"]["hooks"],
  94. {
  95. "begin_input_token": [
  96. {
  97. "module_name": "test",
  98. "fn_name": "rotate",
  99. "kwargs": {"n": -3},
  100. }
  101. ]
  102. }
  103. )
  104. class TestDoubleCaps(TestCase):
  105. """ Test double capitalization configuration. """
  106. def test_dcaps_base1(self):
  107. cap_base1 = get_language("cap_base1")
  108. assert "z︠h︡" in cap_base1["script_to_roman"]["double_cap"]
  109. def test_dcaps_base2(self):
  110. cap_base2 = get_language("cap_base2")
  111. dcap = cap_base2["script_to_roman"]["double_cap"]
  112. assert len(dcap) == 2
  113. assert "z︠h︡" in dcap
  114. assert "i︠o︡" in dcap
  115. def test_dcaps_inherited(self):
  116. cap_inherited = get_language("cap_inherited")
  117. dcap = cap_inherited["script_to_roman"]["double_cap"]
  118. assert len(dcap) == 1
  119. assert "z︠h︡" in dcap
  120. assert "i︠o︡" not in dcap