Implements numeric for loops
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:
64
tests/integration/LoopTests.cpp
Normal file
64
tests/integration/LoopTests.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
#ifdef TESTS_BUILD
|
||||
#include <catch.hpp>
|
||||
#include "../src/Script.hpp"
|
||||
using namespace Porygon;
|
||||
|
||||
TEST_CASE( "Numerical for loop without step", "[integration]" ) {
|
||||
auto script = Script::Create(uR"(
|
||||
result = 0
|
||||
for i = 0,10 do
|
||||
result = result + 3
|
||||
end
|
||||
)");
|
||||
REQUIRE(!script->Diagnostics -> HasErrors());
|
||||
script->Evaluate();
|
||||
auto var = script->GetVariable(u"result");
|
||||
REQUIRE(var->EvaluateInteger() == 33);
|
||||
delete script;
|
||||
}
|
||||
|
||||
TEST_CASE( "Numerical for loop with step", "[integration]" ) {
|
||||
auto script = Script::Create(uR"(
|
||||
result = 0
|
||||
for i = 0,10,3 do
|
||||
result = result + 3
|
||||
end
|
||||
)");
|
||||
REQUIRE(!script->Diagnostics -> HasErrors());
|
||||
script->Evaluate();
|
||||
auto var = script->GetVariable(u"result");
|
||||
REQUIRE(var->EvaluateInteger() == 12);
|
||||
delete script;
|
||||
}
|
||||
|
||||
TEST_CASE( "Numerical for loop with negative step", "[integration]" ) {
|
||||
auto script = Script::Create(uR"(
|
||||
result = 0
|
||||
for i = 10,0,-1 do
|
||||
result = result + 3
|
||||
end
|
||||
)");
|
||||
REQUIRE(!script->Diagnostics -> HasErrors());
|
||||
script->Evaluate();
|
||||
auto var = script->GetVariable(u"result");
|
||||
REQUIRE(var->EvaluateInteger() == 33);
|
||||
delete script;
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE( "Numerical for loop creates variable", "[integration]" ) {
|
||||
auto script = Script::Create(uR"(
|
||||
result = 0
|
||||
for i = 0,5 do
|
||||
result = result + i
|
||||
end
|
||||
)");
|
||||
REQUIRE(!script->Diagnostics -> HasErrors());
|
||||
script->Evaluate();
|
||||
auto var = script->GetVariable(u"result");
|
||||
REQUIRE(var->EvaluateInteger() == 15);
|
||||
delete script;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user