File indexing completed on 2025-02-21 10:12:22
0001
0002
0003
0004 #ifndef QABSTRACTITEMMODELTESTER_H
0005 #define QABSTRACTITEMMODELTESTER_H
0006
0007 #include <QtCore/QObject>
0008 #include <QtTest/qttestglobal.h>
0009 #include <QtCore/QAbstractItemModel>
0010 #include <QtCore/QVariant>
0011
0012 #ifdef QT_GUI_LIB
0013 #include <QtGui/QFont>
0014 #include <QtGui/QColor>
0015 #include <QtGui/QBrush>
0016 #include <QtGui/QPixmap>
0017 #include <QtGui/QImage>
0018 #include <QtGui/QIcon>
0019 #endif
0020
0021 QT_REQUIRE_CONFIG(itemmodeltester);
0022
0023 QT_BEGIN_NAMESPACE
0024
0025 class QAbstractItemModel;
0026 class QAbstractItemModelTester;
0027 class QAbstractItemModelTesterPrivate;
0028
0029 namespace QTestPrivate {
0030 inline bool testDataGuiRoles(QAbstractItemModelTester *tester);
0031 }
0032
0033 class Q_TESTLIB_EXPORT QAbstractItemModelTester : public QObject
0034 {
0035 Q_OBJECT
0036 Q_DECLARE_PRIVATE(QAbstractItemModelTester)
0037
0038 public:
0039 enum class FailureReportingMode {
0040 QtTest,
0041 Warning,
0042 Fatal
0043 };
0044
0045 QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr);
0046 QAbstractItemModelTester(QAbstractItemModel *model, FailureReportingMode mode, QObject *parent = nullptr);
0047
0048 QAbstractItemModel *model() const;
0049 FailureReportingMode failureReportingMode() const;
0050 void setUseFetchMore(bool value);
0051
0052 private:
0053 friend inline bool QTestPrivate::testDataGuiRoles(QAbstractItemModelTester *tester);
0054 bool verify(bool statement, const char *statementStr, const char *description, const char *file, int line);
0055 };
0056
0057 namespace QTestPrivate {
0058 inline bool testDataGuiRoles(QAbstractItemModelTester *tester)
0059 {
0060 #ifdef QT_GUI_LIB
0061
0062 #define MODELTESTER_VERIFY(statement) \
0063 do { \
0064 if (!tester->verify(static_cast<bool>(statement), #statement, "", __FILE__, __LINE__)) \
0065 return false; \
0066 } while (false)
0067
0068 const auto model = tester->model();
0069 Q_ASSERT(model);
0070
0071 if (!model->hasChildren())
0072 return true;
0073
0074 QVariant variant;
0075
0076 variant = model->data(model->index(0, 0), Qt::DecorationRole);
0077 if (variant.isValid()) {
0078 MODELTESTER_VERIFY(variant.canConvert<QPixmap>()
0079 || variant.canConvert<QImage>()
0080 || variant.canConvert<QIcon>()
0081 || variant.canConvert<QColor>()
0082 || variant.canConvert<QBrush>());
0083 }
0084
0085
0086 variant = model->data(model->index(0, 0), Qt::FontRole);
0087 if (variant.isValid())
0088 MODELTESTER_VERIFY(variant.canConvert<QFont>());
0089
0090
0091 variant = model->data(model->index(0, 0), Qt::BackgroundRole);
0092 if (variant.isValid())
0093 MODELTESTER_VERIFY(variant.canConvert<QColor>() || variant.canConvert<QBrush>());
0094
0095 variant = model->data(model->index(0, 0), Qt::ForegroundRole);
0096 if (variant.isValid())
0097 MODELTESTER_VERIFY(variant.canConvert<QColor>() || variant.canConvert<QBrush>());
0098
0099 #undef MODELTESTER_VERIFY
0100
0101 #else
0102 Q_UNUSED(tester);
0103 #endif
0104
0105 return true;
0106 }
0107 }
0108
0109 QT_END_NAMESPACE
0110
0111 #endif