54 lines
1.8 KiB
Python
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()
|