File indexing completed on 2024-05-12 05:40:53

0001 
0002 #include "data/character.h"
0003 #include "data/player.h"
0004 #include "model/participantmodel.h"
0005 #include "model/playermodel.h"
0006 #include <QAbstractItemModelTester>
0007 #include <QtTest/QtTest>
0008 #include <memory>
0009 
0010 class PlayerModelTest : public QObject
0011 {
0012     Q_OBJECT
0013 public:
0014     PlayerModelTest();
0015 
0016 private slots:
0017     void init();
0018     void addTest();
0019     void addTest_data();
0020 
0021     void ownerTest();
0022     void ownerTest_data();
0023 
0024 private:
0025     std::unique_ptr<PlayerModel> m_playerModel;
0026     std::unique_ptr<ParticipantModel> m_participantsModel;
0027 };
0028 
0029 void PlayerModelTest::init()
0030 {
0031     m_playerModel.reset(new PlayerModel());
0032     m_participantsModel.reset(new ParticipantModel("", m_playerModel.get()));
0033 
0034     new QAbstractItemModelTester(m_playerModel.get());
0035     new QAbstractItemModelTester(m_participantsModel.get());
0036 
0037     // m_participantsModel->setSourceModel(m_playerModel.get());
0038 }
0039 
0040 PlayerModelTest::PlayerModelTest()= default;
0041 
0042 void PlayerModelTest::addTest()
0043 {
0044     QFETCH(int, count);
0045     QFETCH(QString, ownerId);
0046     QFETCH(int, idx);
0047     QFETCH(QString, name);
0048     QFETCH(QVector<Player*>, players);
0049 
0050     m_participantsModel->setOwner(ownerId);
0051 
0052     m_playerModel->clear();
0053     QVERIFY(m_playerModel->rowCount() == 0);
0054 
0055     auto index= m_participantsModel->index(idx, 0, QModelIndex());
0056 
0057     QCOMPARE(m_participantsModel->rowCount(index), 0);
0058 
0059     for(auto p : players)
0060         m_playerModel->addPlayer(p);
0061 
0062     QCOMPARE(m_participantsModel->rowCount(index), count);
0063     if(count > 0)
0064     {
0065         auto data= m_participantsModel->index(0, 0, index);
0066         QCOMPARE(name, data.data().toString());
0067     }
0068 }
0069 
0070 void PlayerModelTest::addTest_data()
0071 {
0072     QTest::addColumn<int>("count");
0073     QTest::addColumn<QString>("ownerId");
0074     QTest::addColumn<int>("idx");
0075     QTest::addColumn<QString>("name");
0076     QTest::addColumn<QVector<Player*>>("players");
0077 
0078     QTest::addRow("cmd 1") << 0 << QString() << 0 << QString() << QVector<Player*>();
0079 
0080     {
0081         QVector<Player*> players;
0082         players.push_back(new Player("name", QColor(Qt::red), true));
0083         QTest::addRow("cmd 2") << 1 << players[0]->uuid() << 0 << players[0]->name() << players;
0084     }
0085 
0086     {
0087         QVector<Player*> players;
0088         auto p= new Player("name", QColor(Qt::red), true);
0089         players.push_back(p);
0090         QTest::addRow("cmd 3") << 1 << p->uuid() << 0 << p->name() << players;
0091     }
0092 
0093     {
0094         QVector<Player*> players;
0095         auto p= new Player("name", QColor(Qt::red), true);
0096         players.push_back(p);
0097         QTest::addRow("cmd 4") << 1 << "tata" << 2 << p->name() << players;
0098     }
0099 
0100     {
0101         QVector<Player*> players;
0102         auto owner= new Player("owner", QColor(Qt::red), true);
0103         players.push_back(owner);
0104         auto p= new Player("contributor", QColor(Qt::green), false);
0105         players.push_back(p);
0106         QTest::addRow("cmd 5") << 1 << owner->uuid() << 2 << p->name() << players;
0107     }
0108 
0109     /*{
0110         QVector<Player*> players;
0111         auto player= new Player("name", QColor(Qt::red), true);
0112         player->addCharacter("character", QColor(Qt::blue), "", QHash<QString, QVariant>(), false);
0113         players.push_back(player);
0114         QTest::addRow("cmd 3") << 1 << players;
0115     }
0116 
0117     {
0118         QVector<Player*> players;
0119         auto player= new Player("name", QColor(Qt::red), true);
0120         player->addCharacter(new Character("character", QColor(Qt::blue), true));
0121         players.push_back(player);
0122         QTest::addRow("cmd 4") << 1 << players;
0123     }
0124 
0125     {
0126         QVector<Player*> players;
0127         auto player= new Player("name", QColor(Qt::red), true);
0128         player->addCharacter(new Character("character", QColor(Qt::blue), false));
0129         player->addCharacter(new Character("character2", QColor(Qt::green), false));
0130         players.push_back(player);
0131         QTest::addRow("cmd 5") << 2 << players;
0132     }
0133 
0134     {
0135         QVector<Player*> players;
0136         auto player= new Player("name", QColor(Qt::red), true);
0137         player->addCharacter(new Character("character", QColor(Qt::blue), false));
0138         players.push_back(player);
0139 
0140         auto player2= new Player("name2", QColor(Qt::magenta), true);
0141         player2->addCharacter(new Character("character2", QColor(Qt::green), false));
0142         players.push_back(player2);
0143 
0144         QTest::addRow("cmd 6") << 2 << players;
0145     }
0146 
0147     {
0148         QVector<Player*> players;
0149         auto player= new Player("name", QColor(Qt::red), true);
0150         players.push_back(player);
0151 
0152         auto player2= new Player("name2", QColor(Qt::magenta), true);
0153         player2->addCharacter(new Character("character", QColor(Qt::blue), false));
0154         player2->addCharacter(new Character("character2", QColor(Qt::green), false));
0155         players.push_back(player2);
0156         QTest::addRow("cmd 7") << 2 << players;
0157     }*/
0158 }
0159 
0160 void PlayerModelTest::ownerTest()
0161 {
0162     QFETCH(int, count);
0163     QFETCH(QString, ownerId);
0164     QFETCH(int, idx);
0165     QFETCH(QVector<Player*>, players);
0166 
0167     m_playerModel->clear();
0168     QVERIFY(m_playerModel->rowCount() == 0);
0169 
0170     auto index= m_participantsModel->index(idx, 0, QModelIndex());
0171 
0172     QCOMPARE(m_participantsModel->rowCount(index), 0);
0173 
0174     for(auto p : players)
0175     {
0176         m_playerModel->addPlayer(p);
0177     }
0178     m_participantsModel.reset(new ParticipantModel("", m_playerModel.get()));
0179 
0180     m_participantsModel->setOwner(ownerId);
0181 
0182     index= m_participantsModel->index(idx, 0, QModelIndex());
0183 
0184     QCOMPARE(m_participantsModel->rowCount(index), count);
0185 }
0186 
0187 void PlayerModelTest::ownerTest_data()
0188 {
0189     QTest::addColumn<int>("count");
0190     QTest::addColumn<QString>("ownerId");
0191     QTest::addColumn<int>("idx");
0192     QTest::addColumn<QVector<Player*>>("players");
0193 
0194     QTest::addRow("cmd 1") << 0 << QString() << 0 << QVector<Player*>();
0195 
0196     {
0197         QVector<Player*> players;
0198         auto p= new Player("name", QColor(Qt::red), true);
0199         players.push_back(p);
0200         QTest::addRow("cmd 2") << 1 << p->uuid() << 0 << players;
0201     }
0202 
0203     {
0204         QVector<Player*> players;
0205         auto p= new Player("name", QColor(Qt::red), true);
0206         players.push_back(p);
0207         QTest::addRow("cmd 3") << 1 << "tata" << 2 << players;
0208     }
0209 
0210     {
0211         QVector<Player*> players;
0212         auto owner= new Player("owner", QColor(Qt::red), true);
0213         players.push_back(owner);
0214         auto p= new Player("contributor", QColor(Qt::green), false);
0215         players.push_back(p);
0216         QTest::addRow("cmd 4") << 1 << owner->uuid() << 2 << players;
0217     }
0218 }
0219 
0220 QTEST_MAIN(PlayerModelTest);
0221 
0222 #include "tst_playermodel.moc"