Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Allow storing QgsField and QgsFields in a QVariant
  • Loading branch information
nyalldawson committed May 5, 2015
1 parent ee17eb9 commit fba32f1
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/core/qgsfield.h
Expand Up @@ -154,6 +154,8 @@ class CORE_EXPORT QgsField

}; // class QgsField

Q_DECLARE_METATYPE( QgsField );


/** \class QgsFields
* \ingroup core
Expand Down Expand Up @@ -270,4 +272,6 @@ class CORE_EXPORT QgsFields

};

Q_DECLARE_METATYPE( QgsFields );

#endif
13 changes: 13 additions & 0 deletions tests/src/core/testqgsfield.cpp
Expand Up @@ -35,6 +35,7 @@ class TestQgsField: public QObject
void assignment();
void gettersSetters(); //test getters and setters
void equality(); //test equality operators
void asVariant(); //test conversion to and from a QVariant
private:
};

Expand Down Expand Up @@ -147,5 +148,17 @@ void TestQgsField::equality()
field2.setPrecision( 2 );
}

void TestQgsField::asVariant()
{
QgsField original( "original", QVariant::Double, "double", 5, 2, "comment" );

//convert to and from a QVariant
QVariant var = QVariant::fromValue( original );
QVERIFY( var.isValid() );

QgsField fromVar = qvariant_cast<QgsField>( var );
QCOMPARE( fromVar, original );
}

QTEST_MAIN( TestQgsField )
#include "testqgsfield.moc"
19 changes: 19 additions & 0 deletions tests/src/core/testqgsfields.cpp
Expand Up @@ -34,6 +34,7 @@ class TestQgsFields: public QObject
void copy();// test cpy destruction (double delete)
void assignment();
void equality(); //test equality operators
void asVariant(); //test conversion to and from a QVariant
private:
};

Expand Down Expand Up @@ -125,5 +126,23 @@ void TestQgsFields::equality()
QVERIFY( fields1 != fields2 );
}

void TestQgsFields::asVariant()
{
QgsField field1;
field1.setName( "name" );
QgsField field2;
field2.setName( "name" );
QgsFields original;
original.append( field1 );
original.append( field2 );

//convert to and from a QVariant
QVariant var = QVariant::fromValue( original );
QVERIFY( var.isValid() );

QgsFields fromVar = qvariant_cast<QgsFields>( var );
QCOMPARE( fromVar, original );
}

QTEST_MAIN( TestQgsFields )
#include "testqgsfields.moc"

0 comments on commit fba32f1

Please sign in to comment.