1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-26 09:35:28 +00:00
fteppe 20da0892ef openMW_test_suite compiles and runs
Slowly moving through the open-cs errors

Good progress in openCS

Very good progress on openCS

Getting closer with openCS

OpenCS compiles and runs! Didn't have time to test it all though

ix openMW

everything compiles on windows??

Fix gcc

Fix Clang
2022-12-27 19:15:55 +01:00

113 lines
4.1 KiB
C++

#include <components/esm3/loadacti.hpp>
#include <components/esm3/loadcell.hpp>
#include <components/esm3/loadcont.hpp>
#include <components/esm3/loaddoor.hpp>
#include <components/esm3/loadgmst.hpp>
#include <components/esm3/loadland.hpp>
#include <components/esm3/loadstat.hpp>
#include <components/esm3/variant.hpp>
#include <components/esmloader/esmdata.hpp>
#include <gtest/gtest.h>
#include <array>
#include <functional>
#include <string>
#include <vector>
namespace
{
using namespace testing;
using namespace EsmLoader;
struct Params
{
std::string mRefId;
ESM::RecNameInts mType;
std::string mResult;
std::function<void(EsmData&)> mPushBack;
};
struct EsmLoaderGetModelTest : TestWithParam<Params>
{
};
TEST_P(EsmLoaderGetModelTest, shouldReturnFoundModelName)
{
EsmData data;
GetParam().mPushBack(data);
EXPECT_EQ(EsmLoader::getModel(data, ESM::RefId::stringRefId(GetParam().mRefId), GetParam().mType), GetParam().mResult);
}
void pushBack(ESM::Activator&& value, EsmData& esmData)
{
esmData.mActivators.push_back(std::move(value));
}
void pushBack(ESM::Container&& value, EsmData& esmData)
{
esmData.mContainers.push_back(std::move(value));
}
void pushBack(ESM::Door&& value, EsmData& esmData)
{
esmData.mDoors.push_back(std::move(value));
}
void pushBack(ESM::Static&& value, EsmData& esmData)
{
esmData.mStatics.push_back(std::move(value));
}
template <class T>
struct PushBack
{
std::string mId;
std::string mModel;
void operator()(EsmData& esmData) const
{
T value;
value.mId = ESM::RefId::stringRefId(mId);
value.mModel = mModel;
pushBack(std::move(value), esmData);
}
};
const std::array params = {
Params{ "acti_ref_id", ESM::REC_ACTI, "acti_model", PushBack<ESM::Activator>{ "acti_ref_id", "acti_model" } },
Params{ "cont_ref_id", ESM::REC_CONT, "cont_model", PushBack<ESM::Container>{ "cont_ref_id", "cont_model" } },
Params{ "door_ref_id", ESM::REC_DOOR, "door_model", PushBack<ESM::Door>{ "door_ref_id", "door_model" } },
Params{
"static_ref_id", ESM::REC_STAT, "static_model", PushBack<ESM::Static>{ "static_ref_id", "static_model" } },
Params{ "acti_ref_id_a", ESM::REC_ACTI, "", PushBack<ESM::Activator>{ "acti_ref_id_z", "acti_model" } },
Params{ "cont_ref_id_a", ESM::REC_CONT, "", PushBack<ESM::Container>{ "cont_ref_id_z", "cont_model" } },
Params{ "door_ref_id_a", ESM::REC_DOOR, "", PushBack<ESM::Door>{ "door_ref_id_z", "door_model" } },
Params{ "static_ref_id_a", ESM::REC_STAT, "", PushBack<ESM::Static>{ "static_ref_id_z", "static_model" } },
Params{ "acti_ref_id_z", ESM::REC_ACTI, "", PushBack<ESM::Activator>{ "acti_ref_id_a", "acti_model" } },
Params{ "cont_ref_id_z", ESM::REC_CONT, "", PushBack<ESM::Container>{ "cont_ref_id_a", "cont_model" } },
Params{ "door_ref_id_z", ESM::REC_DOOR, "", PushBack<ESM::Door>{ "door_ref_id_a", "door_model" } },
Params{ "static_ref_id_z", ESM::REC_STAT, "", PushBack<ESM::Static>{ "static_ref_id_a", "static_model" } },
Params{ "ref_id", ESM::REC_STAT, "", [](EsmData&) {} },
Params{ "ref_id", ESM::REC_BOOK, "", [](EsmData&) {} },
};
INSTANTIATE_TEST_SUITE_P(Params, EsmLoaderGetModelTest, ValuesIn(params));
TEST(EsmLoaderGetGameSettingTest, shouldReturnFoundValue)
{
std::vector<ESM::GameSetting> settings;
ESM::GameSetting setting;
setting.mId = ESM::RefId::stringRefId("setting");
setting.mValue = ESM::Variant(42);
settings.push_back(setting);
EXPECT_EQ(EsmLoader::getGameSetting(settings, ESM::RefId::stringRefId("setting")), ESM::Variant(42));
}
TEST(EsmLoaderGetGameSettingTest, shouldThrowExceptionWhenNotFound)
{
const std::vector<ESM::GameSetting> settings;
EXPECT_THROW(EsmLoader::getGameSetting(settings, ESM::RefId::stringRefId("setting")), std::runtime_error);
}
}