ksjsb/tests/test_dfp_cache.py
2026-07-30 20:25:56 +08:00

54 lines
1.8 KiB
Python

import hashlib
import unittest
from core.device_profile import DeviceProfileGenerator
from core.dfp_cache import (
PERSISTED_CACHE_KEYS,
build_persisted_cache_m,
java_hashmap_to_string,
persisted_cache_source_values,
uq0_s_a,
)
class DfpCacheTests(unittest.TestCase):
def test_uq0_s_a_matches_java_md5_prefix(self):
self.assertEqual(uq0_s_a("abc"), hashlib.md5(b"abc").hexdigest()[:16])
self.assertEqual(uq0_s_a(""), "")
self.assertEqual(uq0_s_a("KWE_N"), "KWE_N")
def test_java_hashmap_to_string_matches_fixed_dpf_key_order(self):
entries = [(key, f"{key}v") for key in PERSISTED_CACHE_KEYS]
self.assertEqual(
java_hashmap_to_string(entries),
(
"{k16=k16v, k27=k27v, k19=k19v, k29=k29v, k110=k110v, "
"k40=k40v, k105=k105v, k6=k6v, k8=k8v, k23=k23v}"
),
)
def test_persisted_cache_m_changes_with_stable_hardware_material(self):
profile = DeviceProfileGenerator(seed=1234).new_profile()
original = build_persisted_cache_m(profile)
profile.runtime_hints.keeper_seed += "x"
changed = build_persisted_cache_m(profile)
self.assertNotEqual(changed, original)
def test_source_values_match_java_cache_material_key_set(self):
profile = DeviceProfileGenerator(seed=1234).new_profile()
values = persisted_cache_source_values(profile)
self.assertEqual(tuple(values), PERSISTED_CACHE_KEYS)
self.assertEqual(values["k6"], "0")
self.assertEqual(values["k8"], profile.build_type)
self.assertEqual(values["k23"], profile.manufacturer)
self.assertEqual(values["k27"], profile.model)
self.assertEqual(values["k110"], profile.runtime_hints.keeper_seed)
if __name__ == "__main__":
unittest.main()