blob: 69ed3876a088a92cd54a1078dad8b01ac63b3219 [file] [log] [blame]
// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SETTINGSD_MOCK_NVRAM_H_
#define SETTINGSD_MOCK_NVRAM_H_
#include "settingsd/nvram.h"
#include <stdint.h>
#include <unordered_map>
#include <vector>
#include <base/macros.h>
namespace settingsd {
// A mock NVRam implementation that lets the test define NVRam spaces
// arbitrarily.
class MockNVRam : public NVRam {
public:
struct Space {
bool locked_for_reading_;
bool locked_for_writing_;
std::vector<uint8_t> data_;
};
MockNVRam();
~MockNVRam() override;
Space* GetSpace(uint32_t index);
void DeleteSpace(uint32_t index);
// NVRam:
Status IsSpaceLocked(uint32_t index,
bool* locked_for_reading,
bool* locked_for_writing) const override;
Status ReadSpace(uint32_t index, std::vector<uint8_t>* data) const override;
private:
std::unordered_map<uint32_t, Space> spaces_;
DISALLOW_COPY_AND_ASSIGN(MockNVRam);
};
} // namespace settingsd
#endif // SETTINGSD_MOCK_NVRAM_H_