HardFOC Core
API reference
Loading...
Searching...
No Matches
MockNvs.h
Go to the documentation of this file.
1
15#pragma once
16
17#include "base/BaseNvs.h"
18
19#include <cstdint>
20#include <map>
21#include <string>
22#include <vector>
23
24namespace hf::host {
25
26class MockNvs : public BaseNvs {
27public:
28 explicit MockNvs(const char* namespace_name = "mock") noexcept;
29 ~MockNvs() noexcept override = default;
30
31 // ── BaseNvs ───────────────────────────────────────────────────────────
32 hf_nvs_err_t Initialize() noexcept override { return init_result_; }
33 hf_nvs_err_t Deinitialize() noexcept override { return hf_nvs_err_t::NVS_SUCCESS; }
34 hf_nvs_err_t SetU32(const char* key, hf_u32_t value) noexcept override;
35 hf_nvs_err_t GetU32(const char* key, hf_u32_t& value) noexcept override;
36 hf_nvs_err_t SetString(const char* key, const char* value) noexcept override;
37 hf_nvs_err_t GetString(const char* key, char* buffer, size_t buffer_size,
38 size_t* actual_size = nullptr) noexcept override;
39 hf_nvs_err_t SetBlob(const char* key, const void* data, size_t data_size) noexcept override;
40 hf_nvs_err_t GetBlob(const char* key, void* buffer, size_t buffer_size,
41 size_t* actual_size = nullptr) noexcept override;
42 hf_nvs_err_t EraseKey(const char* key) noexcept override;
43 hf_nvs_err_t Commit() noexcept override;
44 bool KeyExists(const char* key) noexcept override;
45 hf_nvs_err_t GetSize(const char* key, size_t& size) noexcept override;
46 const char* GetDescription() const noexcept override { return "MockNvs"; }
47 size_t GetMaxKeyLength() const noexcept override { return kMaxKeyLength; }
48 size_t GetMaxValueSize() const noexcept override { return kMaxValueSize; }
49
50 // ── Scripting ─────────────────────────────────────────────────────────
51 static constexpr size_t kMaxKeyLength = 15;
52 static constexpr size_t kMaxValueSize = 4000;
53 void SetInitializeResult(hf_nvs_err_t result) noexcept { init_result_ = result; }
54 void FailNext(hf_nvs_err_t error, size_t count = 1) noexcept;
55 void SetReadOnly(bool read_only = true) noexcept { read_only_ = read_only; }
56 void Clear() noexcept { entries_.clear(); }
57
58 // ── Inspection ────────────────────────────────────────────────────────
59 [[nodiscard]] int CommitCalls() const noexcept { return commit_calls_; }
60 [[nodiscard]] size_t KeyCount() const noexcept { return entries_.size(); }
61
62private:
63 enum class Type : uint8_t { U32, String, Blob };
64 struct Entry {
66 std::vector<uint8_t> bytes;
67 };
68 hf_nvs_err_t CheckKey(const char* key) const noexcept;
69 bool ConsumeFailure(hf_nvs_err_t& error) noexcept;
70 hf_nvs_err_t Store(const char* key, Type type, const void* data, size_t size) noexcept;
71
72 hf_nvs_err_t init_result_{hf_nvs_err_t::NVS_SUCCESS};
73 std::map<std::string, Entry> entries_;
74 hf_nvs_err_t fail_error_{hf_nvs_err_t::NVS_ERR_FAILURE};
75 size_t fail_count_{0};
76 bool read_only_{false};
78};
79
80} // namespace hf::host
Definition MockNvs.h:26
int CommitCalls() const noexcept
Definition MockNvs.h:59
hf_nvs_err_t fail_error_
Definition MockNvs.h:74
size_t fail_count_
Definition MockNvs.h:75
const char * GetDescription() const noexcept override
Definition MockNvs.h:46
hf_nvs_err_t SetU32(const char *key, hf_u32_t value) noexcept override
Definition MockNvs.cpp:63
hf_nvs_err_t GetString(const char *key, char *buffer, size_t buffer_size, size_t *actual_size=nullptr) noexcept override
Definition MockNvs.cpp:87
void SetReadOnly(bool read_only=true) noexcept
Definition MockNvs.h:55
hf_nvs_err_t EraseKey(const char *key) noexcept override
Definition MockNvs.cpp:142
int commit_calls_
Definition MockNvs.h:77
void Clear() noexcept
Definition MockNvs.h:56
bool read_only_
Definition MockNvs.h:76
size_t GetMaxValueSize() const noexcept override
Definition MockNvs.h:48
hf_nvs_err_t GetU32(const char *key, hf_u32_t &value) noexcept override
Definition MockNvs.cpp:67
hf_nvs_err_t SetBlob(const char *key, const void *data, size_t data_size) noexcept override
Definition MockNvs.cpp:111
bool KeyExists(const char *key) noexcept override
Definition MockNvs.cpp:162
hf_nvs_err_t Commit() noexcept override
Definition MockNvs.cpp:153
static constexpr size_t kMaxKeyLength
Same limit as ESP-IDF NVS.
Definition MockNvs.h:51
void SetInitializeResult(hf_nvs_err_t result) noexcept
Definition MockNvs.h:53
void FailNext(hf_nvs_err_t error, size_t count=1) noexcept
Definition MockNvs.cpp:16
static constexpr size_t kMaxValueSize
Definition MockNvs.h:52
hf_nvs_err_t CheckKey(const char *key) const noexcept
Definition MockNvs.cpp:30
bool ConsumeFailure(hf_nvs_err_t &error) noexcept
Definition MockNvs.cpp:21
Type
Definition MockNvs.h:63
hf_nvs_err_t Store(const char *key, Type type, const void *data, size_t size) noexcept
Definition MockNvs.cpp:44
hf_nvs_err_t Deinitialize() noexcept override
Definition MockNvs.h:33
hf_nvs_err_t GetSize(const char *key, size_t &size) noexcept override
Definition MockNvs.cpp:166
hf_nvs_err_t GetBlob(const char *key, void *buffer, size_t buffer_size, size_t *actual_size=nullptr) noexcept override
Definition MockNvs.cpp:118
~MockNvs() noexcept override=default
hf_nvs_err_t SetString(const char *key, const char *value) noexcept override
Definition MockNvs.cpp:80
std::map< std::string, Entry > entries_
Definition MockNvs.h:73
hf_nvs_err_t Initialize() noexcept override
Definition MockNvs.h:32
size_t KeyCount() const noexcept
Definition MockNvs.h:60
size_t GetMaxKeyLength() const noexcept override
Definition MockNvs.h:47
hf_nvs_err_t init_result_
Definition MockNvs.h:72
Definition FakeClock.cpp:21
Definition MockNvs.h:64
Type type
Definition MockNvs.h:65
std::vector< uint8_t > bytes
Definition MockNvs.h:66