Fix all valgrind leak issues in tests
Some checks failed
continuous-integration/drone/push Build is failing

Signed-off-by: Deukhoofd <deukhoofd@gmail.com>
This commit is contained in:
2019-06-24 13:38:41 +02:00
parent 76b8ba3ebc
commit 021750a135
13 changed files with 295 additions and 63 deletions

View File

@@ -23,8 +23,18 @@ namespace Porygon::Evaluation {
return v->EvaluateBool();
}
const char16_t *EvaluateEvalValueString(EvalValue *v) {
return (new u16string(v->EvaluateString()))->c_str();
size_t GetEvalValueStringLength(EvalValue *v) {
auto result = v->EvaluateString();
return result.size();
}
int EvaluateEvalValueString(EvalValue *v, char16_t dst[]){
auto result = v->EvaluateString();
for (int i = 0; i < result.size(); i++){
dst[i] = result[i];
}
dst[result.size() + 1] = '\0';
return 0;
}
@@ -52,13 +62,18 @@ namespace Porygon::Evaluation {
TEST_CASE( "Evaluate String", "[integration]" ) {
auto script = Porygon::Script::Create(u"\"foo bar\"");
auto sc = new u16string(u"\"foo bar\"");
auto script = Porygon::Script::Create(*sc);
REQUIRE(!script->Diagnostics -> HasErrors());
script->Evaluate();
auto lastValue = script->GetLastValue();
auto s = u16string(EvaluateEvalValueString(lastValue));
size_t size = GetEvalValueStringLength(lastValue);
char16_t dst[size + 1];
EvaluateEvalValueString(lastValue, dst);
auto s = u16string(dst);
REQUIRE(s == u"foo bar");
delete script;
delete sc;
}

View File

@@ -25,7 +25,7 @@ namespace Porygon::Evaluation{
: _iterator(table->GetTableIterator()), _end(table->GetTableIteratorEnd()){}
shared_ptr<EvalValue> GetCurrent() final{
return make_shared<StringEvalValue>(_iterator->first.GetString());
return make_shared<StringEvalValue>(*_iterator->first.GetString());
}
bool MoveNext() final{