Files
AIC-Project/Tools/ModelTranslator/tests/test_rizom_unwrap.py
T

55 lines
1.9 KiB
Python

import os
import sys
import time
import unittest
from unittest import mock
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import rizom_unwrap as ru
class TestCandidatePaths(unittest.TestCase):
def test_priority_order(self):
self.assertEqual(ru.candidate_paths("a.exe", "b.exe", "c.exe"),
["a.exe", "b.exe", "c.exe", ru.DEFAULT_RIZOM])
def test_none_entries_skipped(self):
self.assertEqual(ru.candidate_paths(None, None, None), [ru.DEFAULT_RIZOM])
def test_env_only(self):
self.assertEqual(ru.candidate_paths(None, "b.exe", None),
["b.exe", ru.DEFAULT_RIZOM])
class TestFindRizomuv(unittest.TestCase):
def test_missing_exe_raises(self):
with mock.patch.dict(os.environ):
os.environ.pop("RIZOMUV_EXE", None)
with self.assertRaises(ru.RizomError):
ru.find_rizomuv("Z:/no/such/rizomuv.exe", use_registry=False,
default="Z:/no/default.exe")
def test_registry_value_is_real_exe_if_present(self):
p = ru.registry_rizom_path()
if p is None:
self.skipTest("本机无 RizomUV 注册表项")
self.assertTrue(os.path.isfile(p), "注册表返回值应是真实 exe:%s" % p)
class TestCall(unittest.TestCase):
def test_timeout_raises(self):
with self.assertRaises(ru.RizomError) as cm:
ru._call("Slow", lambda p: time.sleep(1.0), None, timeout=0.05)
self.assertIn("超时", str(cm.exception))
def test_error_dict_raises(self):
with self.assertRaises(ru.RizomError):
ru._call("Bad", lambda p: {"Error": {"Msg": "x", "Code": 1}}, {})
def test_normal_dict_passes_through(self):
self.assertEqual(ru._call("Ok", lambda p: {"Data": 1}, {}), {"Data": 1})
if __name__ == "__main__":
unittest.main()