35 lines
1.1 KiB
Python
Executable File
35 lines
1.1 KiB
Python
Executable File
#!/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.assertIn(b"invalid EUC-JP", result.stderr)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|