From aaf70de71eb323dfe70c0a66815f872ba5be0e3a Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Fri, 24 Nov 2017 11:02:16 +0100 Subject: [PATCH] Add test for QgsExpressionContextScope::takeScopes --- tests/src/core/testqgsexpressioncontext.cpp | 31 +++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/src/core/testqgsexpressioncontext.cpp b/tests/src/core/testqgsexpressioncontext.cpp index 2bdfaf9d65e..eae3e2460b1 100644 --- a/tests/src/core/testqgsexpressioncontext.cpp +++ b/tests/src/core/testqgsexpressioncontext.cpp @@ -43,6 +43,7 @@ class TestQgsExpressionContext : public QObject void evaluate(); void setFeature(); void setFields(); + void takeScopes(); void globalScope(); void projectScope(); @@ -511,6 +512,36 @@ void TestQgsExpressionContext::setFields() QCOMPARE( contextWithScope.fields().at( 0 ).name(), QString( "testfield" ) ); } +void TestQgsExpressionContext::takeScopes() +{ + QgsExpressionContextUtils::setGlobalVariable( QStringLiteral( "test_global" ), "testval" ); + + QgsProject *project = QgsProject::instance(); + QgsExpressionContextUtils::setProjectVariable( project, QStringLiteral( "test_project" ), "testval" ); + + QgsExpressionContext context; + + QgsExpressionContextScope *projectScope = QgsExpressionContextUtils::projectScope( project ); + + QgsExpressionContextScope *globalScope = QgsExpressionContextUtils::globalScope(); + context << globalScope + << projectScope; + + QCOMPARE( context.variable( "test_global" ).toString(), QString( "testval" ) ); + QCOMPARE( context.variable( "test_project" ).toString(), QString( "testval" ) ); + + auto scopes = context.takeScopes(); + + QCOMPARE( scopes.length(), 2 ); + Q_ASSERT( scopes.at( 0 )->hasVariable( "test_global" ) ); + Q_ASSERT( scopes.at( 1 )->hasVariable( "test_project" ) ); + + qDeleteAll( scopes ); + + Q_ASSERT( !context.variable( "test_global" ).isValid() ); + Q_ASSERT( !context.variable( "test_project" ).isValid() ); +} + void TestQgsExpressionContext::globalScope() { QgsExpressionContextUtils::setGlobalVariable( QStringLiteral( "test" ), "testval" );