Skip to content

Commit d955b03

Browse files
committedMay 13, 2015
Boost test coverage of QgsField / QgsFields
1 parent 03da1fc commit d955b03

File tree

2 files changed

+279
-1
lines changed

2 files changed

+279
-1
lines changed
 

‎tests/src/core/testqgsfield.cpp

Lines changed: 125 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,18 @@ class TestQgsField: public QObject
3636
void gettersSetters(); //test getters and setters
3737
void equality(); //test equality operators
3838
void asVariant(); //test conversion to and from a QVariant
39+
void displayString();
40+
void convertCompatible();
41+
3942
private:
4043
};
4144

4245
void TestQgsField::initTestCase()
4346
{
44-
47+
// Set up the QSettings environment
48+
QCoreApplication::setOrganizationName( "QGIS" );
49+
QCoreApplication::setOrganizationDomain( "qgis.org" );
50+
QCoreApplication::setApplicationName( "QGIS-TEST" );
4551
}
4652

4753
void TestQgsField::cleanupTestCase()
@@ -160,5 +166,123 @@ void TestQgsField::asVariant()
160166
QCOMPARE( fromVar, original );
161167
}
162168

169+
void TestQgsField::displayString()
170+
{
171+
QgsField stringField( "string", QVariant::String, "string" );
172+
173+
//test string value
174+
QString test( "test string" );
175+
QCOMPARE( stringField.displayString( test ), test );
176+
177+
//test NULL
178+
QSettings s;
179+
s.setValue( "qgis/nullValue", "TEST NULL" );
180+
QVariant nullString = QVariant( QVariant::String );
181+
QCOMPARE( stringField.displayString( nullString ), QString( "TEST NULL" ) );
182+
183+
//test int value
184+
QgsField intField( "int", QVariant::String, "int" );
185+
QCOMPARE( intField.displayString( 5 ), QString( "5" ) );
186+
//test NULL int
187+
QVariant nullInt = QVariant( QVariant::Int );
188+
QCOMPARE( intField.displayString( nullInt ), QString( "TEST NULL" ) );
189+
190+
//test double value
191+
QgsField doubleField( "double", QVariant::Double, "double", 10, 3 );
192+
QCOMPARE( doubleField.displayString( 5.005005 ), QString( "5.005" ) );
193+
//test NULL double
194+
QVariant nullDouble = QVariant( QVariant::Double );
195+
QCOMPARE( doubleField.displayString( nullDouble ), QString( "TEST NULL" ) );
196+
197+
}
198+
199+
void TestQgsField::convertCompatible()
200+
{
201+
//test string field
202+
QgsField stringField( "string", QVariant::String, "string" );
203+
204+
QVariant stringVar( "test string" );
205+
QVERIFY( stringField.convertCompatible( stringVar ) );
206+
QCOMPARE( stringVar.toString( ), QString( "test string" ) );
207+
QVariant nullString = QVariant( QVariant::String );
208+
QVERIFY( stringField.convertCompatible( nullString ) );
209+
QCOMPARE( nullString.type(), QVariant::String );
210+
QVERIFY( nullString.isNull() );
211+
QVariant intVar( 5 );
212+
QVERIFY( stringField.convertCompatible( intVar ) );
213+
QCOMPARE( intVar.type(), QVariant::String );
214+
QCOMPARE( intVar, QVariant( "5" ) );
215+
QVariant nullInt = QVariant( QVariant::Int );
216+
QVERIFY( stringField.convertCompatible( nullInt ) );
217+
QCOMPARE( nullInt.type(), QVariant::String );
218+
QVERIFY( nullInt.isNull() );
219+
QVariant doubleVar( 9.7 );
220+
QVERIFY( stringField.convertCompatible( doubleVar ) );
221+
QCOMPARE( doubleVar.type(), QVariant::String );
222+
QCOMPARE( doubleVar, QVariant( "9.7" ) );
223+
QVariant nullDouble = QVariant( QVariant::Double );
224+
QVERIFY( stringField.convertCompatible( nullDouble ) );
225+
QCOMPARE( nullDouble.type(), QVariant::String );
226+
QVERIFY( nullDouble.isNull() );
227+
228+
//test double
229+
QgsField doubleField( "double", QVariant::Double, "double" );
230+
231+
stringVar = QVariant( "test string" );
232+
QVERIFY( !doubleField.convertCompatible( stringVar ) );
233+
QCOMPARE( stringVar.type(), QVariant::Double );
234+
QVERIFY( stringVar.isNull( ) );
235+
nullString = QVariant( QVariant::String );
236+
QVERIFY( doubleField.convertCompatible( nullString ) );
237+
QCOMPARE( nullString.type(), QVariant::Double );
238+
QVERIFY( nullString.isNull() );
239+
intVar = QVariant( 5 );
240+
QVERIFY( doubleField.convertCompatible( intVar ) );
241+
QCOMPARE( intVar.type(), QVariant::Double );
242+
QCOMPARE( intVar, QVariant( 5.0 ) );
243+
nullInt = QVariant( QVariant::Int );
244+
QVERIFY( doubleField.convertCompatible( nullInt ) );
245+
QCOMPARE( nullInt.type(), QVariant::Double );
246+
QVERIFY( nullInt.isNull() );
247+
doubleVar = QVariant( 9.7 );
248+
QVERIFY( doubleField.convertCompatible( doubleVar ) );
249+
QCOMPARE( doubleVar.type(), QVariant::Double );
250+
QCOMPARE( doubleVar, QVariant( 9.7 ) );
251+
nullDouble = QVariant( QVariant::Double );
252+
QVERIFY( doubleField.convertCompatible( nullDouble ) );
253+
QCOMPARE( nullDouble.type(), QVariant::Double );
254+
QVERIFY( nullDouble.isNull() );
255+
256+
//test special rules
257+
258+
//conversion of longlong to int
259+
QgsField intField( "int", QVariant::Int, "int" );
260+
QVariant longlong( 99999999999999999LL );
261+
QVERIFY( !intField.convertCompatible( longlong ) );
262+
QCOMPARE( longlong.type(), QVariant::Int );
263+
QVERIFY( longlong.isNull( ) );
264+
//conversion of longlong to longlong field
265+
QgsField longlongField( "long", QVariant::LongLong, "longlong" );
266+
longlong = QVariant( 99999999999999999LL );
267+
QVERIFY( longlongField.convertCompatible( longlong ) );
268+
QCOMPARE( longlong.type(), QVariant::LongLong );
269+
QCOMPARE( longlong, QVariant( 99999999999999999LL ) );
270+
271+
//double with precision
272+
QgsField doubleWithPrecField( "double", QVariant::Double, "double", 10, 3 );
273+
doubleVar = QVariant( 10.12345678 );
274+
//note - this returns true!
275+
QVERIFY( doubleWithPrecField.convertCompatible( doubleVar ) );
276+
QCOMPARE( doubleVar.type(), QVariant::Double );
277+
QCOMPARE( doubleVar.toDouble(), 10.123 );
278+
279+
//truncating string length
280+
QgsField stringWithLen( "string", QVariant::String, "string", 3 );
281+
stringVar = QVariant( "longstring" );
282+
QVERIFY( !stringWithLen.convertCompatible( stringVar ) );
283+
QCOMPARE( stringVar.type(), QVariant::String );
284+
QCOMPARE( stringVar.toString(), QString( "lon" ) );
285+
}
286+
163287
QTEST_MAIN( TestQgsField )
164288
#include "testqgsfield.moc"

