// 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_
