@@ -285,6 +285,7 @@ class TestQgsExpression: public QObject
285285 QTest::newRow ( " max(1,3.5,-2.1)" ) << " max(1,3.5,-2.1)" << false << QVariant ( 3.5 );
286286 QTest::newRow ( " min(-1.5)" ) << " min(-1.5)" << false << QVariant ( -1.5 );
287287 QTest::newRow ( " min(-16.6,3.5,-2.1)" ) << " min(-16.6,3.5,-2.1)" << false << QVariant ( -16.6 );
288+ QTest::newRow ( " min(5,3.5,-2.1)" ) << " min(5,3.5,-2.1)" << false << QVariant ( -2.1 );
288289 QTest::newRow ( " clamp(-2,1,5)" ) << " clamp(-2,1,5)" << false << QVariant ( 1.0 );
289290 QTest::newRow ( " clamp(-2,-10,5)" ) << " clamp(-2,-10,5)" << false << QVariant ( -2.0 );
290291 QTest::newRow ( " clamp(-2,100,5)" ) << " clamp(-2,100,5)" << false << QVariant ( 5.0 );
@@ -327,6 +328,7 @@ class TestQgsExpression: public QObject
327328 QTest::newRow ( " substr" ) << " substr('HeLLo', 3,2)" << false << QVariant ( " LL" );
328329 QTest::newRow ( " substr outside" ) << " substr('HeLLo', -5,2)" << false << QVariant ( " " );
329330 QTest::newRow ( " regexp_substr" ) << " regexp_substr('abc123','(\\\\ d+)')" << false << QVariant ( " 123" );
331+ QTest::newRow ( " regexp_substr no hit" ) << " regexp_substr('abcdef','(\\\\ d+)')" << false << QVariant ( " " );
330332 QTest::newRow ( " regexp_substr invalid" ) << " regexp_substr('abc123','([[[')" << true << QVariant ();
331333 QTest::newRow ( " strpos" ) << " strpos('Hello World','World')" << false << QVariant ( 6 );
332334 QTest::newRow ( " strpos outside" ) << " strpos('Hello World','blah')" << false << QVariant ( -1 );
@@ -345,6 +347,8 @@ class TestQgsExpression: public QObject
345347 QTest::newRow ( " wordwrap" ) << " wordwrap('university of qgis',-3,' ')" << false << QVariant ( " university\n of qgis" );
346348 QTest::newRow ( " wordwrap" ) << " wordwrap('university of qgis\n supports many multiline',-5,' ')" << false << QVariant ( " university\n of qgis\n supports\n many multiline" );
347349 QTest::newRow ( " format" ) << " format('%1 %2 %3 %1', 'One', 'Two', 'Three')" << false << QVariant ( " One Two Three One" );
350+ QTest::newRow ( " concat" ) << " concat('a', 'b', 'c', 'd')" << false << QVariant ( " abcd" );
351+ QTest::newRow ( " concat single" ) << " concat('a')" << false << QVariant ( " a" );
348352
349353 // implicit conversions
350354 QTest::newRow ( " implicit int->text" ) << " length(123)" << false << QVariant ( 3 );
@@ -977,6 +981,15 @@ class TestQgsExpression: public QObject
977981 lst << i;
978982 QtConcurrent::blockingMap ( lst, _parseAndEvalExpr );
979983 }
984+
985+ void evaluateToDouble ()
986+ {
987+ QCOMPARE ( QgsExpression::evaluateToDouble ( QString ( " 5" ), 0.0 ), 5.0 );
988+ QCOMPARE ( QgsExpression::evaluateToDouble ( QString ( " 5+6" ), 0.0 ), 11.0 );
989+ QCOMPARE ( QgsExpression::evaluateToDouble ( QString ( " 5*" ), 7.0 ), 7.0 );
990+ QCOMPARE ( QgsExpression::evaluateToDouble ( QString ( " a" ), 9.0 ), 9.0 );
991+ QCOMPARE ( QgsExpression::evaluateToDouble ( QString (), 9.0 ), 9.0 );
992+ }
980993};
981994
982995QTEST_MAIN ( TestQgsExpression )
0 commit comments