Changes for EffectParameter type in AngelScript, fixes for ConstString memory leak in AngelScript.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-04-16 14:25:20 +02:00
parent 2ab9445b71
commit c11da2d966
8 changed files with 105 additions and 64 deletions

View File

@@ -148,9 +148,10 @@ TEST_CASE("Able to set and get evolution", "library") {
auto evolutions = species->GetEvolutions();
REQUIRE(evolutions.size() == 1);
auto evo = evolutions[0];
CHECK(evo.GetMethod() == PkmnLib::Library::EvolutionMethod::Level);
CHECK(evo.GetNewSpecies() == species2);
CHECK(std::any_cast<uint8_t>(evo.GetData(0)) == 16);
CHECK(evo->GetMethod() == PkmnLib::Library::EvolutionMethod::Level);
CHECK(evo->GetNewSpecies() == species2);
INFO(CreatureLib::Library::EffectParameterTypeHelper::ToString(evo->GetData(0)->GetType()));
CHECK(evo->GetData(0)->AsInt() == 16);
delete species;
delete species2;

View File

@@ -12,7 +12,7 @@ static std::unordered_map<const char*, const char*> _scripts = std::unordered_ma
AS_CLASS(initializeScript, R"(
bool boolValue = false;
int64 intValue = 0;
string stringValue = "";
constString stringValue;
void OnInitialize(const array<EffectParameter@> &in parameters) override {
boolValue = parameters[0].AsBool();
intValue = parameters[1].AsInt();
@@ -20,7 +20,7 @@ void OnInitialize(const array<EffectParameter@> &in parameters) override {
}
bool GetBoolValue() { return boolValue; }
int64 GetIntValue() { return intValue; }
string GetStringValue() { return stringValue; }
constString GetStringValue() { return stringValue; }
)"),
AS_CLASS(stackScript, "int value = 0; void Stack() override { value++; } int GetValue() { return value; }"),
@@ -108,11 +108,9 @@ TEST_CASE("Invoke OnInitialize script function") {
auto script = GetScript(mainLib, "initializeScript"_cnc);
REQUIRE(script != nullptr);
auto parameters = {
new CreatureLib::Library::EffectParameter(true),
new CreatureLib::Library::EffectParameter((int64_t)684),
new CreatureLib::Library::EffectParameter(std::string("foobar"))
};
auto parameters = {new CreatureLib::Library::EffectParameter(true),
new CreatureLib::Library::EffectParameter((int64_t)684),
new CreatureLib::Library::EffectParameter(Arbutils::CaseInsensitiveConstString("foobar"))};
script->OnInitialize(parameters);
@@ -133,12 +131,12 @@ TEST_CASE("Invoke OnInitialize script function") {
ctx = ctxPool->RequestContext();
script->PrepareMethod("GetStringValue"_cnc, ctx);
REQUIRE(ctx->Execute() == asEXECUTION_FINISHED);
std::string s;
s = *(std::string*)ctx->GetReturnAddress();
REQUIRE(s == "foobar");
// Arbutils::CaseInsensitiveConstString s;
// s = *(Arbutils::CaseInsensitiveConstString*)ctx->GetReturnAddress();
// REQUIRE(s == "foobar"_cnc);
ctxPool->ReturnContextToPool(ctx);
for (auto p : parameters){
for (auto p : parameters) {
delete p;
}
delete script;