Implements initial math library, several reworks for Userdata memory management
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:
@@ -22,14 +22,20 @@ class ModuleHandler{
|
||||
MODULES.clear();
|
||||
}
|
||||
};
|
||||
static Internal _internal;
|
||||
static Internal* _internal;
|
||||
|
||||
static Internal* GetInternal(){
|
||||
if (!_internal)
|
||||
_internal = new Internal();
|
||||
return _internal;
|
||||
}
|
||||
|
||||
inline static bool DoesModuleExist(const string& moduleName){
|
||||
return _internal.MODULES.find(moduleName) != _internal.MODULES.end();
|
||||
return GetInternal()->MODULES.find(moduleName) != GetInternal()->MODULES.end();
|
||||
}
|
||||
|
||||
inline static Script* ResolveModule(const string& moduleName){
|
||||
return _internal.MODULES[moduleName];
|
||||
return GetInternal()->MODULES[moduleName];
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -39,7 +45,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
ModuleHandler::Internal ModuleHandler::_internal;
|
||||
ModuleHandler::Internal* ModuleHandler::_internal = nullptr;
|
||||
|
||||
TEST_CASE( "Require simple return script", "[integration]" ) {
|
||||
ModuleHandler::Initialize();
|
||||
|
||||
@@ -65,7 +65,7 @@ end
|
||||
delete parameter;
|
||||
delete script;
|
||||
delete variable;
|
||||
UserDataStorage::ClearTypes();
|
||||
UserDataStorage::RemoveType(HashedString::ConstHash("testObject"));
|
||||
}
|
||||
|
||||
TEST_CASE( "Sets UserData value", "[integration]" ) {
|
||||
@@ -84,7 +84,7 @@ end
|
||||
REQUIRE(obj->foo == 5000);
|
||||
delete obj;
|
||||
delete parameter;
|
||||
UserDataStorage::ClearTypes();
|
||||
UserDataStorage::RemoveType(HashedString::ConstHash("testObject"));
|
||||
}
|
||||
|
||||
TEST_CASE( "Calls UserData function", "[integration]" ) {
|
||||
@@ -104,7 +104,7 @@ end
|
||||
delete obj;
|
||||
delete parameter;
|
||||
delete result;
|
||||
UserDataStorage::ClearTypes();
|
||||
UserDataStorage::RemoveType(HashedString::ConstHash("testObject"));
|
||||
}
|
||||
|
||||
TEST_CASE( "Calls UserData function with parameters", "[integration]" ) {
|
||||
@@ -124,7 +124,7 @@ end
|
||||
delete obj;
|
||||
delete parameter;
|
||||
delete result;
|
||||
UserDataStorage::ClearTypes();
|
||||
UserDataStorage::RemoveType(HashedString::ConstHash("testObject"));
|
||||
}
|
||||
|
||||
TEST_CASE( "Gets userdata vector value", "[integration]" ) {
|
||||
@@ -148,7 +148,7 @@ end
|
||||
delete result;
|
||||
delete script;
|
||||
delete func;
|
||||
UserDataStorage::ClearTypes();
|
||||
UserDataStorage::RemoveType(HashedString::ConstHash("testObject"));
|
||||
}
|
||||
|
||||
TEST_CASE( "Sets userdata vector value", "[integration]" ) {
|
||||
@@ -170,7 +170,7 @@ end
|
||||
delete parameter;
|
||||
delete script;
|
||||
delete func;
|
||||
UserDataStorage::ClearTypes();
|
||||
UserDataStorage::RemoveType(HashedString::ConstHash("testObject"));
|
||||
}
|
||||
|
||||
TEST_CASE( "Iterate over userdata vector keys", "[integration]" ) {
|
||||
@@ -197,7 +197,7 @@ end
|
||||
delete script;
|
||||
delete func;
|
||||
delete result;
|
||||
UserDataStorage::ClearTypes();
|
||||
UserDataStorage::RemoveType(HashedString::ConstHash("testObject"));
|
||||
}
|
||||
|
||||
TEST_CASE( "Iterate over userdata vector values", "[integration]" ) {
|
||||
@@ -224,7 +224,7 @@ end
|
||||
delete script;
|
||||
delete func;
|
||||
delete result;
|
||||
UserDataStorage::ClearTypes();
|
||||
UserDataStorage::RemoveType(HashedString::ConstHash("testObject"));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
26
tests/standardLibraries/MatLibrary.cpp
Normal file
26
tests/standardLibraries/MatLibrary.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifdef TESTS_BUILD
|
||||
#include <catch.hpp>
|
||||
#include "../src/Script.hpp"
|
||||
#include "../../src/ScriptOptions.hpp"
|
||||
#include <cstring>
|
||||
|
||||
using namespace Porygon;
|
||||
|
||||
TEST_CASE( "Abs positive returns positive", "[integration]" ) {
|
||||
Script* script = Script::Create(u"return math.abs(684)");
|
||||
REQUIRE(!script->Diagnostics -> HasErrors());
|
||||
auto result = script -> Evaluate();
|
||||
CHECK(result->EvaluateInteger() == 684);
|
||||
delete script;
|
||||
}
|
||||
|
||||
TEST_CASE( "Abs negative returns positive", "[integration]" ) {
|
||||
Script* script = Script::Create(u"return math.abs(-684)");
|
||||
REQUIRE(!script->Diagnostics -> HasErrors());
|
||||
auto result = script -> Evaluate();
|
||||
CHECK(result->EvaluateInteger() == 684);
|
||||
delete script;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user