File indexing completed on 2024-05-19 05:14:15

0001 /*
0002     SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef MODELVERIFICATIONPOINT_H
0008 #define MODELVERIFICATIONPOINT_H
0009 
0010 #include <QString>
0011 
0012 #include <vector>
0013 
0014 class QAbstractItemModel;
0015 class QJsonValue;
0016 class QVariant;
0017 
0018 /** Compares a model state serialized to JSON with a current model state. */
0019 class ModelVerificationPoint
0020 {
0021 public:
0022     explicit ModelVerificationPoint(const QString &refFile);
0023     ~ModelVerificationPoint();
0024 
0025     void setRoleFilter(std::vector<int> &&filter);
0026     void setJsonPropertyFilter(std::vector<QString> &&filter);
0027 
0028     bool verify(QAbstractItemModel *model) const;
0029 
0030 private:
0031     QJsonValue variantToJson(const QVariant &v) const;
0032 
0033     QString m_refFile;
0034     std::vector<int> m_roleFilter;
0035     std::vector<QString> m_jsonPropertyFilter;
0036 };
0037 
0038 #endif // MODELVERIFICATIONPOINT_H