Skip to content

Commit

Permalink
qgsVariantEqual second iteration
Browse files Browse the repository at this point in the history
  • Loading branch information
elpaso committed Oct 1, 2018
1 parent 90e2c45 commit a68a82c
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 19 deletions.
8 changes: 4 additions & 4 deletions python/core/auto_generated/qgis.sip.in
Expand Up @@ -189,12 +189,12 @@ QVariant data types (such as strings, numeric values, dates and times)

bool qgsVariantEqual( const QVariant &lhs, const QVariant &rhs );
%Docstring
Compares two QVariant values and return whether they are equal, it takes into
account null values.
Compares two QVariant values and returns whether they are equal, NULL values are treated as equal.

:param lhs: first value
@param rhs second value
@return true if values are equal
:param rhs: second value

:return: true if values are equal
%End


Expand Down
7 changes: 3 additions & 4 deletions src/core/qgis.h
Expand Up @@ -449,12 +449,11 @@ CORE_EXPORT qlonglong qgsPermissiveToLongLong( QString string, bool &ok );
CORE_EXPORT bool qgsVariantLessThan( const QVariant &lhs, const QVariant &rhs );

/**
* Compares two QVariant values and return whether they are equal, it takes into
* account null values.
* Compares two QVariant values and returns whether they are equal, NULL values are treated as equal.
*
* \param lhs first value
* @param rhs second value
* @return true if values are equal
* \param rhs second value
* \return true if values are equal
*/
CORE_EXPORT bool qgsVariantEqual( const QVariant &lhs, const QVariant &rhs );

Expand Down
37 changes: 26 additions & 11 deletions tests/src/core/testqgis.cpp
Expand Up @@ -362,17 +362,32 @@ void TestQgis::testQgsRound()

void TestQgis::testQgsVariantEqual()
{
QVariant lhs;
QVariant rhs;

QVERIFY( lhs == rhs );
lhs.setValue( 0 );
QVERIFY( lhs != rhs );
rhs.setValue( 0 );
QVERIFY( lhs == rhs );
lhs.setValue( 1.2345 );
rhs.setValue( 1.2345 );
QVERIFY( lhs == rhs );

// Invalid
QVERIFY( qgsVariantEqual( QVariant(), QVariant() ) );
QVERIFY( QVariant() == QVariant() );

// Zero
QVERIFY( qgsVariantEqual( QVariant( 0 ), QVariant( 0.0f ) ) );
QVERIFY( QVariant( 0 ) == QVariant( 0.0f ) );

// Double
QVERIFY( qgsVariantEqual( QVariant( 1.234 ), QVariant( 1.234 ) ) );
QVERIFY( qgsVariantEqual( QVariant( QVariant::Int ), QVariant( QVariant::Int ) ) );

// This is what we actually wanted to fix with qgsVariantEqual
// zero != NULL
QVERIFY( ! qgsVariantEqual( QVariant( 0 ), QVariant( QVariant::Int ) ) );
QVERIFY( ! qgsVariantEqual( QVariant( 0 ), QVariant( QVariant::Double ) ) );
QVERIFY( ! qgsVariantEqual( QVariant( 0.0f ), QVariant( QVariant::Int ) ) );
QVERIFY( ! qgsVariantEqual( QVariant( 0.0f ), QVariant( QVariant::Double ) ) );
QVERIFY( QVariant( 0 ) == QVariant( QVariant::Int ) );

// NULL identities
QVERIFY( qgsVariantEqual( QVariant( QVariant::Int ), QVariant( QVariant::Int ) ) );
QVERIFY( qgsVariantEqual( QVariant( QVariant::Double ), QVariant( QVariant::Double ) ) );


}


Expand Down

0 comments on commit a68a82c

Please sign in to comment.