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

0001 
0002 #include "data/character.h"
0003 #include "model/genericmodel.h"
0004 #include <QAbstractItemModelTester>
0005 #include <QtTest/QtTest>
0006 #include <memory>
0007 
0008 class TestField : public CharacterField
0009 {
0010 public:
0011     TestField();
0012     Type getType();
0013     QVariant getData(int col, int role);
0014     virtual bool setData(int col, QVariant value, int role);
0015 
0016 public:
0017     QVariant m_value;
0018 };
0019 
0020 TestField::TestField() {}
0021 
0022 CharacterField::Type TestField::getType()
0023 {
0024     return CharacterField::Shape;
0025 }
0026 
0027 QVariant TestField::getData(int col, int role)
0028 {
0029     if(role == Qt::EditRole)
0030         return m_value;
0031     return {};
0032 }
0033 
0034 bool TestField::setData(int col, QVariant value, int role)
0035 {
0036     m_value= value;
0037     return true;
0038 }
0039 
0040 class GenericModelTest : public QObject
0041 {
0042     Q_OBJECT
0043 public:
0044     GenericModelTest();
0045 
0046 private slots:
0047     void init();
0048     void addTest();
0049     void removeTest();
0050     void columnNumberTest();
0051 
0052 private:
0053     std::unique_ptr<GenericModel> m_model;
0054 };
0055 
0056 void GenericModelTest::init()
0057 {
0058     QStringList cols;
0059     cols << "id"
0060          << "value";
0061     m_model.reset(new GenericModel(cols));
0062 
0063     new QAbstractItemModelTester(m_model.get());
0064 }
0065 
0066 GenericModelTest::GenericModelTest() {}
0067 
0068 void GenericModelTest::addTest()
0069 {
0070     TestField field;
0071     field.setData(0, 1, 0);
0072     m_model->addData(&field);
0073 
0074     auto index= m_model->index(0, 0);
0075     QCOMPARE(field.getData(0, 0), m_model->data(index, 0));
0076     QCOMPARE(m_model->rowCount(QModelIndex()), 1);
0077 }
0078 
0079 void GenericModelTest::removeTest()
0080 {
0081     TestField field;
0082     field.setData(0, 1, 0);
0083     m_model->addData(&field);
0084 
0085     auto index2= m_model->index(0, 0);
0086     QCOMPARE(field.getData(0, 0), m_model->data(index2, 0));
0087     QCOMPARE(m_model->rowCount(QModelIndex()), 1);
0088 
0089     auto index= m_model->index(0, 0);
0090 
0091     m_model->removeData(index);
0092 
0093     QCOMPARE(m_model->rowCount(), 0);
0094 }
0095 
0096 void GenericModelTest::columnNumberTest()
0097 {
0098     QCOMPARE(m_model->columnCount(QModelIndex()), 2);
0099 }
0100 
0101 QTEST_MAIN(GenericModelTest);
0102 
0103 #include "tst_genericmodel.moc"