test(Resources): Add comprehensive resource system tests (8 new test files, +48 test cases)

- Add Shader tests (8 test cases)
- Add Material tests (13 test cases)
- Add FileArchive tests (7 test cases)
- Add Loader tests for Texture, Mesh, Audio, Shader, Material (4 tests each)
- Implement IResourceLoader.cpp with ReadFileData and GetExtension
- Update CMakeLists.txt to include new test files and source
This commit is contained in:
2026-03-18 00:09:06 +08:00
parent 640557cbb5
commit 02ca59edf6
11 changed files with 535 additions and 0 deletions

View File

@@ -176,6 +176,7 @@ add_library(XCEngine STATIC
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceCache.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/AsyncLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceTypes.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/IResourceLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Texture.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Mesh.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/TextureLoader.cpp

View File

@@ -0,0 +1,42 @@
#include "XCEngine/Resources/IResourceLoader.h"
#include <fstream>
namespace XCEngine {
namespace Resources {
Containers::Array<Core::uint8> IResourceLoader::ReadFileData(const Containers::String& path) {
Containers::Array<Core::uint8> data;
std::ifstream file(path.CStr(), std::ios::binary | std::ios::ate);
if (!file.is_open()) {
return data;
}
std::streamsize size = file.tellg();
file.seekg(0, std::ios::beg);
data.Resize(static_cast<size_t>(size));
if (!file.read(reinterpret_cast<char*>(data.Data()), size)) {
data.Clear();
}
return data;
}
Containers::String IResourceLoader::GetExtension(const Containers::String& path) {
Containers::String ext;
size_t dotPos = Containers::String::npos;
for (size_t i = path.Length(); i > 0; --i) {
if (path[i - 1] == '.') {
dotPos = i - 1;
break;
}
}
if (dotPos != Containers::String::npos) {
ext = path.Substring(dotPos + 1);
}
return ext;
}
} // namespace Resources
} // namespace XCEngine