// 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 FIDES_MOCK_NVRAM_H_
#define FIDES_MOCK_NVRAM_H_

#include "fides/nvram.h"

#include <stdint.h>

#include <unordered_map>
#include <vector>

#include <base/macros.h>

namespace fides {

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

#endif  // FIDES_MOCK_NVRAM_H_
