mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-12-27 12:31:50 +00:00
chore: add simple system tests for remaining games
This commit is contained in:
@@ -1,12 +1,16 @@
|
||||
#include "Game/IW3/GameAssetPoolIW3.h"
|
||||
#include "Linker.h"
|
||||
#include "OatTestPaths.h"
|
||||
#include "SystemTestsPaths.h"
|
||||
#include "ZoneLoading.h"
|
||||
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <filesystem>
|
||||
#include <format>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
using namespace std::literals;
|
||||
|
||||
namespace
|
||||
@@ -41,5 +45,18 @@ namespace
|
||||
const auto linkerResult = linker->Start();
|
||||
|
||||
REQUIRE(linkerResult);
|
||||
|
||||
const auto expectedZonePath = (fs::path(outputPath) / "SimpleZoneIW3.ff").string();
|
||||
auto maybeZone = ZoneLoading::LoadZone(expectedZonePath, std::nullopt);
|
||||
REQUIRE(maybeZone);
|
||||
|
||||
auto zone = std::move(*maybeZone);
|
||||
auto pools = dynamic_cast<GameAssetPoolIW3*>(zone->m_pools.get());
|
||||
|
||||
REQUIRE(zone->m_game_id == GameId::IW3);
|
||||
REQUIRE(zone->m_platform == GamePlatform::PC);
|
||||
REQUIRE(zone->m_name == "SimpleZoneIW3");
|
||||
REQUIRE(pools->GetTotalAssetCount() == 1);
|
||||
REQUIRE(pools->m_raw_file->GetAsset("SimpleZone.txt"));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
62
test/SystemTests/Game/IW4/SimpleZoneIW4.cpp
Normal file
62
test/SystemTests/Game/IW4/SimpleZoneIW4.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "Game/IW4/GameAssetPoolIW4.h"
|
||||
#include "Linker.h"
|
||||
#include "OatTestPaths.h"
|
||||
#include "SystemTestsPaths.h"
|
||||
#include "ZoneLoading.h"
|
||||
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <filesystem>
|
||||
#include <format>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
using namespace std::literals;
|
||||
|
||||
namespace
|
||||
{
|
||||
TEST_CASE("Simple Zone(IW4)", "[iw4][system][simple]")
|
||||
{
|
||||
const auto assetSearchPath = (oat::paths::GetSystemTestsDirectory() / "Game/IW4/simple").string();
|
||||
const auto sourceSearchPath = (oat::paths::GetSystemTestsDirectory() / "Game/IW4/simple").string();
|
||||
const auto outputPath = oat::paths::GetTempDirectory("iw4_simple").string();
|
||||
|
||||
const char* argStrings[]{
|
||||
"SystemTests", // bin
|
||||
"--verbose",
|
||||
"--asset-search-path",
|
||||
assetSearchPath.c_str(),
|
||||
"--source-search-path",
|
||||
sourceSearchPath.c_str(),
|
||||
"--output-folder",
|
||||
outputPath.c_str(),
|
||||
"SimpleZoneIW4",
|
||||
};
|
||||
|
||||
LinkerArgs args;
|
||||
|
||||
bool shouldContinue = true;
|
||||
const auto couldParseArgs = args.ParseArgs(std::extent_v<decltype(argStrings)>, argStrings, shouldContinue);
|
||||
|
||||
REQUIRE(couldParseArgs);
|
||||
REQUIRE(shouldContinue);
|
||||
|
||||
const auto linker = Linker::Create(std::move(args));
|
||||
const auto linkerResult = linker->Start();
|
||||
|
||||
REQUIRE(linkerResult);
|
||||
|
||||
const auto expectedZonePath = (fs::path(outputPath) / "SimpleZoneIW4.ff").string();
|
||||
auto maybeZone = ZoneLoading::LoadZone(expectedZonePath, std::nullopt);
|
||||
REQUIRE(maybeZone);
|
||||
|
||||
auto zone = std::move(*maybeZone);
|
||||
auto pools = dynamic_cast<GameAssetPoolIW4*>(zone->m_pools.get());
|
||||
|
||||
REQUIRE(zone->m_game_id == GameId::IW4);
|
||||
REQUIRE(zone->m_platform == GamePlatform::PC);
|
||||
REQUIRE(zone->m_name == "SimpleZoneIW4");
|
||||
REQUIRE(pools->GetTotalAssetCount() == 1);
|
||||
REQUIRE(pools->m_raw_file->GetAsset("SimpleZone.txt"));
|
||||
}
|
||||
} // namespace
|
||||
1
test/SystemTests/Game/IW4/simple/SimpleZone.txt
Normal file
1
test/SystemTests/Game/IW4/simple/SimpleZone.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a simple zone.
|
||||
4
test/SystemTests/Game/IW4/simple/SimpleZoneIW4.zone
Normal file
4
test/SystemTests/Game/IW4/simple/SimpleZoneIW4.zone
Normal file
@@ -0,0 +1,4 @@
|
||||
>game,IW4
|
||||
|
||||
rawfile,SimpleZone.txt
|
||||
|
||||
62
test/SystemTests/Game/IW5/SimpleZoneIW5.cpp
Normal file
62
test/SystemTests/Game/IW5/SimpleZoneIW5.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "Game/IW5/GameAssetPoolIW5.h"
|
||||
#include "Linker.h"
|
||||
#include "OatTestPaths.h"
|
||||
#include "SystemTestsPaths.h"
|
||||
#include "ZoneLoading.h"
|
||||
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <filesystem>
|
||||
#include <format>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
using namespace std::literals;
|
||||
|
||||
namespace
|
||||
{
|
||||
TEST_CASE("Simple Zone(IW5)", "[iw5][system][simple]")
|
||||
{
|
||||
const auto assetSearchPath = (oat::paths::GetSystemTestsDirectory() / "Game/IW5/simple").string();
|
||||
const auto sourceSearchPath = (oat::paths::GetSystemTestsDirectory() / "Game/IW5/simple").string();
|
||||
const auto outputPath = oat::paths::GetTempDirectory("iw5_simple").string();
|
||||
|
||||
const char* argStrings[]{
|
||||
"SystemTests", // bin
|
||||
"--verbose",
|
||||
"--asset-search-path",
|
||||
assetSearchPath.c_str(),
|
||||
"--source-search-path",
|
||||
sourceSearchPath.c_str(),
|
||||
"--output-folder",
|
||||
outputPath.c_str(),
|
||||
"SimpleZoneIW5",
|
||||
};
|
||||
|
||||
LinkerArgs args;
|
||||
|
||||
bool shouldContinue = true;
|
||||
const auto couldParseArgs = args.ParseArgs(std::extent_v<decltype(argStrings)>, argStrings, shouldContinue);
|
||||
|
||||
REQUIRE(couldParseArgs);
|
||||
REQUIRE(shouldContinue);
|
||||
|
||||
const auto linker = Linker::Create(std::move(args));
|
||||
const auto linkerResult = linker->Start();
|
||||
|
||||
REQUIRE(linkerResult);
|
||||
|
||||
const auto expectedZonePath = (fs::path(outputPath) / "SimpleZoneIW5.ff").string();
|
||||
auto maybeZone = ZoneLoading::LoadZone(expectedZonePath, std::nullopt);
|
||||
REQUIRE(maybeZone);
|
||||
|
||||
auto zone = std::move(*maybeZone);
|
||||
auto pools = dynamic_cast<GameAssetPoolIW5*>(zone->m_pools.get());
|
||||
|
||||
REQUIRE(zone->m_game_id == GameId::IW5);
|
||||
REQUIRE(zone->m_platform == GamePlatform::PC);
|
||||
REQUIRE(zone->m_name == "SimpleZoneIW5");
|
||||
REQUIRE(pools->GetTotalAssetCount() == 1);
|
||||
REQUIRE(pools->m_raw_file->GetAsset("SimpleZone.txt"));
|
||||
}
|
||||
} // namespace
|
||||
1
test/SystemTests/Game/IW5/simple/SimpleZone.txt
Normal file
1
test/SystemTests/Game/IW5/simple/SimpleZone.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a simple zone.
|
||||
4
test/SystemTests/Game/IW5/simple/SimpleZoneIW5.zone
Normal file
4
test/SystemTests/Game/IW5/simple/SimpleZoneIW5.zone
Normal file
@@ -0,0 +1,4 @@
|
||||
>game,IW5
|
||||
|
||||
rawfile,SimpleZone.txt
|
||||
|
||||
62
test/SystemTests/Game/T5/SimpleZoneT5.cpp
Normal file
62
test/SystemTests/Game/T5/SimpleZoneT5.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "Game/T5/GameAssetPoolT5.h"
|
||||
#include "Linker.h"
|
||||
#include "OatTestPaths.h"
|
||||
#include "SystemTestsPaths.h"
|
||||
#include "ZoneLoading.h"
|
||||
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <filesystem>
|
||||
#include <format>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
using namespace std::literals;
|
||||
|
||||
namespace
|
||||
{
|
||||
TEST_CASE("Simple Zone(T5)", "[t5][system][simple]")
|
||||
{
|
||||
const auto assetSearchPath = (oat::paths::GetSystemTestsDirectory() / "Game/T5/simple").string();
|
||||
const auto sourceSearchPath = (oat::paths::GetSystemTestsDirectory() / "Game/T5/simple").string();
|
||||
const auto outputPath = oat::paths::GetTempDirectory("t5_simple").string();
|
||||
|
||||
const char* argStrings[]{
|
||||
"SystemTests", // bin
|
||||
"--verbose",
|
||||
"--asset-search-path",
|
||||
assetSearchPath.c_str(),
|
||||
"--source-search-path",
|
||||
sourceSearchPath.c_str(),
|
||||
"--output-folder",
|
||||
outputPath.c_str(),
|
||||
"SimpleZoneT5",
|
||||
};
|
||||
|
||||
LinkerArgs args;
|
||||
|
||||
bool shouldContinue = true;
|
||||
const auto couldParseArgs = args.ParseArgs(std::extent_v<decltype(argStrings)>, argStrings, shouldContinue);
|
||||
|
||||
REQUIRE(couldParseArgs);
|
||||
REQUIRE(shouldContinue);
|
||||
|
||||
const auto linker = Linker::Create(std::move(args));
|
||||
const auto linkerResult = linker->Start();
|
||||
|
||||
REQUIRE(linkerResult);
|
||||
|
||||
const auto expectedZonePath = (fs::path(outputPath) / "SimpleZoneT5.ff").string();
|
||||
auto maybeZone = ZoneLoading::LoadZone(expectedZonePath, std::nullopt);
|
||||
REQUIRE(maybeZone);
|
||||
|
||||
auto zone = std::move(*maybeZone);
|
||||
auto pools = dynamic_cast<GameAssetPoolT5*>(zone->m_pools.get());
|
||||
|
||||
REQUIRE(zone->m_game_id == GameId::T5);
|
||||
REQUIRE(zone->m_platform == GamePlatform::PC);
|
||||
REQUIRE(zone->m_name == "SimpleZoneT5");
|
||||
REQUIRE(pools->GetTotalAssetCount() == 1);
|
||||
REQUIRE(pools->m_raw_file->GetAsset("SimpleZone.txt"));
|
||||
}
|
||||
} // namespace
|
||||
1
test/SystemTests/Game/T5/simple/SimpleZone.txt
Normal file
1
test/SystemTests/Game/T5/simple/SimpleZone.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a simple zone.
|
||||
4
test/SystemTests/Game/T5/simple/SimpleZoneT5.zone
Normal file
4
test/SystemTests/Game/T5/simple/SimpleZoneT5.zone
Normal file
@@ -0,0 +1,4 @@
|
||||
>game,T5
|
||||
|
||||
rawfile,SimpleZone.txt
|
||||
|
||||
62
test/SystemTests/Game/T6/SimpleZoneT6.cpp
Normal file
62
test/SystemTests/Game/T6/SimpleZoneT6.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "Game/T6/GameAssetPoolT6.h"
|
||||
#include "Linker.h"
|
||||
#include "OatTestPaths.h"
|
||||
#include "SystemTestsPaths.h"
|
||||
#include "ZoneLoading.h"
|
||||
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
#include <filesystem>
|
||||
#include <format>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
using namespace std::literals;
|
||||
|
||||
namespace
|
||||
{
|
||||
TEST_CASE("Simple Zone(T6)", "[t6][system][simple]")
|
||||
{
|
||||
const auto assetSearchPath = (oat::paths::GetSystemTestsDirectory() / "Game/T6/simple").string();
|
||||
const auto sourceSearchPath = (oat::paths::GetSystemTestsDirectory() / "Game/T6/simple").string();
|
||||
const auto outputPath = oat::paths::GetTempDirectory("t6_simple").string();
|
||||
|
||||
const char* argStrings[]{
|
||||
"SystemTests", // bin
|
||||
"--verbose",
|
||||
"--asset-search-path",
|
||||
assetSearchPath.c_str(),
|
||||
"--source-search-path",
|
||||
sourceSearchPath.c_str(),
|
||||
"--output-folder",
|
||||
outputPath.c_str(),
|
||||
"SimpleZoneT6",
|
||||
};
|
||||
|
||||
LinkerArgs args;
|
||||
|
||||
bool shouldContinue = true;
|
||||
const auto couldParseArgs = args.ParseArgs(std::extent_v<decltype(argStrings)>, argStrings, shouldContinue);
|
||||
|
||||
REQUIRE(couldParseArgs);
|
||||
REQUIRE(shouldContinue);
|
||||
|
||||
const auto linker = Linker::Create(std::move(args));
|
||||
const auto linkerResult = linker->Start();
|
||||
|
||||
REQUIRE(linkerResult);
|
||||
|
||||
const auto expectedZonePath = (fs::path(outputPath) / "SimpleZoneT6.ff").string();
|
||||
auto maybeZone = ZoneLoading::LoadZone(expectedZonePath, std::nullopt);
|
||||
REQUIRE(maybeZone);
|
||||
|
||||
auto zone = std::move(*maybeZone);
|
||||
auto pools = dynamic_cast<GameAssetPoolT6*>(zone->m_pools.get());
|
||||
|
||||
REQUIRE(zone->m_game_id == GameId::T6);
|
||||
REQUIRE(zone->m_platform == GamePlatform::PC);
|
||||
REQUIRE(zone->m_name == "SimpleZoneT6");
|
||||
REQUIRE(pools->GetTotalAssetCount() == 1);
|
||||
REQUIRE(pools->m_raw_file->GetAsset("SimpleZone.txt"));
|
||||
}
|
||||
} // namespace
|
||||
1
test/SystemTests/Game/T6/simple/SimpleZone.txt
Normal file
1
test/SystemTests/Game/T6/simple/SimpleZone.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a simple zone.
|
||||
4
test/SystemTests/Game/T6/simple/SimpleZoneT6.zone
Normal file
4
test/SystemTests/Game/T6/simple/SimpleZoneT6.zone
Normal file
@@ -0,0 +1,4 @@
|
||||
>game,T6
|
||||
|
||||
rawfile,SimpleZone.txt
|
||||
|
||||
Reference in New Issue
Block a user