feat: complete Chinese tutorial text and layout validation
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
"""Complete tutorial mapping coverage and engine layout regression."""
|
||||
import json
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
from test_cjk_layout import layout
|
||||
|
||||
|
||||
class CompleteTutorialTests(unittest.TestCase):
|
||||
def test_remaining_pages_fit_without_orphan_punctuation(self):
|
||||
mapping = json.loads(Path(__file__).with_name('tutorial_cn.json').read_text(encoding='utf-8'))
|
||||
for original, translated in list(mapping.items())[12:]:
|
||||
for width in (360, 400, 480):
|
||||
with self.subTest(original=original[:40], width=width):
|
||||
lines, _ = layout(translated, width=width, alignment=2)
|
||||
self.assertTrue(lines)
|
||||
self.assertLessEqual(lines[-1][2] + 12, 140)
|
||||
for raw, x, y in lines:
|
||||
text = raw.decode('gb2312')
|
||||
self.assertNotIn(text[0], ',。;:、!?)”')
|
||||
pixels = sum(5 if c == ' ' else 8 if ord(c) < 128 else 12 for c in text)
|
||||
self.assertEqual(x, width // 2 - pixels // 2)
|
||||
|
||||
def test_translations_cover_core_controls_and_constraints(self):
|
||||
mapping = json.loads(Path(__file__).with_name('tutorial_cn.json').read_text(encoding='utf-8'))
|
||||
text = '\n'.join(mapping.values())
|
||||
for term in ['PgUp', 'PgDn', 'Tab', '空格', '50%', 'E 键', 'F12', 'Alt', '0%', 'P 键', 'Esc']:
|
||||
self.assertIn(term, text)
|
||||
self.assertEqual(sum(k.startswith('\fTo use a charged spell') for k in mapping), 1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user