[Marble-commits] KDE/kdeedu/marble

Thibaut Gridel tgridel at free.fr
Fri Jul 16 23:09:47 CEST 2010


SVN commit 1150814 by tgridel:

GeoData: showcase test for pointer-based GeoDataContainer

 M  +1 -1      src/lib/geodata/data/GeoDataFolder.h  
 M  +1 -1      src/lib/geodata/data/GeoDataPlacemark.h  
 M  +58 -0     tests/TestGeoData.cpp  


--- trunk/KDE/kdeedu/marble/src/lib/geodata/data/GeoDataFolder.h #1150813:1150814
@@ -59,7 +59,7 @@
     virtual QString nodeType() const;
     virtual bool isFolder() const { return true; }
 
-private:
+//private:
     GeoDataFolderPrivate *p() const;
 };
 
--- trunk/KDE/kdeedu/marble/src/lib/geodata/data/GeoDataPlacemark.h #1150813:1150814
@@ -188,7 +188,7 @@
     virtual void unpack( QDataStream& stream );
 
     virtual bool isPlacemark() const { return true; }
- private:
+// private:
     GeoDataPlacemarkPrivate *p() const;
 };
 
--- trunk/KDE/kdeedu/marble/tests/TestGeoData.cpp #1150813:1150814
@@ -13,6 +13,7 @@
 #include <QtCore/QDebug>
 #include "GeoDataDocument.h"
 #include "GeoDataFolder.h"
+#include "GeoDataPlacemark.h"
 #include "GeoDataCoordinates.h"
 #include "GeoDataLatLonAltBox.h"
 #include "GeoDataTypes.h"
@@ -25,6 +26,7 @@
     Q_OBJECT
  private slots:
     void nodeTypeTest();
+    void parentingTest();
     void normalizeLatTest_data();
     void normalizeLatTest();
     void normalizeLonTest_data();
@@ -68,6 +70,62 @@
     QCOMPARE( objectCopy.nodeType(), folderType );
 }
 
+void TestGeoData::parentingTest()
+{
+    GeoDataDocument *document = new GeoDataDocument;
+    GeoDataFolder *folder = new GeoDataFolder;
+
+    /// simple parenting test
+    GeoDataPlacemark *placemark = new GeoDataPlacemark;
+    placemark->setParent(document);
+    QCOMPARE(placemark->parent(), document);
+
+    /// simple append and child count test
+    document->append(placemark);
+
+    /// appending folder to document before feeding folder
+    document->append(folder);
+    QCOMPARE(document->size(), 2);
+
+    GeoDataPlacemark *placemark2 = new GeoDataPlacemark;
+    folder->append(placemark2);
+    QCOMPARE(folder->size(), 1);
+
+
+    /// retrieve child and check it matches placemark
+    GeoDataPlacemark *placemarkPtr;
+    QCOMPARE(document->child(0)->nodeType(), placemark->nodeType());
+    placemarkPtr = static_cast<GeoDataPlacemark*>(document->child(0));
+    QCOMPARE(placemarkPtr->p(), placemark->p());
+    QCOMPARE(placemarkPtr, placemark);
+
+    /// check retrieved placemark matches intented child
+    int position = document->childPosition(placemarkPtr);
+    QCOMPARE(position, 0);
+
+    /// retrieve child two and check it matches folder
+    GeoDataFolder *folderPtr;
+    QCOMPARE(document->child(1)->nodeType(), folder->nodeType());
+    folderPtr = static_cast<GeoDataFolder*>(document->child(1));
+    QCOMPARE(folderPtr->p(), folder->p());
+    QCOMPARE(folderPtr, folder);
+
+    /// check retrieved folder matches intended child
+    position = document->childPosition(folderPtr);
+    QCOMPARE(position, 1);
+
+    /// retrieve child three and check it matches placemark
+    QCOMPARE(folderPtr->size(), 1);
+    placemarkPtr = static_cast<GeoDataPlacemark*>(folderPtr->child(0));
+    QCOMPARE(placemarkPtr->nodeType(), placemark2->nodeType());
+    QCOMPARE(placemarkPtr->p(), placemark2->p());
+    QCOMPARE(placemarkPtr, placemark2);
+
+
+    /// check retrieved placemark matches intended child
+    QCOMPARE(folderPtr->childPosition(placemarkPtr), 0);
+}
+
 void TestGeoData::normalizeLatTest_data()
 {
     QTest::addColumn<qreal>( "latRadian" );


More information about the Marble-commits mailing list