Files
GDevelop/Core/tests/VariableParser.cpp
T

68 lines
2.0 KiB
C++

/*
* GDevelop Core
* Copyright 2008-2015 Florian Rival (Florian.Rival@gmail.com). All rights reserved.
* This project is released under the MIT License.
*/
/**
* @file Tests covering common features of GDevelop Core.
*/
#include "catch.hpp"
#include "GDCore/String.h"
#include "GDCore/Events/Parsers/VariableParser.h"
namespace
{
class TestVariableParserCallbacks : public gd::VariableParserCallbacks
{
public:
TestVariableParserCallbacks(gd::String &debugStr) : VariableParserCallbacks(), debugStr(debugStr) {}
virtual void OnRootVariable(gd::String variableName)
{
debugStr += "OnRootVariable(" + variableName + ")\n";
}
virtual void OnChildVariable(gd::String variableName)
{
debugStr += "OnChildVariable(" + variableName + ")\n";
}
virtual void OnChildSubscript(gd::String stringExpression)
{
debugStr += "OnChildSubscript(" + stringExpression + ")\n";
}
private:
gd::String &debugStr;
};
}
TEST_CASE( "VariableParser", "[common][events]" ) {
SECTION("Basics") {
{
gd::String str;
TestVariableParserCallbacks callbacks(str);
gd::VariableParser parser("myVar");
parser.Parse(callbacks);
REQUIRE( str == "OnRootVariable(myVar)\n" );
}
{
gd::String str;
TestVariableParserCallbacks callbacks(str);
gd::VariableParser parser("myVar.child1.child2");
parser.Parse(callbacks);
REQUIRE( str == "OnRootVariable(myVar)\nOnChildVariable(child1)\nOnChildVariable(child2)\n" );
}
{
gd::String str;
TestVariableParserCallbacks callbacks(str);
gd::VariableParser parser("myVar[ToString(i) + \"é\"].child");
parser.Parse(callbacks);
REQUIRE( str == "OnRootVariable(myVar)\nOnChildSubscript(ToString(i) + \"é\")\nOnChildVariable(child)\n" );
}
}
}