test01_cfg.py 4.1 KB

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