import os import sys 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) if __name__ == "__main__": unittest.main()