Move Lexer to u16string handling, for unicode support
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2019-06-15 17:20:27 +02:00
parent f73bd2003c
commit 3dc67ec8a0
21 changed files with 189 additions and 145 deletions

View File

@@ -5,10 +5,10 @@
TEST_CASE( "Basic conditional", "[integration]" ) {
Script* script = Script::Create("if true then foo = true end");
REQUIRE(!script->Diagnostics -> HasErrors());
auto variable = script->GetVariable("foo");
auto variable = script->GetVariable(u"foo");
REQUIRE(variable == nullptr);
script->Evaluate();
variable = script->GetVariable("foo");
variable = script->GetVariable(u"foo");
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateBool());
delete script;
@@ -17,10 +17,10 @@ TEST_CASE( "Basic conditional", "[integration]" ) {
TEST_CASE( "If then, else", "[integration]" ) {
Script* script = Script::Create("if false then foo = false else foo = true end");
REQUIRE(!script->Diagnostics -> HasErrors());
auto variable = script->GetVariable("foo");
auto variable = script->GetVariable(u"foo");
REQUIRE(variable == nullptr);
script->Evaluate();
variable = script->GetVariable("foo");
variable = script->GetVariable(u"foo");
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateBool());
delete script;
@@ -29,10 +29,10 @@ TEST_CASE( "If then, else", "[integration]" ) {
TEST_CASE( "If then, else if", "[integration]" ) {
Script* script = Script::Create("if false then foo = false elseif true then foo = true end");
REQUIRE(!script->Diagnostics -> HasErrors());
auto variable = script->GetVariable("foo");
auto variable = script->GetVariable(u"foo");
REQUIRE(variable == nullptr);
script->Evaluate();
variable = script->GetVariable("foo");
variable = script->GetVariable(u"foo");
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateBool());
delete script;

View File

@@ -6,7 +6,7 @@ TEST_CASE( "Define script function", "[integration]" ) {
Script* script = Script::Create("function add(number a, number b) a + b end");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("add");
auto variable = script->GetVariable(u"add");
REQUIRE(variable != nullptr);
REQUIRE(variable->GetTypeClass() == TypeClass::Function);
delete script;
@@ -16,10 +16,10 @@ TEST_CASE( "Define script function and call", "[integration]" ) {
Script* script = Script::Create("function add(number a, number b) result = a + b end add(1, 2)");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("add");
auto variable = script->GetVariable(u"add");
REQUIRE(variable != nullptr);
REQUIRE(variable->GetTypeClass() == TypeClass::Function);
auto result = script->GetVariable("result");
auto result = script->GetVariable(u"result");
REQUIRE(result->GetTypeClass() == TypeClass::Number);
REQUIRE(result->EvaluateInteger() == 3);
delete script;
@@ -29,10 +29,10 @@ TEST_CASE( "Define script function and call multiple times", "[integration]" ) {
Script* script = Script::Create("result = 0 function add(number a) result = result + a end add(1) add(4)");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("add");
auto variable = script->GetVariable(u"add");
REQUIRE(variable != nullptr);
REQUIRE(variable->GetTypeClass() == TypeClass::Function);
auto result = script->GetVariable("result");
auto result = script->GetVariable(u"result");
REQUIRE(result->GetTypeClass() == TypeClass::Number);
REQUIRE(result->EvaluateInteger() == 5);
delete script;
@@ -43,15 +43,15 @@ TEST_CASE( "Define script function and call from extern", "[integration]" ) {
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
REQUIRE(script->HasFunction("add"));
REQUIRE(script->HasFunction(u"add"));
auto toAddVal = new IntegerEvalValue(5);
script->CallFunction("add", {toAddVal});
script->CallFunction(u"add", {toAddVal});
delete toAddVal;
toAddVal = new IntegerEvalValue(6);
script->CallFunction("add", {toAddVal});
script->CallFunction(u"add", {toAddVal});
delete toAddVal;
auto result = script->GetVariable("result");
auto result = script->GetVariable(u"result");
REQUIRE(result->GetTypeClass() == TypeClass::Number);
REQUIRE(result->EvaluateInteger() == 11);
delete script;
@@ -67,17 +67,17 @@ TEST_CASE( "Define script function and return", "[integration]" ) {
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
REQUIRE(script->HasFunction("add"));
REQUIRE(script->HasFunction(u"add"));
auto toAddVal = new IntegerEvalValue(5);
auto toAddVal2 = new IntegerEvalValue(6);
auto result = script->CallFunction("add", {toAddVal, toAddVal2});
auto result = script->CallFunction(u"add", {toAddVal, toAddVal2});
delete toAddVal;
delete toAddVal2;
REQUIRE(result->GetTypeClass() == TypeClass::Number);
REQUIRE(result->EvaluateInteger() == 11);
auto variable = script->GetVariable("val");
auto variable = script->GetVariable(u"val");
REQUIRE(variable->GetTypeClass() == TypeClass::Number);
REQUIRE(variable->EvaluateInteger() == 0);
@@ -97,9 +97,9 @@ end
)");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
script->CallFunction("add", {});
script->CallFunction(u"add", {});
auto variable = script->GetVariable("val");
auto variable = script->GetVariable(u"val");
REQUIRE(variable->GetTypeClass() == TypeClass::Number);
REQUIRE(variable->EvaluateInteger() == 5);
@@ -127,7 +127,7 @@ test()
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("result");
auto variable = script->GetVariable(u"result");
REQUIRE(variable->GetTypeClass() == TypeClass::Number);
REQUIRE(variable->EvaluateInteger() == 50);

View File

@@ -7,7 +7,7 @@ TEST_CASE( "String indexing", "[integration]" ) {
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto lastValue = script->GetLastValue();
REQUIRE(*lastValue->EvaluateString() == "b");
REQUIRE(*lastValue->EvaluateString() == u"b");
delete script;
}

View File

@@ -9,7 +9,7 @@ TEST_CASE( "Simple String", "[integration]" ) {
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto lastValue = script->GetLastValue();
REQUIRE(*lastValue->EvaluateString() == "foo bar");
REQUIRE(*lastValue->EvaluateString() == u"foo bar");
delete script;
}
@@ -18,7 +18,7 @@ TEST_CASE( "String Concat", "[integration]" ) {
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto lastValue = script->GetLastValue();
REQUIRE(*lastValue->EvaluateString() == "foobar");
REQUIRE(*lastValue->EvaluateString() == u"foobar");
delete script;
}
@@ -27,7 +27,7 @@ TEST_CASE( "String Concat 2", "[integration]" ) {
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto lastValue = script->GetLastValue();
REQUIRE(*lastValue->EvaluateString() == "foobar");
REQUIRE(*lastValue->EvaluateString() == u"foobar");
delete script;
}

View File

@@ -7,7 +7,7 @@ TEST_CASE( "Create empty table", "[integration]" ) {
Script* script = Script::Create("table = {}");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("table");
auto variable = script->GetVariable(u"table");
REQUIRE(variable != nullptr);
delete script;
}
@@ -16,7 +16,7 @@ TEST_CASE( "Create simple integer table", "[integration]" ) {
Script* script = Script::Create("table = {100, 50, 20, 5, -100, 50+50}");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("table");
auto variable = script->GetVariable(u"table");
REQUIRE(variable != nullptr);
delete script;
}
@@ -25,7 +25,7 @@ TEST_CASE( "Create simple string table", "[integration]" ) {
Script* script = Script::Create("table = {'bla', 'test', 'foo', 'bar'}");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("table");
auto variable = script->GetVariable(u"table");
REQUIRE(variable != nullptr);
delete script;
}
@@ -39,7 +39,7 @@ return table[3]
REQUIRE(!script->Diagnostics -> HasErrors());
auto variable = script->Evaluate();
REQUIRE(variable != nullptr);
REQUIRE(*variable->EvaluateString() == "foo");
REQUIRE(*variable->EvaluateString() == u"foo");
delete script;
}
@@ -53,10 +53,10 @@ table = {
)");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("table");
auto variable = script->GetVariable(u"table");
REQUIRE(variable != nullptr);
auto table = (TableEvalValue*)variable;
CHECK(*table->IndexValue("foo")->EvaluateString() == "test");
CHECK(*table->IndexValue("foo")->EvaluateString() == u"test");
CHECK(table->IndexValue("bar")->EvaluateInteger() == 100);
delete script;
}

View File

@@ -38,7 +38,7 @@ end
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto parameter = new UserDataValue(HashedString::ConstHash("testObject"), new UserDataTestObject());
auto variable = script->CallFunction("testFunc", {parameter});
auto variable = script->CallFunction(u"testFunc", {parameter});
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateInteger() == 10);
delete script;
@@ -55,7 +55,7 @@ end
script->Evaluate();
auto obj = new UserDataTestObject();
auto parameter = new UserDataValue(HashedString::ConstHash("testObject"), obj);
script->CallFunction("testFunc", {parameter});
script->CallFunction(u"testFunc", {parameter});
delete script;
REQUIRE(obj->foo == 5000);
delete obj;

View File

@@ -5,10 +5,10 @@
TEST_CASE( "Create script variable", "[integration]" ) {
Script* script = Script::Create("foo = true");
REQUIRE(!script->Diagnostics -> HasErrors());
auto variable = script->GetVariable("foo");
auto variable = script->GetVariable(u"foo");
REQUIRE(variable == nullptr);
script->Evaluate();
variable = script->GetVariable("foo");
variable = script->GetVariable(u"foo");
REQUIRE(variable != nullptr);
REQUIRE(variable->EvaluateBool());
delete script;
@@ -17,7 +17,7 @@ TEST_CASE( "Create script variable", "[integration]" ) {
TEST_CASE( "Create local variable", "[integration]" ) {
Script* script = Script::Create("local foo = true");
REQUIRE(!script->Diagnostics -> HasErrors());
REQUIRE_FALSE(script->HasVariable("foo"));
REQUIRE_FALSE(script->HasVariable(u"foo"));
script->Evaluate();
delete script;
}
@@ -27,7 +27,7 @@ TEST_CASE( "Create script variable and use", "[integration]" ) {
"bar = not foo");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("bar");
auto variable = script->GetVariable(u"bar");
REQUIRE(variable != nullptr);
CHECK(variable->EvaluateBool());
delete script;
@@ -38,7 +38,7 @@ TEST_CASE( "Create local variable and use", "[integration]" ) {
"bar = not foo");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto variable = script->GetVariable("bar");
auto variable = script->GetVariable(u"bar");
REQUIRE(variable != nullptr);
CHECK(variable->EvaluateBool());
delete script;
@@ -55,9 +55,9 @@ end
)");
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
script -> CallFunction("bar", {});
script -> CallFunction("bar", {});
auto variable = script->GetVariable("result");
script -> CallFunction(u"bar", {});
script -> CallFunction(u"bar", {});
auto variable = script->GetVariable(u"result");
REQUIRE(variable != nullptr);
CHECK(variable->EvaluateInteger() == 2);
delete script;