Fixed different sized enums being a problem for AngelScript, minor fixes for Item class
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
58
tests/ScriptTests/ScriptTypeTests/ItemDataTests.cpp
Normal file
58
tests/ScriptTests/ScriptTypeTests/ItemDataTests.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
#ifdef TESTS_BUILD
|
||||
#include "../../../extern/catch.hpp"
|
||||
#include "../../../src/AngelScript/AngelScripResolver.hpp"
|
||||
#include "../../TestLibrary/TestLibrary.hpp"
|
||||
|
||||
static std::unordered_map<const char*, const char*> _scripts =
|
||||
std::unordered_map<const char*, const char*>{{"testScript1", R"(
|
||||
class testScript1 {
|
||||
bool testName(const Item@ i, const string &in name){ return i.Name == name; }
|
||||
}
|
||||
)"}};
|
||||
|
||||
static const char* _testLoadFunc(const char* name) { return _scripts[name]; }
|
||||
|
||||
struct ScriptData {
|
||||
AngelScriptScript* Script;
|
||||
AngelScripResolver* Resolver;
|
||||
asIScriptFunction* Func;
|
||||
asIScriptContext* Context;
|
||||
|
||||
~ScriptData() {
|
||||
Script->GetContextPool()->ReturnContextToPool(Context);
|
||||
delete Script;
|
||||
delete Resolver;
|
||||
}
|
||||
};
|
||||
|
||||
static ScriptData GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const char* funcName) {
|
||||
auto lib = dynamic_cast<AngelScripResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
lib->Initialize(mainLib);
|
||||
lib->SetCreateFunction(&_testLoadFunc);
|
||||
lib->CreateScript("testScript1");
|
||||
lib->FinalizeModule();
|
||||
auto s = lib->LoadScript(AngelScripResolver::ScriptCategory::Creature, "testScript1");
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
auto ctxPool = script->GetContextPool();
|
||||
auto ctx = ctxPool->RequestContext();
|
||||
|
||||
auto func = script->PrepareMethod(funcName, ctx);
|
||||
REQUIRE(func != nullptr);
|
||||
|
||||
return {.Script = script, .Resolver = lib, .Func = func, .Context = ctx};
|
||||
}
|
||||
|
||||
TEST_CASE("Validate Item Name in Script") {
|
||||
auto mainLib = TestLibrary::GetLibrary();
|
||||
auto data = GetScript(mainLib, "testName");
|
||||
|
||||
auto item = mainLib->GetItemLibrary()->GetItem("testItem");
|
||||
data.Context->SetArgObject(0, const_cast<PkmnLib::Library::Item*>(item));
|
||||
auto name = item->GetName();
|
||||
data.Context->SetArgAddress(1, &name);
|
||||
|
||||
REQUIRE(data.Context->Execute() == asEXECUTION_FINISHED);
|
||||
REQUIRE((bool)data.Context->GetReturnWord());
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -79,11 +79,14 @@ TEST_CASE("Validate Move Category in Script") {
|
||||
auto data = GetScript(mainLib, "testCategory");
|
||||
|
||||
auto move = mainLib->GetMoveLibrary()->GetAttack("testMove");
|
||||
data.Context->SetArgObject(0, const_cast<PkmnLib::Library::MoveData*>(move));
|
||||
data.Context->SetArgDWord(1, (uint32_t)move->GetCategory());
|
||||
|
||||
REQUIRE(data.Context->Execute() == asEXECUTION_FINISHED);
|
||||
REQUIRE((bool)data.Context->GetReturnWord());
|
||||
data.Context->SetArgObject(0, const_cast<PkmnLib::Library::MoveData*>(move));
|
||||
data.Context->SetArgDWord(1, (asDWORD)move->GetCategory());
|
||||
|
||||
auto result = data.Context->Execute();
|
||||
INFO("exception: " << data.Context->GetExceptionString());
|
||||
REQUIRE(result == asEXECUTION_FINISHED);
|
||||
REQUIRE((bool)data.Context->GetReturnByte());
|
||||
}
|
||||
|
||||
TEST_CASE("Validate Move BasePower in Script") {
|
||||
|
||||
@@ -2,38 +2,43 @@
|
||||
PkmnLib::Battling::BattleLibrary* TestLibrary::_library = nullptr;
|
||||
PkmnLib::Library::SpeciesLibrary* TestLibrary::BuildSpeciesLibrary() {
|
||||
auto lib = new PkmnLib::Library::SpeciesLibrary();
|
||||
lib->LoadSpecies("testSpecies", new PkmnLib::Library::PokemonSpecies(
|
||||
1, "testSpecies",
|
||||
new PkmnLib::Library::PokemonForme(
|
||||
"default", 1.0f, 1.0f, 100, {0},
|
||||
CreatureLib::Core::StatisticSet<uint16_t>(100, 100, 100, 100, 100, 100),
|
||||
{"testAbility"}, {"testHiddenAbility"},
|
||||
new CreatureLib::Library::LearnableAttacks(100)),
|
||||
0.5f, "testGrowthRate", 100, 100));
|
||||
lib->LoadSpecies(
|
||||
"testSpecies2",
|
||||
new PkmnLib::Library::PokemonSpecies(
|
||||
2, "testSpecies2",
|
||||
new PkmnLib::Library::PokemonForme(
|
||||
"default", 1.0f, 1.0f, 100, {0},
|
||||
CreatureLib::Core::StatisticSet<uint16_t>(100, 100, 100, 100, 100, 100), {"testAbility"},
|
||||
{"testHiddenAbility"}, new CreatureLib::Library::LearnableAttacks(100)),
|
||||
0.5f, "testGrowthRate", 100, 100));
|
||||
lib->LoadSpecies(
|
||||
"statTestSpecies1",
|
||||
new PkmnLib::Library::PokemonSpecies(
|
||||
3, "statTestSpecies1",
|
||||
new PkmnLib::Library::PokemonForme(
|
||||
"default", 1.0f, 1.0f, 100, {0},
|
||||
CreatureLib::Core::StatisticSet<uint16_t>(100, 100, 100, 100, 100, 100), {"testAbility"},
|
||||
{"testHiddenAbility"}, new CreatureLib::Library::LearnableAttacks(100)),
|
||||
0.5f, "testGrowthRate", 100, 100));
|
||||
lib->LoadSpecies("testSpecies",
|
||||
new PkmnLib::Library::PokemonSpecies(
|
||||
1, "testSpecies",
|
||||
new PkmnLib::Library::PokemonForme(
|
||||
"default", 1.0f, 1.0f, 100, {0},
|
||||
CreatureLib::Core::StatisticSet<uint16_t>(100, 100, 100, 100, 100, 100), {"testAbility"},
|
||||
{"testHiddenAbility"}, new CreatureLib::Library::LearnableAttacks(100)),
|
||||
0.5f, "testGrowthRate", 100, 100));
|
||||
lib->LoadSpecies("testSpecies2",
|
||||
new PkmnLib::Library::PokemonSpecies(
|
||||
2, "testSpecies2",
|
||||
new PkmnLib::Library::PokemonForme(
|
||||
"default", 1.0f, 1.0f, 100, {0},
|
||||
CreatureLib::Core::StatisticSet<uint16_t>(100, 100, 100, 100, 100, 100), {"testAbility"},
|
||||
{"testHiddenAbility"}, new CreatureLib::Library::LearnableAttacks(100)),
|
||||
0.5f, "testGrowthRate", 100, 100));
|
||||
lib->LoadSpecies("statTestSpecies1",
|
||||
new PkmnLib::Library::PokemonSpecies(
|
||||
3, "statTestSpecies1",
|
||||
new PkmnLib::Library::PokemonForme(
|
||||
"default", 1.0f, 1.0f, 100, {0},
|
||||
CreatureLib::Core::StatisticSet<uint16_t>(100, 100, 100, 100, 100, 100), {"testAbility"},
|
||||
{"testHiddenAbility"}, new CreatureLib::Library::LearnableAttacks(100)),
|
||||
0.5f, "testGrowthRate", 100, 100));
|
||||
|
||||
return lib;
|
||||
}
|
||||
PkmnLib::Library::MoveLibrary* TestLibrary::BuildMoveLibrary() {
|
||||
auto lib = new PkmnLib::Library::MoveLibrary();
|
||||
lib->LoadMove("testMove", new PkmnLib::Library::MoveData("testMove", 0, PkmnLib::Library::MoveCategory::Physical,
|
||||
50, 100, 20, CreatureLib::Library::AttackTarget::Adjacent,0, {}));
|
||||
lib->LoadMove("testMove",
|
||||
new PkmnLib::Library::MoveData("testMove", 0, PkmnLib::Library::MoveCategory::Physical, 50, 100, 20,
|
||||
CreatureLib::Library::AttackTarget::Adjacent, 0, {}));
|
||||
return lib;
|
||||
}
|
||||
PkmnLib::Library::ItemLibrary* TestLibrary::BuildItemLibrary() {
|
||||
auto lib = new PkmnLib::Library::ItemLibrary();
|
||||
lib->LoadItem("testItem", new PkmnLib::Library::Item("testItem", CreatureLib::Library::ItemCategory::MiscItem,
|
||||
CreatureLib::Library::BattleItemCategory::None, 0, {}));
|
||||
return lib;
|
||||
}
|
||||
|
||||
@@ -40,10 +40,7 @@ public:
|
||||
|
||||
static PkmnLib::Library::MoveLibrary* BuildMoveLibrary();
|
||||
|
||||
static PkmnLib::Library::ItemLibrary* BuildItemLibrary() {
|
||||
auto lib = new PkmnLib::Library::ItemLibrary();
|
||||
return lib;
|
||||
}
|
||||
static PkmnLib::Library::ItemLibrary* BuildItemLibrary();
|
||||
|
||||
static CreatureLib::Library::GrowthRateLibrary* BuildGrowthRateLibrary() {
|
||||
auto lib = new CreatureLib::Library::GrowthRateLibrary();
|
||||
|
||||
Reference in New Issue
Block a user