oopapidocs  2.0
modeltest.h
00001 /****************************************************************************
00002 **
00003 ** Copyright (C) 2007 Trolltech ASA. All rights reserved.
00004 **
00005 ** This file is part of the Qt Concurrent project on Trolltech Labs.
00006 **
00007 ** This file may be used under the terms of the GNU General Public
00008 ** License version 2.0 as published by the Free Software Foundation
00009 ** and appearing in the file LICENSE.GPL included in the packaging of
00010 ** this file.  Please review the following information to ensure GNU
00011 ** General Public Licensing requirements will be met:
00012 ** http://www.trolltech.com/products/qt/opensource.html
00013 **
00014 ** If you are unsure which license is appropriate for your use, please
00015 ** review the following information:
00016 ** http://www.trolltech.com/products/qt/licensing.html or contact the
00017 ** sales department at sales@trolltech.com.
00018 **
00019 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00020 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00021 **
00022 ****************************************************************************/
00023 
00024 #ifndef MODELTEST_H
00025 #define MODELTEST_H
00026 
00027 #include <QtCore/QObject>
00028 #include <QtCore/QAbstractItemModel>
00029 #include <QtCore/QStack>
00030 
00031 class ModelTest : public QObject
00032 {
00033     Q_OBJECT
00034 
00035 public:
00036     ModelTest(QAbstractItemModel* model, QObject* parent = 0);
00037 
00038 private Q_SLOTS:
00039     void nonDestructiveBasicTest();
00040     void rowCount();
00041     void columnCount();
00042     void hasIndex();
00043     void index();
00044     void parent();
00045     void data();
00046 
00047 protected Q_SLOTS:
00048     void runAllTests();
00049     void layoutAboutToBeChanged();
00050     void layoutChanged();
00051     void rowsAboutToBeInserted(const QModelIndex& parent, int start, int end);
00052     void rowsInserted(const QModelIndex& parent, int start, int end);
00053     void rowsAboutToBeRemoved(const QModelIndex& parent, int start, int end);
00054     void rowsRemoved(const QModelIndex& parent, int start, int end);
00055 
00056 private:
00057     void checkChildren(const QModelIndex& parent, int currentDepth = 0);
00058 
00059     QAbstractItemModel* model;
00060 
00061     struct Changing {
00062         QModelIndex parent;
00063         int oldSize;
00064         QVariant last;
00065         QVariant next;
00066     };
00067     QStack<Changing> insert;
00068     QStack<Changing> remove;
00069 
00070     bool fetchingMore;
00071 
00072     QList<QPersistentModelIndex> changing;
00073 };
00074 
00075 #endif
 All Classes Namespaces Functions Enumerations