Implements unknown types
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2019-09-01 20:07:09 +02:00
parent 01e5441d62
commit 0e9c9abf7c
6 changed files with 66 additions and 12 deletions

View File

@@ -11,7 +11,20 @@ class ModuleHandler{
Internal(){
MODULES = {
{"simple_return", Script::Create(u"return 500")},
{"simple_variables", Script::Create(u"foo = 50\nbar = \'test\'")}
{"simple_variables", Script::Create(u"foo = 50\nbar = \'test\'")},
{
"complex_module", Script::Create(uR"(
local module = {
function contains(table table, string s)
for _, v in table do
if (v == s) then return true end
end
return false
end
}
return module
)")
}
};
}
@@ -22,6 +35,8 @@ class ModuleHandler{
MODULES.clear();
}
};
public:
static Internal* _internal;
static Internal* GetInternal(){
@@ -35,10 +50,11 @@ class ModuleHandler{
}
inline static Script* ResolveModule(const char* moduleName, size_t size){
return GetInternal()->MODULES[moduleName];
auto module = GetInternal()->MODULES[moduleName];
REQUIRE(!module->Diagnostics->HasErrors());
return module;
}
public:
static void Initialize(){
ScriptOptions::GetDefaultScriptOptions()->SetModuleExistsFunc(DoesModuleExist);
ScriptOptions::GetDefaultScriptOptions()->SetResolveModuleFunc(ResolveModule);
@@ -77,4 +93,18 @@ require("simple_variables")
delete script;
}
TEST_CASE( "Require string table contains", "[integration]" ) {
ModuleHandler::Initialize();
auto script = Script::Create(uR"(
local list = require("complex_module")
return list.contains({"foo", "bar"}, "bar")
)");
REQUIRE(!script->Diagnostics -> HasErrors());
auto result = script->Evaluate();
CHECK(result->EvaluateBool());
delete script;
}
#endif