File indexing completed on 2024-04-28 16:49:47
0001 /* 0002 SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include <QAbstractItemModelTester> 0008 #include <QTest> 0009 #include <QTransposeProxyModel> 0010 0011 #include <QDBusInterface> 0012 0013 #include "SensorDataModel.h" 0014 #include "Unit.h" 0015 0016 #define qs QStringLiteral 0017 0018 class SensorDataModelTest : public QObject 0019 { 0020 Q_OBJECT 0021 private Q_SLOTS: 0022 void initTestCase() 0023 { 0024 QDBusInterface interface{QStringLiteral("org.kde.ksystemstats"), QStringLiteral("/")}; 0025 if (!interface.isValid()) { 0026 QSKIP("KSystemStats Daemon is not running"); 0027 } 0028 } 0029 0030 void testModel() 0031 { 0032 KSysGuard::SensorDataModel model; 0033 QAbstractItemModelTester tester{&model}; 0034 Q_UNUSED(tester) 0035 0036 QVERIFY(model.columnCount() == 0); 0037 0038 model.setSensors({qs("cpu/all/usage"), qs("memory/physical/used"), qs("network/all/download"), qs("disk/all/used")}); 0039 0040 QTRY_VERIFY(model.isReady()); 0041 0042 QCOMPARE(model.columnCount(), 4); 0043 0044 auto id = KSysGuard::SensorDataModel::SensorId; 0045 auto unit = KSysGuard::SensorDataModel::Unit; 0046 0047 QCOMPARE(model.headerData(0, Qt::Horizontal, id).toString(), qs("cpu/all/usage")); 0048 QCOMPARE(model.headerData(1, Qt::Horizontal, id).toString(), qs("memory/physical/used")); 0049 QCOMPARE(model.headerData(2, Qt::Horizontal, id).toString(), qs("network/all/download")); 0050 QCOMPARE(model.headerData(3, Qt::Horizontal, id).toString(), qs("disk/all/used")); 0051 0052 // Verify that metadata is also loaded correctly. Not using names to sidestep translation issues. 0053 QCOMPARE(model.headerData(0, Qt::Horizontal, unit).value<KSysGuard::Unit>(), KSysGuard::UnitPercent); 0054 QCOMPARE(model.headerData(1, Qt::Horizontal, unit).value<KSysGuard::Unit>(), KSysGuard::UnitByte); 0055 QCOMPARE(model.headerData(2, Qt::Horizontal, unit).value<KSysGuard::Unit>(), KSysGuard::UnitByteRate); 0056 QCOMPARE(model.headerData(3, Qt::Horizontal, unit).value<KSysGuard::Unit>(), KSysGuard::UnitByte); 0057 0058 model.setSensors({qs("disk/all/used"), qs("network/all/download"), qs("cpu/all/usage")}); 0059 0060 QVERIFY(!model.isReady()); 0061 0062 QTRY_VERIFY(model.isReady()); 0063 0064 QCOMPARE(model.columnCount(), 3); 0065 0066 QCOMPARE(model.headerData(0, Qt::Horizontal, id).toString(), qs("disk/all/used")); 0067 QCOMPARE(model.headerData(1, Qt::Horizontal, id).toString(), qs("network/all/download")); 0068 QCOMPARE(model.headerData(2, Qt::Horizontal, id).toString(), qs("cpu/all/usage")); 0069 0070 // Verify that metadata is also loaded correctly. Not using names to sidestep translation issues. 0071 QCOMPARE(model.headerData(0, Qt::Horizontal, unit).value<KSysGuard::Unit>(), KSysGuard::UnitByte); 0072 QCOMPARE(model.headerData(1, Qt::Horizontal, unit).value<KSysGuard::Unit>(), KSysGuard::UnitByteRate); 0073 QCOMPARE(model.headerData(2, Qt::Horizontal, unit).value<KSysGuard::Unit>(), KSysGuard::UnitPercent); 0074 } 0075 0076 void testTransposeProxy() 0077 { 0078 KSysGuard::SensorDataModel model; 0079 QAbstractItemModelTester tester{&model}; 0080 Q_UNUSED(tester) 0081 0082 QTransposeProxyModel transpose; 0083 transpose.setSourceModel(&model); 0084 0085 model.setSensors({qs("cpu/all/usage"), qs("memory/physical/used"), qs("network/all/download"), qs("disk/all/used")}); 0086 0087 QTRY_VERIFY(model.isReady()); 0088 0089 QCOMPARE(model.columnCount(), transpose.rowCount()); 0090 QCOMPARE(model.rowCount(), transpose.columnCount()); 0091 } 0092 }; 0093 0094 QTEST_MAIN(SensorDataModelTest); 0095 0096 #include "sensordatamodeltest.moc"