Rework of memory handling in Evaluation
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2019-07-27 17:59:42 +02:00
parent 268f6b59fb
commit ccc6e297f2
32 changed files with 496 additions and 461 deletions

View File

@@ -14,6 +14,7 @@ TEST_CASE( "Basic conditional", "[integration]" ) {
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateBool());
delete script;
delete variable;
}
TEST_CASE( "If then, else", "[integration]" ) {
@@ -26,6 +27,7 @@ TEST_CASE( "If then, else", "[integration]" ) {
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateBool());
delete script;
delete variable;
}
TEST_CASE( "If then, else if", "[integration]" ) {
@@ -38,6 +40,7 @@ TEST_CASE( "If then, else if", "[integration]" ) {
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateBool());
delete script;
delete variable;
}

View File

@@ -12,6 +12,7 @@ TEST_CASE( "Define script function", "[integration]" ) {
REQUIRE(variable != nullptr);
REQUIRE(variable->GetTypeClass() == TypeClass::Function);
delete script;
delete variable;
}
TEST_CASE( "Define script function and call", "[integration]" ) {
@@ -25,6 +26,8 @@ TEST_CASE( "Define script function and call", "[integration]" ) {
REQUIRE(result->GetTypeClass() == TypeClass::Number);
REQUIRE(result->EvaluateInteger() == 3);
delete script;
delete variable;
delete result;
}
TEST_CASE( "Define script function and call multiple times", "[integration]" ) {
@@ -38,6 +41,8 @@ TEST_CASE( "Define script function and call multiple times", "[integration]" ) {
REQUIRE(result->GetTypeClass() == TypeClass::Number);
REQUIRE(result->EvaluateInteger() == 5);
delete script;
delete variable;
delete result;
}
TEST_CASE( "Define script function and call from extern", "[integration]" ) {
@@ -57,6 +62,7 @@ TEST_CASE( "Define script function and call from extern", "[integration]" ) {
REQUIRE(result->GetTypeClass() == TypeClass::Number);
REQUIRE(result->EvaluateInteger() == 11);
delete script;
delete result;
}
TEST_CASE( "Define script function and return", "[integration]" ) {
@@ -84,6 +90,8 @@ TEST_CASE( "Define script function and return", "[integration]" ) {
REQUIRE(variable->EvaluateInteger() == 0);
delete script;
delete variable;
delete result;
}
TEST_CASE( "Functions can call themselves", "[integration]" ) {
@@ -106,6 +114,7 @@ end
REQUIRE(variable->EvaluateInteger() == 5);
delete script;
delete variable;
}
TEST_CASE( "Functions respect scope", "[integration]" ) {
@@ -134,6 +143,7 @@ test()
REQUIRE(variable->EvaluateInteger() == 50);
delete script;
delete variable;
}
TEST_CASE( "Return doesn't parse next line expression", "[integration]" ) {
@@ -174,8 +184,9 @@ stringResult = add('foo', 'bar')
REQUIRE(stringVar != nullptr);
CHECK(stringVar->EvaluateString() == u"foobar");
delete script;
delete intVar;
delete stringVar;
}

View File

@@ -15,6 +15,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 33);
delete script;
delete var;
}
TEST_CASE( "Numerical for loop with step", "[integration]" ) {
@@ -29,6 +30,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 12);
delete script;
delete var;
}
TEST_CASE( "Numerical for loop with negative step", "[integration]" ) {
@@ -43,6 +45,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 33);
delete script;
delete var;
}
@@ -58,6 +61,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 15);
delete script;
delete var;
}
TEST_CASE( "Numerical for loop, break", "[integration]" ) {
@@ -73,6 +77,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 6);
delete script;
delete var;
}
@@ -89,6 +94,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 15);
delete script;
delete var;
}
TEST_CASE( "Generic for loop over simple numerical table, get values", "[integration]" ) {
@@ -104,6 +110,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 25);
delete script;
delete var;
}
TEST_CASE( "Generic for loop over simple numerical table, break", "[integration]" ) {
@@ -120,6 +127,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 9);
delete script;
delete var;
}
TEST_CASE( "While loop", "[integration]" ) {
@@ -134,6 +142,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 5);
delete script;
delete var;
}
TEST_CASE( "While loop break", "[integration]" ) {
@@ -149,6 +158,7 @@ end
auto var = script->GetVariable(u"result");
REQUIRE(var->EvaluateInteger() == 5);
delete script;
delete var;
}
#endif