‎tests/src/core/testqgsfields.cpp

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,17 @@ class TestQgsFields: public QObject
3535
void assignment();
3636
void equality(); //test equality operators
3737
void asVariant(); //test conversion to and from a QVariant
38+
void clear();
39+
void exists();
40+
void count();
41+
void isEmpty();
42+
void remove();
43+
void extend();
44+
void byIndex();
45+
void byName();
46+
void fieldOrigin();
47+
void fieldOriginIndex();
48+
3849
private:
3950
};
4051

@@ -144,5 +155,148 @@ void TestQgsFields::asVariant()
144155
QCOMPARE( fromVar, original );
145156
}
146157

158+
void TestQgsFields::clear()
159+
{
160+
QgsFields original;
161+
QgsField field( "testfield" );
162+
original.append( field );
163+
QCOMPARE( original.count(), 1 );
164+
QgsFields copy( original );
165+
166+
copy.clear();
167+
QCOMPARE( copy.count(), 0 );
168+
QCOMPARE( original.count(), 1 );
169+
}
170+
171+
void TestQgsFields::exists()
172+
{
173+
QgsFields fields;
174+
QgsField field( "testfield" );
175+
fields.append( field );
176+
177+
QVERIFY( !fields.exists( -1 ) );
178+
QVERIFY( !fields.exists( 1 ) );
179+
QVERIFY( fields.exists( 0 ) );
180+
}
181+
182+
void TestQgsFields::count()
183+
{
184+
QgsFields fields;
185+
QCOMPARE( fields.count(), 0 );
186+
QCOMPARE( fields.size(), 0 );
187+
188+
QgsField field( "testfield" );
189+
fields.append( field );
190+
QCOMPARE( fields.count(), 1 );
191+
QCOMPARE( fields.size(), 1 );
192+
193+
QgsField field2( "testfield2" );
194+
fields.append( field2 );
195+
QCOMPARE( fields.count(), 2 );
196+
QCOMPARE( fields.size(), 2 );
197+
}
198+
199+
void TestQgsFields::isEmpty()
200+
{
201+
QgsFields fields;
202+
QVERIFY( fields.isEmpty() );
203+
204+
QgsField field( "testfield" );
205+
fields.append( field );
206+
QVERIFY( !fields.isEmpty() );
207+
}
208+
209+
void TestQgsFields::remove()
210+
{
211+
QgsFields fields;
212+
213+
//test for no crash
214+
fields.remove( 1 );
215+
216+
QgsField field( "testfield" );
217+
fields.append( field );
218+
QgsField field2( "testfield2" );
219+
fields.append( field2 );
220+
221+
//test for no crash
222+
fields.remove( -1 );
223+
fields.remove( 5 );
224+
225+
//remove valid field
226+
fields.remove( 0 );
227+
QCOMPARE( fields.count(), 1 );
228+
QCOMPARE( fields.at( 0 ).name(), QString( "testfield2" ) );
229+
}
230+
231+
void TestQgsFields::extend()
232+
{
233+
QgsFields destination;
234+
QgsField field( "testfield" );
235+
destination.append( field );
236+
QgsField field2( "testfield2" );
237+
destination.append( field2 );
238+
239+
QgsFields source;
240+
QgsField field3( "testfield3" );
241+
source.append( field3, QgsFields::OriginJoin, 5 );
242+
QgsField field4( "testfield4" );
243+
source.append( field4 );
244+
245+
QCOMPARE( destination.count(), 2 );
246+
destination.extend( source );
247+
QCOMPARE( destination.count(), 4 );
248+
QCOMPARE( destination.at( 2 ), field3 );
249+
QCOMPARE( destination.at( 3 ), field4 );
250+
}
251+
252+
void TestQgsFields::byIndex()
253+
{
254+
QgsFields fields;
255+
QgsField field( "testfield" );
256+
fields.append( field );
257+
QgsField field2( "testfield2" );
258+
fields.append( field2 );
259+
260+
QCOMPARE( fields[0], field );
261+
QCOMPARE( fields[1], field2 );
262+
263+
const QgsFields& constFields = fields;
264+
QCOMPARE( constFields[0], field );
265+
QCOMPARE( constFields[1], field2 );
266+
QCOMPARE( constFields.at( 0 ), field );
267+
QCOMPARE( constFields.at( 1 ), field2 );
268+
QCOMPARE( constFields.field( 0 ), field );
269+
QCOMPARE( constFields.field( 1 ), field2 );
270+
}
271+
272+
void TestQgsFields::byName()
273+
{
274+
QgsFields fields;
275+
QgsField field( "testfield" );
276+
fields.append( field );
277+
QgsField field2( "testfield2" );
278+
fields.append( field2 );
279+
280+
QCOMPARE( fields.field( "testfield" ), field );
281+
QCOMPARE( fields.field( "testfield2" ), field2 );
282+
}
283+
284+
void TestQgsFields::fieldOrigin()
285+
{
286+
QgsFields fields;
287+
QgsField field( QString( "testfield" ) );
288+
fields.append( field , QgsFields::OriginJoin );
289+
QgsField field2( QString( "testfield2" ) );
290+
fields.append( field2, QgsFields::OriginExpression );
291+
292+
QCOMPARE( fields.fieldOrigin( 0 ), QgsFields::OriginJoin );
293+
QCOMPARE( fields.fieldOrigin( 1 ), QgsFields::OriginExpression );
294+
}
295+
296+
void TestQgsFields::fieldOriginIndex()
297+
{
298+
299+
}
300+
147301
QTEST_MAIN( TestQgsFields )
148302
#include "testqgsfields.moc"

0 commit comments

Comments
 (0)
Please sign in to comment.