#pragma once #include "Arduino.h" #include // Shared sequence counter — incremented by each instrumented mock call extern int g_call_seq; extern int g_prefs_putint_seq; // sequence position of last putInt call struct Preferences { std::map ints; std::map uints; std::map strings; bool _open = false; void begin(const char*, bool) { _open = true; } void end() { _open = false; } int32_t getInt(const char* key, int32_t def = 0) { auto it = ints.find(key); return it != ints.end() ? it->second : def; } void putInt(const char* key, int32_t val) { ints[key] = val; // Record the sequence of the FIRST putInt call (ordering test uses this // to verify NVS is written before epd_draw_image_from_file). if (g_prefs_putint_seq < 0) g_prefs_putint_seq = g_call_seq; g_call_seq++; } uint32_t getUInt(const char* key, uint32_t def = 0) { auto it = uints.find(key); return it != uints.end() ? it->second : def; } void putUInt(const char* key, uint32_t val) { uints[key] = val; } String getString(const char* key, const char* def = "") { auto it = strings.find(key); return it != strings.end() ? String(it->second) : String(def); } void putString(const char* key, const String& val) { strings[key] = val._s; } void clear() { ints.clear(); uints.clear(); strings.clear(); } };