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"