[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/plugins/chartshape/tests
From:       Johannes Simon <johannes.simon () gmail ! com>
Date:       2010-09-20 18:49:04
Message-ID: 20100920184904.26E10AC88F () svn ! kde ! org
[Download RAW message or body]

SVN commit 1177609 by jsimon:

Add another test case for KDChartModel (which fails right now)

 M  +17 -0     ModelObserver.cpp  
 M  +17 -0     ModelObserver.h  
 M  +102 -0    TestKDChartModel.cpp  
 M  +2 -0      TestKDChartModel.h  


--- trunk/koffice/plugins/chartshape/tests/ModelObserver.cpp #1177608:1177609
@@ -28,6 +28,8 @@
     m_source = source;
     m_numRows = 0;
     m_numCols = 0;
+    m_lastDataChange.valid = false;
+    m_lastHeaderDataChange.valid = false;
 
     connect( source, SIGNAL( rowsInserted( const QModelIndex&, int, int ) ),
              this  , SLOT( slotRowsInserted( const QModelIndex&, int, int ) ) );
@@ -91,3 +93,18 @@
     m_numRows = m_source->rowCount();
     m_numCols = m_source->columnCount();
 }
+
+void ModelObserver::slotHeaderDataChanged( Qt::Orientation orientation, int first, int last )
+{
+    m_lastHeaderDataChange.orientation = orientation;
+    m_lastHeaderDataChange.first = first;
+    m_lastHeaderDataChange.last = last;
+    m_lastHeaderDataChange.valid = true;
+}
+
+void ModelObserver::slotDataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight )
+{
+    m_lastDataChange.topLeft = topLeft;
+    m_lastDataChange.bottomRight = bottomRight;
+    m_lastHeaderDataChange.valid = true;
+}
--- trunk/koffice/plugins/chartshape/tests/ModelObserver.h #1177608:1177609
@@ -26,6 +26,19 @@
 
 class QAbstractItemModel;
 
+struct HeaderDataChange {
+    Qt::Orientation orientation;
+    int first;
+    int last;
+    bool valid;
+};
+
+struct DataChange {
+    QModelIndex topLeft;
+    QModelIndex bottomRight;
+    bool valid;
+};
+
 class ModelObserver : public QObject
 {
     Q_OBJECT
@@ -38,12 +51,16 @@
     void slotColumnsInserted( const QModelIndex & parent, int start, int end );
     void slotRowsRemoved( const QModelIndex & parent, int start, int end );
     void slotColumnsRemoved( const QModelIndex & parent, int start, int end );
+    void slotHeaderDataChanged( Qt::Orientation, int first, int last );
+    void slotDataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight );
     void slotModelReset();
 
 public:
     QAbstractItemModel *m_source;
     int m_numRows;
     int m_numCols;
+    HeaderDataChange m_lastHeaderDataChange;
+    DataChange m_lastDataChange;
 };
 
 #endif // KCHART_MODELOBSERVER_H
--- trunk/koffice/plugins/chartshape/tests/TestKDChartModel.cpp #1177608:1177609
@@ -199,4 +199,106 @@
     QCOMPARE( m_model->data( m_model->index( 9, 1 ) ), QVariant( 6.3 ) );
 }
 
