File indexing completed on 2024-04-21 03:56:04

0001 /*
0002     SPDX-FileCopyrightText: 2009 Stephen Kelly <steveire@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef MODEL_COMMANDER_H
0008 #define MODEL_COMMANDER_H
0009 
0010 #include "dynamictreemodel.h"
0011 
0012 #include "proxymodeltestsuite_export.h"
0013 
0014 class QAbstractItemModel;
0015 
0016 #include <QSet>
0017 #include <QStringList>
0018 
0019 class PROXYMODELTESTSUITE_EXPORT ModelCommander : public QObject
0020 {
0021     Q_OBJECT
0022 public:
0023     explicit ModelCommander(DynamicTreeModel *model, QObject *parent);
0024 
0025     ModelChangeCommand *currentCommand();
0026 
0027 public Q_SLOTS:
0028     void init_testInsertWhenEmpty(const QString &dataTag);
0029     void init_testInsertInRoot(const QString &dataTag);
0030     void init_testInsertInTopLevel(const QString &dataTag);
0031     void init_testInsertInSecondLevel(const QString &dataTag);
0032 
0033     void init_testRemoveFromRoot(const QString &dataTag);
0034     void init_testRemoveFromTopLevel(const QString &dataTag);
0035     void init_testRemoveFromSecondLevel(const QString &dataTag);
0036 
0037     void init_testMoveFromRoot(const QString &dataTag);
0038     void init_testMoveFromTopLevel(const QString &dataTag);
0039     void init_testMoveFromSecondLevel(const QString &dataTag);
0040 
0041     void init_testModifyInRoot(const QString &dataTag);
0042     void init_testModifyInTopLevel(const QString &dataTag);
0043     void init_testModifyInSecondLevel(const QString &dataTag);
0044 
0045     QStringList execute_testInsertWhenEmpty(const QString &dataTag);
0046     QStringList execute_testInsertInRoot(const QString &dataTag);
0047     QStringList execute_testInsertInTopLevel(const QString &dataTag);
0048     QStringList execute_testInsertInSecondLevel(const QString &dataTag);
0049 
0050     QStringList execute_testRemoveFromRoot(const QString &dataTag);
0051     QStringList execute_testRemoveFromTopLevel(const QString &dataTag);
0052     QStringList execute_testRemoveFromSecondLevel(const QString &dataTag);
0053 
0054     QStringList execute_testMoveFromRoot(const QString &dataTag);
0055     QStringList execute_testMoveFromTopLevel(const QString &dataTag);
0056     QStringList execute_testMoveFromSecondLevel(const QString &dataTag);
0057 
0058     QStringList execute_testModifyInRoot(const QString &dataTag);
0059     QStringList execute_testModifyInTopLevel(const QString &dataTag);
0060     QStringList execute_testModifyInSecondLevel(const QString &dataTag);
0061 
0062 private:
0063     QStringList executeTestInsert(QList<int> rowAncestors, const QString &dataTag);
0064     QStringList executeTestRemove(QList<int> rowAncestors, const QString &dataTag);
0065     QStringList executeTestMove(QList<int> rowAncestors, const QString &dataTag);
0066     QStringList executeTestModify(QList<int> rowAncestors, const QString &dataTag);
0067 
0068     void initTestModel(const QString &dataTag);
0069 
0070     void execute(ModelChangeCommand *command);
0071 
0072 private:
0073     int m_counter;
0074     DynamicTreeModel *m_model;
0075     ModelChangeCommand *m_currentCommand;
0076     QSet<QString> m_testsSeen;
0077 };
0078 
0079 #endif