#!/usr/bin/env python3 import subprocess import tempfile import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] CONVERTER = ROOT / "map" / "skk2ktrans" FIXTURES = Path(__file__).parent / "data" / "skk" class Skk2KtransTest(unittest.TestCase): def test_euc_jp_conversion_is_stable_and_literal(self): source = (FIXTURES / "source.skk.utf8").read_text(encoding="utf-8") expected = (FIXTURES / "expected.tsv").read_bytes() with tempfile.TemporaryDirectory() as directory: input_path = Path(directory) / "source.skk" input_path.write_bytes(source.encode("euc_jp")) result = subprocess.run( [CONVERTER, input_path], capture_output=True, check=False) self.assertEqual(result.returncode, 0, result.stderr.decode()) self.assertEqual(result.stdout, expected) def test_invalid_euc_jp_is_rejected(self): result = subprocess.run( [CONVERTER], input=b"\xff\xff\n", capture_output=True, check=False) self.assertNotEqual(result.returncode, 0) self.assertTrue(result.stderr) def test_escaped_candidate_is_rejected(self): source = b"key /escaped\\/slash/\n" result = subprocess.run( [CONVERTER], input=source, capture_output=True, check=False) self.assertNotEqual(result.returncode, 0) self.assertIn(b"escaped candidates are unsupported", result.stderr) if __name__ == "__main__": unittest.main()