This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user