+void TestKDChartModel::testDataChanges()
+{
+    DataSet dataSet1( 0 );
+    DataSet dataSet2( 1 );
+
+    dataSet1.setYDataRegion( CellRegion( m_table, QRect( 2, 2, 10, 1 ) ) );
+    dataSet2.setYDataRegion( CellRegion( m_table, QRect( 2, 3, 10, 1 ) ) );
+
+    m_model->addDataSet( &dataSet1 );
+    m_model->addDataSet( &dataSet2 );
+
+    // Test changing dataset-wide data
+
+    dataSet1.setLabelDataRegion( CellRegion( m_table, QPoint( 2, 2 ) ) );
+    QVERIFY( m_testModel->m_lastHeaderDataChange.valid );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.orientation, Qt::Vertical );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.first, 0 );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.last, 0 );
+
+    // Forget the last change to test another one
+    m_testModel->m_lastHeaderDataChange.valid = false;
+
+    dataSet2.setLabelDataRegion( CellRegion( m_table, QPoint( 2, 3 ) ) );
+    QVERIFY( m_testModel->m_lastHeaderDataChange.valid );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.orientation, Qt::Vertical );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.first, 1 );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.last, 1 );
+
+    // Test changing data points
+
+    // Forget the last change to test another one
+    m_testModel->m_lastDataChange.valid = false;
+
+    dataSet1.setYDataRegion( CellRegion( m_table, QRect( 3, 2, 9, 1 ) ) );
+    QVERIFY( m_testModel->m_lastHeaderDataChange.valid );
+    QCOMPARE( m_testModel->m_lastDataChange.topLeft, m_model->index( 0, 0 ) );
+    QCOMPARE( m_testModel->m_lastDataChange.bottomRight, m_model->index( 9, 0 ) );
+
+    // Forget the last change to test another one
+    m_testModel->m_lastDataChange.valid = false;
+
+    dataSet2.setYDataRegion( CellRegion( m_table, QRect( 3, 3, 9, 1 ) ) );
+    QVERIFY( m_testModel->m_lastHeaderDataChange.valid );
+    QCOMPARE( m_testModel->m_lastDataChange.topLeft, m_model->index( 0, 1 ) );
+    // The number of rows (data points) is now reduced by one because
+    // both y data regions have been reduced by one cell.
+    QCOMPARE( m_testModel->m_lastDataChange.bottomRight, m_model->index( 8, 1 ) );
+}
+
+void TestKDChartModel::testDataChangesWithTwoDimensions()
+{
+    DataSet dataSet1( 0 );
+    DataSet dataSet2( 1 );
+
+    dataSet1.setXDataRegion( CellRegion( m_table, QRect( 2, 1, 10, 1 ) ) );
+    dataSet1.setYDataRegion( CellRegion( m_table, QRect( 2, 2, 10, 1 ) ) );
+    dataSet1.setLabelDataRegion( CellRegion( m_table, QPoint( 1, 2 ) ) );
+
+    dataSet2.setXDataRegion( CellRegion( m_table, QRect( 2, 1, 10, 1 ) ) );
+    dataSet2.setYDataRegion( CellRegion( m_table, QRect( 2, 3, 10, 1 ) ) );
+    dataSet2.setLabelDataRegion( CellRegion( m_table, QPoint( 1, 3 ) ) );
+
+    m_model->setDataDimensions( 2 );
+    m_model->addDataSet( &dataSet1 );
+    m_model->addDataSet( &dataSet2 );
+
+    // Test changing dataset-wide data
+
+    dataSet1.setLabelDataRegion( CellRegion( m_table, QPoint( 2, 2 ) ) );
+    QVERIFY( m_testModel->m_lastHeaderDataChange.valid );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.orientation, Qt::Vertical );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.first, 0 );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.last, 1 );
+
+    // Forget the last change to test another one
+    m_testModel->m_lastHeaderDataChange.valid = false;
+
+    dataSet2.setLabelDataRegion( CellRegion( m_table, QPoint( 2, 3 ) ) );
+    QVERIFY( m_testModel->m_lastHeaderDataChange.valid );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.orientation, Qt::Vertical );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.first, 2 );
+    QCOMPARE( m_testModel->m_lastHeaderDataChange.last, 3 );
+
+    // Test changing data points
+
+    // Forget the last change to test another one
+    m_testModel->m_lastDataChange.valid = false;
+
+    dataSet1.setYDataRegion( CellRegion( m_table, QRect( 3, 2, 9, 1 ) ) );
+    QVERIFY( m_testModel->m_lastHeaderDataChange.valid );
+    QCOMPARE( m_testModel->m_lastDataChange.topLeft, m_model->index( 0, 0 ) );
+    QCOMPARE( m_testModel->m_lastDataChange.bottomRight, m_model->index( 9, 1 ) );
+
+    // Forget the last change to test another one
+    m_testModel->m_lastDataChange.valid = false;
+
+    dataSet2.setYDataRegion( CellRegion( m_table, QRect( 3, 3, 9, 1 ) ) );
+    QVERIFY( m_testModel->m_lastHeaderDataChange.valid );
+    QCOMPARE( m_testModel->m_lastDataChange.topLeft, m_model->index( 0, 2 ) );
+    QCOMPARE( m_testModel->m_lastDataChange.bottomRight, m_model->index( 9, 3 ) );
+}
+
 QTEST_MAIN( TestKDChartModel )
--- trunk/koffice/plugins/chartshape/tests/TestKDChartModel.h #1177608:1177609
@@ -45,6 +45,8 @@
     void testDataSetInsertion();
     void testDataSetInsertionAndRemoval();
     void testData();
+    void testDataChanges();
+    void testDataChangesWithTwoDimensions();
 
 private:
     KDChartModel *m_model;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic