Esempio n. 1
0
void TestQgsDataDefined::referencedColumns()
{
  QgsDataDefined dd;
  dd.setActive( true );
  dd.setUseExpression( true );

  QStringList cols = dd.referencedColumns();
  QVERIFY( cols.isEmpty() );

  //set as expression
  dd.setExpressionString( "1+col1+col2" );
  cols = dd.referencedColumns();
  QCOMPARE( cols.length(), 2 );
  QVERIFY( cols.contains( QString( "col1" ) ) );
  QVERIFY( cols.contains( QString( "col2" ) ) );

  //alter expression and check that referenced columns is updated
  dd.setExpressionString( "1+col1+col2+col3" );
  cols = dd.referencedColumns();
  QCOMPARE( cols.length(), 3 );
  QVERIFY( cols.contains( QString( "col1" ) ) );
  QVERIFY( cols.contains( QString( "col2" ) ) );
  QVERIFY( cols.contains( QString( "col3" ) ) );

  //switch to field
  dd.setUseExpression( false );
  cols = dd.referencedColumns();
  QVERIFY( cols.isEmpty() );

  dd.setField( "field" );
  cols = dd.referencedColumns();
  QCOMPARE( cols.length(), 1 );
  QVERIFY( cols.contains( QString( "field" ) ) );

  //switch back to expression
  dd.setUseExpression( true );
  cols = dd.referencedColumns();
  QCOMPARE( cols.length(), 3 );
  QVERIFY( cols.contains( QString( "col1" ) ) );
  QVERIFY( cols.contains( QString( "col2" ) ) );
  QVERIFY( cols.contains( QString( "col3" ) ) );
}