View File

@@ -11,6 +11,7 @@ TEST_CASE( "Create empty table", "[integration]" ) {
auto variable = script->GetVariable(u"table");
REQUIRE(variable != nullptr);
delete script;
delete variable;
}
TEST_CASE( "Create simple integer table", "[integration]" ) {
@@ -20,6 +21,7 @@ TEST_CASE( "Create simple integer table", "[integration]" ) {
auto variable = script->GetVariable(u"table");
REQUIRE(variable != nullptr);
delete script;
delete variable;
}
TEST_CASE( "Create simple string table", "[integration]" ) {
@@ -29,6 +31,7 @@ TEST_CASE( "Create simple string table", "[integration]" ) {
auto variable = script->GetVariable(u"table");
REQUIRE(variable != nullptr);
delete script;
delete variable;
}
TEST_CASE( "Index string table", "[integration]" ) {
@@ -39,7 +42,7 @@ return table[3]
)");
REQUIRE(!script->Diagnostics -> HasErrors());
auto variable = script->Evaluate();
REQUIRE(variable != nullptr);
REQUIRE(variable.Get() != nullptr);
REQUIRE(variable->EvaluateString() == u"foo");
delete script;
}
@@ -57,9 +60,14 @@ table = {
auto variable = script->GetVariable(u"table");
REQUIRE(variable != nullptr);
auto table = (TableEvalValue*)variable;
CHECK(table->IndexValue("foo")->EvaluateString() == u"test");
CHECK(table->IndexValue("bar")->EvaluateInteger() == 100);
auto res = table->IndexValue("foo");
auto res2 = table->IndexValue("bar");
CHECK(res->EvaluateString() == u"test");
CHECK(res2->EvaluateInteger() == 100);
delete script;
delete table;
delete res;
delete res2;
}
TEST_CASE( "Complex table with function", "[integration]" ) {
@@ -75,7 +83,7 @@ return table["getFoo"]()
)");
REQUIRE(!script->Diagnostics -> HasErrors());
auto variable = script->Evaluate();
REQUIRE(variable != nullptr);
REQUIRE(variable.Get() != nullptr);
delete script;
}

View File

@@ -54,6 +54,7 @@ end
delete par;
delete parameter;
delete script;
delete variable;
UserDataStorage::ClearTypes();
}
@@ -92,6 +93,7 @@ end
delete script;
delete obj;
delete parameter;
delete result;
UserDataStorage::ClearTypes();
}
@@ -111,6 +113,7 @@ end
delete script;
delete obj;
delete parameter;
delete result;
UserDataStorage::ClearTypes();
}

View File

@@ -13,6 +13,7 @@ TEST_CASE( "Create script variable", "[integration]" ) {
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateBool());
delete script;
delete variable;
}
TEST_CASE( "Create local variable", "[integration]" ) {
@@ -32,6 +33,7 @@ TEST_CASE( "Create script variable and use", "[integration]" ) {
REQUIRE(variable != nullptr);
CHECK(variable->EvaluateBool());
delete script;
delete variable;
}
TEST_CASE( "Create local variable and use", "[integration]" ) {
@@ -43,6 +45,7 @@ TEST_CASE( "Create local variable and use", "[integration]" ) {
REQUIRE(variable != nullptr);
CHECK(variable->EvaluateBool());
delete script;
delete variable;
}
TEST_CASE( "Local variables in upmost scope persist", "[integration]" ) {
@@ -62,6 +65,7 @@ end
REQUIRE(variable != nullptr);
CHECK(variable->EvaluateInteger() == 2);
delete script;
delete variable;
}
TEST_CASE( "Able to use emoji", "[integration]" ) {
@@ -75,6 +79,7 @@ TEST_CASE( "Able to use emoji", "[integration]" ) {
REQUIRE(variable != nullptr);
CHECK(variable->EvaluateString() == u"LJ");
delete script;
delete variable;
}
#endif