forked from qt-creator/qt-creator
QmlDesigner: Add another test to ConnectionEditor
This covers field expressions with more then two members. Change-Id: Idccfac607f72ff9aa78ed3b8da560f7d7a8e694d Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Ali Kianian <ali.kianian@qt.io>
This commit is contained in:
@@ -35,6 +35,7 @@ private slots:
|
|||||||
void parseConsoleLog();
|
void parseConsoleLog();
|
||||||
void parseCallFunction();
|
void parseCallFunction();
|
||||||
void parseEmpty();
|
void parseEmpty();
|
||||||
|
void parseComplexCondition();
|
||||||
QByteArray countOne();
|
QByteArray countOne();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -337,6 +338,42 @@ void tst_ConnectionEditor::parseEmpty()
|
|||||||
QVERIFY(std::holds_alternative<ConnectionEditorStatements::EmptyBlock>(parsedStatement));
|
QVERIFY(std::holds_alternative<ConnectionEditorStatements::EmptyBlock>(parsedStatement));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_ConnectionEditor::parseComplexCondition()
|
||||||
|
{
|
||||||
|
auto result = ConnectionEditorEvaluator::parseStatement(
|
||||||
|
"{if (someItem.deeper.gothis && thistest.is.getit){someItem.trigger()}}");
|
||||||
|
auto &matchedCondition = ConnectionEditorStatements::matchedCondition(result);
|
||||||
|
QCOMPARE(matchedCondition.statements.count(), 2);
|
||||||
|
|
||||||
|
auto firstStatement = matchedCondition.statements.first();
|
||||||
|
QVERIFY(std::holds_alternative<ConnectionEditorStatements::Variable>(firstStatement));
|
||||||
|
|
||||||
|
auto variable = std::get<ConnectionEditorStatements::Variable>(firstStatement);
|
||||||
|
|
||||||
|
QCOMPARE(variable.nodeId, "someItem");
|
||||||
|
QCOMPARE(variable.propertyName, "deeper.gothis");
|
||||||
|
|
||||||
|
auto lastStatement = matchedCondition.statements.last();
|
||||||
|
QVERIFY(std::holds_alternative<ConnectionEditorStatements::Variable>(lastStatement));
|
||||||
|
|
||||||
|
variable = std::get<ConnectionEditorStatements::Variable>(lastStatement);
|
||||||
|
|
||||||
|
QCOMPARE(variable.nodeId, "thistest");
|
||||||
|
QCOMPARE(variable.propertyName, "is.getit");
|
||||||
|
|
||||||
|
matchedCondition.statements.clear();
|
||||||
|
matchedCondition.tokens.clear();
|
||||||
|
|
||||||
|
variable.nodeId = "justId";
|
||||||
|
variable.propertyName = {};
|
||||||
|
|
||||||
|
matchedCondition.statements.append(variable);
|
||||||
|
|
||||||
|
const QString source = ConnectionEditorStatements::toJavascript(result);
|
||||||
|
|
||||||
|
QVERIFY(source.startsWith("if (justId)"));
|
||||||
|
}
|
||||||
|
|
||||||
void tst_ConnectionEditor::test01()
|
void tst_ConnectionEditor::test01()
|
||||||
{
|
{
|
||||||
QFETCH(QString, statement);
|
QFETCH(QString, statement);
|
||||||
|
Reference in New Issue
Block a user