@@ -49,6 +49,8 @@ class TestQgsFields: public QObject
49
49
void toList ();
50
50
void allAttrsList ();
51
51
void appendExpressionField ();
52
+ void dataStream ();
53
+ void field (); // test QgsFields::Field
52
54
53
55
private:
54
56
};
@@ -400,5 +402,70 @@ void TestQgsFields::appendExpressionField()
400
402
QCOMPARE ( fields.fieldOriginIndex ( 2 ), 5 );
401
403
}
402
404
405
+ void TestQgsFields::dataStream ()
406
+ {
407
+ QgsField original1;
408
+ original1.setName ( " name" );
409
+ original1.setType ( QVariant::Int );
410
+ original1.setLength ( 5 );
411
+ original1.setPrecision ( 2 );
412
+ original1.setTypeName ( " typename1" );
413
+ original1.setComment ( " comment1" );
414
+
415
+ QgsField original2;
416
+ original2.setName ( " next name" );
417
+ original2.setType ( QVariant::Double );
418
+ original2.setLength ( 15 );
419
+ original2.setPrecision ( 3 );
420
+ original2.setTypeName ( " double" );
421
+ original2.setComment ( " comment for field 2" );
422
+
423
+ QgsFields originalFields;
424
+ originalFields.append ( original1 );
425
+ originalFields.append ( original2 );
426
+
427
+ QByteArray ba;
428
+ QDataStream ds ( &ba, QIODevice::ReadWrite );;
429
+ ds << originalFields;
430
+
431
+ QgsFields resultFields;
432
+ ds.device ()->seek ( 0 );
433
+ ds >> resultFields;
434
+
435
+ QCOMPARE ( resultFields, originalFields );
436
+ QCOMPARE ( resultFields.field ( 0 ).typeName (), originalFields.field ( 0 ).typeName () ); // typename is NOT required for equality
437
+ QCOMPARE ( resultFields.field ( 0 ).comment (), originalFields.field ( 0 ).comment () ); // comment is NOT required for equality
438
+ QCOMPARE ( resultFields.field ( 1 ).typeName (), originalFields.field ( 1 ).typeName () );
439
+ QCOMPARE ( resultFields.field ( 1 ).comment (), originalFields.field ( 1 ).comment () );
440
+ }
441
+
442
+ void TestQgsFields::field ()
443
+ {
444
+ QgsField original;
445
+ original.setName ( " name" );
446
+ original.setType ( QVariant::Int );
447
+ original.setLength ( 5 );
448
+ original.setPrecision ( 2 );
449
+
450
+ // test constructors for QgsFields::Field
451
+ QgsFields::Field fieldConstructor1 ( original, QgsFields::OriginJoin, 5 );
452
+ QCOMPARE ( fieldConstructor1.field , original );
453
+ QCOMPARE ( fieldConstructor1.origin , QgsFields::OriginJoin );
454
+ QCOMPARE ( fieldConstructor1.originIndex , 5 );
455
+
456
+ QgsFields::Field fieldConstructor2;
457
+ QCOMPARE ( fieldConstructor2.origin , QgsFields::OriginUnknown );
458
+ QCOMPARE ( fieldConstructor2.originIndex , -1 );
459
+
460
+ // test equality operators
461
+ QgsFields::Field field1 ( original, QgsFields::OriginJoin, 5 );
462
+ QgsFields::Field field2 ( original, QgsFields::OriginJoin, 5 );
463
+ QVERIFY ( field1 == field2 );
464
+ QgsFields::Field field3 ( original, QgsFields::OriginEdit, 5 );
465
+ QVERIFY ( field1 != field3 );
466
+ QgsFields::Field field4 ( original, QgsFields::OriginJoin, 6 );
467
+ QVERIFY ( field1 != field4 );
468
+ }
469
+
403
470
QTEST_MAIN ( TestQgsFields )
404
471
#include " testqgsfields.moc"
0 commit comments