@@ -2447,6 +2447,48 @@ class TestQgsExpression: public QObject
2447
2447
QCOMPARE ( badArray.evalErrorString (), QString ( " Cannot convert 'not an array' to array" ) );
2448
2448
}
2449
2449
2450
+ void compare_arrays ()
2451
+ {
2452
+ QCOMPARE ( QgsExpression ( " array() = array()" ).evaluate (), QVariant ( true ) );
2453
+ QCOMPARE ( QgsExpression ( " array(NULL) = array(NULL)" ).evaluate (), QVariant ( true ) );
2454
+ QCOMPARE ( QgsExpression ( " array() = array(NULL)" ).evaluate (), QVariant ( false ) );
2455
+ QCOMPARE ( QgsExpression ( " array(1, NULL) = array(NULL, 1)" ).evaluate (), QVariant ( false ) );
2456
+
2457
+ QCOMPARE ( QgsExpression ( " array('hello') = array('hello')" ).evaluate (), QVariant ( true ) );
2458
+ QCOMPARE ( QgsExpression ( " array('hello') = array('hello2')" ).evaluate (), QVariant ( false ) );
2459
+ QCOMPARE ( QgsExpression ( " array('h', 'e', 'l', 'l', 'o') = array('h', 'e', 'l', 'l', 'o')" ).evaluate (), QVariant ( true ) );
2460
+ QCOMPARE ( QgsExpression ( " array('h', 'e', 'l', 'l', 'o') = array('h', 'e', 'l', 'l')" ).evaluate (), QVariant ( false ) );
2461
+
2462
+ QCOMPARE ( QgsExpression ( " array('1') = array(1)" ).evaluate (), QVariant ( true ) );
2463
+ QCOMPARE ( QgsExpression ( " array('1.2') = array(1.2)" ).evaluate (), QVariant ( true ) );
2464
+
2465
+ QCOMPARE ( QgsExpression ( " array() != array()" ).evaluate (), QVariant ( false ) );
2466
+ QCOMPARE ( QgsExpression ( " array(NULL) != array(NULL)" ).evaluate (), QVariant ( false ) );
2467
+ QCOMPARE ( QgsExpression ( " array() != array(NULL)" ).evaluate (), QVariant ( true ) );
2468
+ QCOMPARE ( QgsExpression ( " array('hello') != array('hello')" ).evaluate (), QVariant ( false ) );
2469
+ QCOMPARE ( QgsExpression ( " array('hello') != array('hello2')" ).evaluate (), QVariant ( true ) );
2470
+
2471
+ QCOMPARE ( QgsExpression ( " array() < array(1)" ).evaluate (), QVariant ( true ) );
2472
+ QCOMPARE ( QgsExpression ( " array(1) < array(NULL)" ).evaluate (), QVariant ( true ) );
2473
+ QCOMPARE ( QgsExpression ( " array(1) < array(1)" ).evaluate (), QVariant ( false ) );
2474
+ QCOMPARE ( QgsExpression ( " array(1) < array(2)" ).evaluate (), QVariant ( true ) );
2475
+ QCOMPARE ( QgsExpression ( " array(2) < array(1)" ).evaluate (), QVariant ( false ) );
2476
+ QCOMPARE ( QgsExpression ( " array(1) < array(1, 2)" ).evaluate (), QVariant ( true ) );
2477
+ QCOMPARE ( QgsExpression ( " array(1, 2) < array(1)" ).evaluate (), QVariant ( false ) );
2478
+ QCOMPARE ( QgsExpression ( " array('h', 'e', 'l', 'l', 'o') < array('h', 'e', 'l', 'l')" ).evaluate (), QVariant ( false ) );
2479
+ QCOMPARE ( QgsExpression ( " array('h', 'e', 'l', 'l', 'o') > array('h', 'e', 'l', 'l')" ).evaluate (), QVariant ( true ) );
2480
+
2481
+ QCOMPARE ( QgsExpression ( " array() <= array(1)" ).evaluate (), QVariant ( true ) );
2482
+ QCOMPARE ( QgsExpression ( " array(1) <= array(NULL)" ).evaluate (), QVariant ( true ) );
2483
+ QCOMPARE ( QgsExpression ( " array(1) <= array(1)" ).evaluate (), QVariant ( true ) );
2484
+ QCOMPARE ( QgsExpression ( " array(1) <= array(2)" ).evaluate (), QVariant ( true ) );
2485
+ QCOMPARE ( QgsExpression ( " array(2) <= array(1)" ).evaluate (), QVariant ( false ) );
2486
+ QCOMPARE ( QgsExpression ( " array(1) <= array(1, 2)" ).evaluate (), QVariant ( true ) );
2487
+ QCOMPARE ( QgsExpression ( " array(1, 2) <= array(1)" ).evaluate (), QVariant ( false ) );
2488
+ QCOMPARE ( QgsExpression ( " array('h', 'e', 'l', 'l', 'o') <= array('h', 'e', 'l', 'l')" ).evaluate (), QVariant ( false ) );
2489
+ QCOMPARE ( QgsExpression ( " array('h', 'e', 'l', 'l', 'o') >= array('h', 'e', 'l', 'l')" ).evaluate (), QVariant ( true ) );
2490
+ }
2491
+
2450
2492
void eval_map ()
2451
2493
{
2452
2494
QgsFeature f ( 100 );
@@ -2543,6 +2585,8 @@ class TestQgsExpression: public QObject
2543
2585
QCOMPARE ( QgsExpression::quotedValue ( QVariant ( true ), QVariant::String ), QString ( " 'true'" ) );
2544
2586
QCOMPARE ( QgsExpression::quotedValue ( QVariant () ), QString ( " NULL" ) );
2545
2587
QCOMPARE ( QgsExpression::quotedValue ( QVariant (), QVariant::String ), QString ( " NULL" ) );
2588
+ QVariantList array = QVariantList () << QVariant ( 1 ) << QVariant ( " a" ) << QVariant ();
2589
+ QCOMPARE ( QgsExpression::quotedValue ( array ), QString ( " array( 1, 'a', NULL )" ) );
2546
2590
}
2547
2591
2548
2592
void reentrant ()
0 commit comments