This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
static std::unordered_map<const char*, const char*> _scripts = std::unordered_map<const char*, const char*>{
|
||||
AS_CLASS(blankScript, ),
|
||||
AS_CLASS(stackScript, "int value = 0; void Stack() override { value++; } int GetValue() { return value; }"),
|
||||
AS_CLASS(onRemoveScript, "int value = 0; void OnRemove() override { value++; } int GetValue() { return value; }"),
|
||||
{"doubleInheritanceScript", R"(
|
||||
class doubleInheritanceScriptBase : PkmnScript {
|
||||
int value = 0;
|
||||
@@ -105,6 +106,22 @@ TEST_CASE("Invoke Stack script function") {
|
||||
delete script;
|
||||
}
|
||||
|
||||
TEST_CASE("Invoke OnRemove script function") {
|
||||
auto mainLib = TestLibrary::GetLibrary();
|
||||
auto script = GetScript(mainLib, "onRemoveScript");
|
||||
script->OnRemove();
|
||||
|
||||
auto ctxPool = script->GetContextPool();
|
||||
auto ctx = ctxPool->RequestContext();
|
||||
script->PrepareMethod("GetValue", ctx);
|
||||
REQUIRE(ctx->Execute() == asEXECUTION_FINISHED);
|
||||
REQUIRE(ctx->GetReturnDWord() == 1);
|
||||
ctxPool->ReturnContextToPool(ctx);
|
||||
|
||||
delete script;
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("Invoke Stack script function with implementation in base class") {
|
||||
auto mainLib = TestLibrary::GetLibrary();
|
||||
auto script = GetScript(mainLib, "doubleInheritanceScript");
|
||||
|
||||
@@ -15,7 +15,7 @@ class testScript1 {
|
||||
bool testShiny(Pokemon@ p, bool shiny){ return p.Shiny == shiny; }
|
||||
bool testHeldItem(Pokemon@ p, Item@ item){ return p.HeldItem is item; }
|
||||
bool testCurrentHealth(Pokemon@ p, uint health){ return p.CurrentHealth == health; }
|
||||
bool testNickname(Pokemon@ p, const string &in name){ return p.Nickname == name; }
|
||||
bool testNickname(Pokemon@ p, const string& name){ return p.Nickname == name; }
|
||||
bool testActiveAbility(Pokemon@ p, const string &in ability){ return p.ActiveAbility == ability; }
|
||||
bool testIsFainted(Pokemon@ p, bool b){ return p.IsFainted == b; }
|
||||
bool testType(Pokemon@ p, uint index, uint8 type){ return p.GetTypes()[index] == type; }
|
||||
@@ -29,10 +29,10 @@ class testScript1 {
|
||||
static const char* _testLoadFunc(const char* name) { return _scripts[name]; }
|
||||
|
||||
struct ScriptData {
|
||||
AngelScriptScript* Script;
|
||||
AngelScripResolver* Resolver;
|
||||
asIScriptFunction* Func;
|
||||
asIScriptContext* Context;
|
||||
AngelScriptScript* Script = nullptr;
|
||||
AngelScripResolver* Resolver = nullptr;
|
||||
asIScriptFunction* Func = nullptr;
|
||||
asIScriptContext* Context = nullptr;
|
||||
|
||||
~ScriptData() {
|
||||
Script->GetContextPool()->ReturnContextToPool(Context);
|
||||
@@ -207,7 +207,7 @@ TEST_CASE("Validate Pokemon Active Ability in Script") {
|
||||
.WithForme("default")
|
||||
->WithGender(CreatureLib::Library::Gender::Male)
|
||||
->Build();
|
||||
data.Context->SetArgObject(0, const_cast<PkmnLib::Battling::Pokemon*>(mon));
|
||||
data.Context->SetArgObject(0, (void*)mon);
|
||||
auto name = mon->GetActiveTalent();
|
||||
data.Context->SetArgAddress(1, &name);
|
||||
|
||||
|
||||
@@ -20,10 +20,10 @@ class testScript1 {
|
||||
static const char* _testLoadFunc(const char* name) { return _scripts[name]; }
|
||||
|
||||
struct ScriptData {
|
||||
AngelScriptScript* Script;
|
||||
AngelScripResolver* Resolver;
|
||||
asIScriptFunction* Func;
|
||||
asIScriptContext* Context;
|
||||
AngelScriptScript* Script = nullptr;
|
||||
AngelScripResolver* Resolver = nullptr;
|
||||
asIScriptFunction* Func = nullptr;
|
||||
asIScriptContext* Context = nullptr;
|
||||
|
||||
~ScriptData() {
|
||||
Script->GetContextPool()->ReturnContextToPool(Context);
|
||||
@@ -32,8 +32,8 @@ struct ScriptData {
|
||||
};
|
||||
|
||||
static AngelScripResolver* _resolverCache = nullptr;
|
||||
static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* mainLib){
|
||||
if (_resolverCache == nullptr){
|
||||
static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* mainLib) {
|
||||
if (_resolverCache == nullptr) {
|
||||
_resolverCache = dynamic_cast<AngelScripResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
_resolverCache->Initialize(mainLib);
|
||||
_resolverCache->SetCreateFunction(&_testLoadFunc);
|
||||
@@ -171,5 +171,4 @@ TEST_CASE("Validate Forme GetAbility in Script") {
|
||||
REQUIRE((bool)data.Context->GetReturnWord());
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
@@ -16,10 +16,10 @@ class testScript1 {
|
||||
static const char* _testLoadFunc(const char* name) { return _scripts[name]; }
|
||||
|
||||
struct ScriptData {
|
||||
AngelScriptScript* Script;
|
||||
AngelScripResolver* Resolver;
|
||||
asIScriptFunction* Func;
|
||||
asIScriptContext* Context;
|
||||
AngelScriptScript* Script = nullptr;
|
||||
AngelScripResolver* Resolver = nullptr;
|
||||
asIScriptFunction* Func = nullptr;
|
||||
asIScriptContext* Context = nullptr;
|
||||
|
||||
~ScriptData() {
|
||||
Script->GetContextPool()->ReturnContextToPool(Context);
|
||||
|
||||
@@ -20,10 +20,10 @@ class testScript1 {
|
||||
static const char* _testLoadFunc(const char* name) { return _scripts[name]; }
|
||||
|
||||
struct ScriptData {
|
||||
AngelScriptScript* Script;
|
||||
AngelScripResolver* Resolver;
|
||||
asIScriptFunction* Func;
|
||||
asIScriptContext* Context;
|
||||
AngelScriptScript* Script = nullptr;
|
||||
AngelScripResolver* Resolver = nullptr;
|
||||
asIScriptFunction* Func = nullptr;
|
||||
asIScriptContext* Context = nullptr;
|
||||
|
||||
~ScriptData() {
|
||||
Script->GetContextPool()->ReturnContextToPool(Context);
|
||||
@@ -61,7 +61,7 @@ TEST_CASE("Validate Move Name in Script") {
|
||||
auto data = GetScript(mainLib, "testName");
|
||||
|
||||
auto move = mainLib->GetMoveLibrary()->GetAttack("testMove");
|
||||
data.Context->SetArgObject(0, const_cast<PkmnLib::Library::MoveData*>(move));
|
||||
data.Context->SetArgObject(0, (void*)move);
|
||||
auto name = move->GetName();
|
||||
data.Context->SetArgAddress(1, &name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user