test01_cfg.py 4.4 KB

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