Implements iterator for user data collection
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -8,10 +8,10 @@
|
||||
#include "../../src/UserData/UserDataFunction.hpp"
|
||||
#include "../../src/UserData/UserDataFunctionType.hpp"
|
||||
#include "../../src/UserData/UserDataTemplates.hpp"
|
||||
#include "../../src/UserData/UserDataCollectionType.hpp"
|
||||
#include "../../src/UserData/UserDataCollectionValue.hpp"
|
||||
#include "../../src/UserData/UserDataCollections/UserDataCollectionType.hpp"
|
||||
#include "../../src/UserData/UserDataCollections/UserDataCollectionValue.hpp"
|
||||
#include "../../src/UserData/UserDataCollections/UserDataCollectionRangeIterator.hpp"
|
||||
#include "../../src/Evaluator/EvalValues/EvalValueHelper.hpp"
|
||||
#include "../../src/Utilities/Random.hpp"
|
||||
|
||||
using namespace Porygon;
|
||||
using namespace Porygon::UserData;
|
||||
@@ -173,5 +173,58 @@ end
|
||||
UserDataStorage::ClearTypes();
|
||||
}
|
||||
|
||||
TEST_CASE( "Iterate over userdata vector keys", "[integration]" ) {
|
||||
UserDataStorage::RegisterType(HashedString::ConstHash("testObject"), UserDataTestObject::__createUserData());
|
||||
Script* script = Script::Create(R"(
|
||||
function testFunc(testObject obj)
|
||||
local val = 0
|
||||
for i in obj.fooVector do
|
||||
val = val + i
|
||||
end
|
||||
return val
|
||||
end
|
||||
)");
|
||||
REQUIRE(!script->Diagnostics -> HasErrors());
|
||||
script->Evaluate();
|
||||
auto func = (GenericFunctionEvalValue*)script -> GetVariable(u"testFunc");
|
||||
auto funcType = func -> GetType();
|
||||
auto obj = new UserDataTestObject();
|
||||
auto parameter = new UserDataValue(HashedString::ConstHash("testObject"), obj);
|
||||
auto result = script->CallFunction(u"testFunc", {parameter});
|
||||
REQUIRE(result->EvaluateInteger() == 6);
|
||||
delete obj;
|
||||
delete parameter;
|
||||
delete script;
|
||||
delete func;
|
||||
delete result;
|
||||
UserDataStorage::ClearTypes();
|
||||
}
|
||||
|
||||
TEST_CASE( "Iterate over userdata vector values", "[integration]" ) {
|
||||
UserDataStorage::RegisterType(HashedString::ConstHash("testObject"), UserDataTestObject::__createUserData());
|
||||
Script* script = Script::Create(R"(
|
||||
function testFunc(testObject obj)
|
||||
local val = 0
|
||||
for i, v in obj.fooVector do
|
||||
val = val + v
|
||||
end
|
||||
return val
|
||||
end
|
||||
)");
|
||||
REQUIRE(!script->Diagnostics -> HasErrors());
|
||||
script->Evaluate();
|
||||
auto func = (GenericFunctionEvalValue*)script -> GetVariable(u"testFunc");
|
||||
auto funcType = func -> GetType();
|
||||
auto obj = new UserDataTestObject();
|
||||
auto parameter = new UserDataValue(HashedString::ConstHash("testObject"), obj);
|
||||
auto result = script->CallFunction(u"testFunc", {parameter});
|
||||
REQUIRE(result->EvaluateInteger() == 55);
|
||||
delete obj;
|
||||
delete parameter;
|
||||
delete script;
|
||||
delete func;
|
||||
delete result;
|
||||
UserDataStorage::ClearTypes();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user