|
9 | 9 | #include <regex> |
10 | 10 | #include <string> |
11 | 11 |
|
| 12 | +namespace |
| 13 | +{ |
| 14 | +class DefaultTestFileReader : public TestFileReader |
| 15 | +{ |
| 16 | +public: |
| 17 | + std::vector<uint8_t> Read(const char* path) override |
| 18 | + { |
| 19 | + std::vector<uint8_t> ret; |
| 20 | + |
| 21 | +#ifdef _WIN32 |
| 22 | + FILE* fp = nullptr; |
| 23 | + fopen_s(&fp, path, "rb"); |
| 24 | + |
| 25 | +#else |
| 26 | + FILE* fp = fopen(path, "rb"); |
| 27 | +#endif |
| 28 | + |
| 29 | + if (fp == nullptr) |
| 30 | + { |
| 31 | + std::cout << "Not found : " << path << std::endl; |
| 32 | + return ret; |
| 33 | + } |
| 34 | + |
| 35 | + fseek(fp, 0, SEEK_END); |
| 36 | + auto size = ftell(fp); |
| 37 | + fseek(fp, 0, SEEK_SET); |
| 38 | + |
| 39 | + ret.resize(size); |
| 40 | + fread(ret.data(), 1, size, fp); |
| 41 | + fclose(fp); |
| 42 | + |
| 43 | + return ret; |
| 44 | + } |
| 45 | +}; |
| 46 | +} // namespace |
| 47 | + |
12 | 48 | struct InternalTestHelper |
13 | 49 | { |
14 | 50 | std::string Root; |
15 | 51 | bool IsCaptureRequired = false; |
16 | 52 | std::map<std::string, std::function<void(LLGI::DeviceType)>> tests; |
| 53 | + std::shared_ptr<TestFileReader> FileReader; |
17 | 54 | }; |
18 | 55 |
|
19 | 56 | std::shared_ptr<InternalTestHelper> TestHelper::Get() |
@@ -66,6 +103,18 @@ ParsedArgs TestHelper::ParseArg(int argc, char* argv[]) |
66 | 103 | return args; |
67 | 104 | } |
68 | 105 |
|
| 106 | +std::shared_ptr<TestFileReader> TestHelper::GetFileReader() |
| 107 | +{ |
| 108 | + auto helper = Get(); |
| 109 | + if (helper->FileReader == nullptr) |
| 110 | + { |
| 111 | + helper->FileReader = std::make_shared<DefaultTestFileReader>(); |
| 112 | + } |
| 113 | + return helper->FileReader; |
| 114 | +} |
| 115 | + |
| 116 | +void TestHelper::SetFileReader(std::shared_ptr<TestFileReader> fileReader) { Get()->FileReader = fileReader; } |
| 117 | + |
69 | 118 | std::vector<uint8_t> TestHelper::CreateDummyTextureData(LLGI::Vec2I size, LLGI::TextureFormatType format) |
70 | 119 | { |
71 | 120 | std::vector<uint8_t> ret; |
@@ -149,34 +198,7 @@ std::vector<uint8_t> TestHelper::LoadData(const char* path) |
149 | 198 | return LoadDataWithoutRoot(path_.c_str()); |
150 | 199 | } |
151 | 200 |
|
152 | | -std::vector<uint8_t> TestHelper::LoadDataWithoutRoot(const char* path) |
153 | | -{ |
154 | | - std::vector<uint8_t> ret; |
155 | | - |
156 | | -#ifdef _WIN32 |
157 | | - FILE* fp = nullptr; |
158 | | - fopen_s(&fp, path, "rb"); |
159 | | - |
160 | | -#else |
161 | | - FILE* fp = fopen(path, "rb"); |
162 | | -#endif |
163 | | - |
164 | | - if (fp == nullptr) |
165 | | - { |
166 | | - std::cout << "Not found : " << path << std::endl; |
167 | | - return ret; |
168 | | - } |
169 | | - |
170 | | - fseek(fp, 0, SEEK_END); |
171 | | - auto size = ftell(fp); |
172 | | - fseek(fp, 0, SEEK_SET); |
173 | | - |
174 | | - ret.resize(size); |
175 | | - fread(ret.data(), 1, size, fp); |
176 | | - fclose(fp); |
177 | | - |
178 | | - return ret; |
179 | | -} |
| 201 | +std::vector<uint8_t> TestHelper::LoadDataWithoutRoot(const char* path) { return GetFileReader()->Read(path); } |
180 | 202 |
|
181 | 203 | void TestHelper::SetRoot(const char* root) |
182 | 204 | { |
|
0 commit comments