yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
mock_rom.h
Go to the documentation of this file.
1#ifndef YAZE_TEST_MOCKS_MOCK_ROM_H
2#define YAZE_TEST_MOCKS_MOCK_ROM_H
3
4#include <gmock/gmock.h>
5#include <gtest/gtest.h>
6
7#include "testing.h"
8
9#include "app/rom.h"
10
11namespace yaze {
12namespace test {
13
21class MockRom : public Rom {
22 public:
23 MockRom() = default;
24
25 // Override the only virtual method in Rom
26 MOCK_METHOD(absl::Status, WriteHelper, (const WriteAction&), (override));
27
33 absl::Status SetTestData(const std::vector<uint8_t>& data) {
34 auto status = LoadFromData(data, false); // Don't load Zelda3 specific data
35 if (status.ok()) {
36 test_data_loaded_ = true;
37 }
38 return status;
39 }
40
44 void SetObjectData(int object_id, const std::vector<uint8_t>& data) {
45 object_data_[object_id] = data;
46 }
47
51 void SetRoomData(int room_id, const std::vector<uint8_t>& data) {
52 room_data_[room_id] = data;
53 }
54
58 bool HasObjectData(int object_id) const {
59 return object_data_.find(object_id) != object_data_.end();
60 }
61
65 bool HasRoomData(int room_id) const {
66 return room_data_.find(room_id) != room_data_.end();
67 }
68
72 bool IsValid() const {
73 return test_data_loaded_ && is_loaded() && size() > 0;
74 }
75
79 const std::vector<uint8_t>& GetObjectData(int object_id) const {
80 static const std::vector<uint8_t> empty;
81 auto it = object_data_.find(object_id);
82 return (it != object_data_.end()) ? it->second : empty;
83 }
84
88 const std::vector<uint8_t>& GetRoomData(int room_id) const {
89 static const std::vector<uint8_t> empty;
90 auto it = room_data_.find(room_id);
91 return (it != room_data_.end()) ? it->second : empty;
92 }
93
94 private:
95 bool test_data_loaded_ = false;
96 std::map<int, std::vector<uint8_t>> object_data_;
97 std::map<int, std::vector<uint8_t>> room_data_;
98};
99
100} // namespace test
101} // namespace yaze
102
103#endif
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:71
absl::Status LoadFromData(const std::vector< uint8_t > &data, bool z3_load=true)
Definition rom.cc:381
auto vector() const
Definition rom.h:207
virtual absl::Status WriteHelper(const WriteAction &action)
Definition rom.h:156
auto data() const
Definition rom.h:203
auto size() const
Definition rom.h:202
bool is_loaded() const
Definition rom.h:197
Enhanced ROM for testing that behaves like a real ROM but with test data.
Definition mock_rom.h:21
std::map< int, std::vector< uint8_t > > room_data_
Definition mock_rom.h:97
std::map< int, std::vector< uint8_t > > object_data_
Definition mock_rom.h:96
bool IsValid() const
Check if the mock ROM is valid for testing.
Definition mock_rom.h:72
bool HasObjectData(int object_id) const
Check if object data has been set for testing.
Definition mock_rom.h:58
absl::Status SetTestData(const std::vector< uint8_t > &data)
Load test data into the ROM.
Definition mock_rom.h:33
const std::vector< uint8_t > & GetObjectData(int object_id) const
Get the stored object data for validation.
Definition mock_rom.h:79
bool HasRoomData(int room_id) const
Check if room data has been set for testing.
Definition mock_rom.h:65
void SetRoomData(int room_id, const std::vector< uint8_t > &data)
Store room-specific test data for validation.
Definition mock_rom.h:51
MOCK_METHOD(absl::Status, WriteHelper,(const WriteAction &),(override))
void SetObjectData(int object_id, const std::vector< uint8_t > &data)
Store object-specific test data for validation.
Definition mock_rom.h:44
const std::vector< uint8_t > & GetRoomData(int room_id) const
Get the stored room data for validation.
Definition mock_rom.h:88
Main namespace for the application.