#include "diagnostics/Diagnostics.h" #include #include class TestDiagnostics : public QObject { Q_OBJECT private Q_SLOTS: void reportsAndClears() { Diagnostics diagnostics; QSignalSpy changed(&diagnostics, &Diagnostics::problemsChanged); QTest::ignoreMessage(QtWarningMsg, "broken"); diagnostics.check(QStringLiteral("a"), false, QStringLiteral("broken")); QCOMPARE(diagnostics.problems(), QStringList{QStringLiteral("broken")}); diagnostics.check(QStringLiteral("a"), true, QStringLiteral("broken")); QVERIFY(diagnostics.problems().isEmpty()); QCOMPARE(changed.count(), 2); } void repeatsAreQuiet() { Diagnostics diagnostics; QSignalSpy changed(&diagnostics, &Diagnostics::problemsChanged); diagnostics.check(QStringLiteral("a"), true, QStringLiteral("fine")); QTest::ignoreMessage(QtWarningMsg, "broken"); diagnostics.check(QStringLiteral("a"), false, QStringLiteral("broken")); diagnostics.check(QStringLiteral("a"), false, QStringLiteral("broken")); // no second warning QCOMPARE(changed.count(), 1); } void listsByIdNotArrival() { Diagnostics diagnostics; QTest::ignoreMessage(QtWarningMsg, "second"); QTest::ignoreMessage(QtWarningMsg, "first"); diagnostics.check(QStringLiteral("b"), false, QStringLiteral("second")); diagnostics.check(QStringLiteral("a"), false, QStringLiteral("first")); QCOMPARE(diagnostics.problems(), (QStringList{QStringLiteral("first"), QStringLiteral("second")})); } }; QTEST_GUILESS_MAIN(TestDiagnostics) #include "tst_diagnostics.moc"