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:
@@ -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
|
||||
|
||||
42
engine/src/Resources/IResourceLoader.cpp
Normal file
42
engine/src/Resources/IResourceLoader.cpp
Normal 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
|
||||
Reference in New Issue
Block a user