| 179 | } |
| 180 | |
| 181 | void TestTestController::testResults() |
| 182 | { |
| 183 | ITestSuite* suite = new FakeTestSuite(TestSuiteName, m_project); |
| 184 | m_testController->addTestSuite(suite); |
| 185 | |
| 186 | QSignalSpy spy(m_testController, SIGNAL(testRunFinished(KDevelop::ITestSuite*,KDevelop::TestResult))); |
| 187 | QVERIFY(spy.isValid()); |
| 188 | |
| 189 | QList<TestResult::TestCaseResult> results; |
| 190 | results << TestResult::Passed << TestResult::Failed << TestResult::Error << TestResult::Skipped << TestResult::NotRun; |
| 191 | |
| 192 | for (const TestResult::TestCaseResult result : std::as_const(results)) { |
| 193 | emitTestResult(suite, result); |
| 194 | QCOMPARE(spy.size(), 1); |
| 195 | |
| 196 | QVariantList arguments = spy.takeFirst(); |
| 197 | QCOMPARE(arguments.size(), 2); |
| 198 | |
| 199 | QVERIFY(arguments.first().canConvert<ITestSuite*>()); |
| 200 | QCOMPARE(arguments.first().value<ITestSuite*>(), suite); |
| 201 | |
| 202 | QVERIFY(arguments.at(1).canConvert<TestResult>()); |
| 203 | QCOMPARE(arguments.at(1).value<TestResult>().suiteResult, result); |
| 204 | |
| 205 | const auto testCases = suite->cases(); |
| 206 | for (const QString& testCase : testCases) { |
| 207 | QCOMPARE(arguments.at(1).value<TestResult>().testCaseResults[testCase], result); |
| 208 | } |
| 209 | } |
| 210 | |
| 211 | QCOMPARE(spy.size(), 0); |
| 212 | |
| 213 | ITestSuite* suiteTwo = new FakeTestSuite(TestSuiteNameTwo, m_project); |
| 214 | m_testController->addTestSuite(suiteTwo); |
| 215 | |
| 216 | // Verify that only one signal gets emitted even with more suites present |
| 217 | emitTestResult(suiteTwo, TestResult::Passed); |
| 218 | |
| 219 | QCOMPARE(spy.size(), 1); |
| 220 | |
| 221 | m_testController->removeTestSuite(suite); |
| 222 | m_testController->removeTestSuite(suiteTwo); |
| 223 | delete suite; |
| 224 | delete suiteTwo; |
| 225 | } |
| 226 | |
| 227 | |
| 228 | QTEST_GUILESS_MAIN(TestTestController) |
nothing calls this directly
no test coverage detected