diff -r c18f9fa7f42e -r 640d30f4fb64 phonebookengines/cntlistmodel/tsrc/ut_cntlistmodel/src/testrunner.cpp --- a/phonebookengines/cntlistmodel/tsrc/ut_cntlistmodel/src/testrunner.cpp Fri Oct 08 11:42:51 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "testrunner.h" -#include -#include -#include - -const char testFunctionElement[] = "TestFunction"; -const char incidentElement[] = "Incident"; -const char descriptionElement[] = "Description"; -const char nameAttr[] = "name"; -const char typeAttr[] = "type"; -const char fileAttr[] = "file"; -const char lineAttr[] = "line"; -const char attrValueFail[] = "fail"; - - -TestRunner::TestRunner(const QString& name) -: mTestCount(0), - mParsingIncidentElement(false), - mParsingDescriptionElement(false), - mCurrentTestFailed(false), - mCurrentTestFailureLine(0) -{ - mTestRunParams.append(name); - mTestRunParams.append("-xml"); - mTestRunParams.append("-o"); - mHomeDir = QDir::homePath(); - mTestRunParams.append(QString()); // Initial result file name - - if (!mHomeDir.endsWith(QString::fromAscii("/"))) - mHomeDir += QString::fromAscii("/"); -} - -TestRunner::~TestRunner() -{ -} - -int TestRunner::runTests(QObject& testObject) -{ - QString className(testObject.metaObject()->className()); - printf("Running tests for %s ... ", className.toUtf8().data()); - QString resultFileName = mHomeDir + className + ".xml"; - mTestRunParams.replace(mTestRunParams.count()-1,resultFileName); - int errorsBefore = mErrors.count(); - int error = QTest::qExec(&testObject, mTestRunParams); - parse(resultFileName); - printf("Failures: %d\n",mErrors.count()-errorsBefore); - fflush(stdout); - return error; -} - -void TestRunner::printResults() -{ - printf("\nTests executed: %d\n",mTestCount); - if (mErrors.count() > 0) { - printf("Failures (%d):\n", mErrors.count()); - foreach(QString error, mErrors) { - printf("\n%s", error.toUtf8().data()); - } - printf("\n"); - } else { - printf("All passed.\n\n"); - } - fflush(stdout); -} - -void TestRunner::parse(const QString& fileName) -{ - QFile file(fileName); - QXmlInputSource inputSource(&file); - QXmlSimpleReader reader; - reader.setContentHandler(this); - reader.parse(inputSource); -} - -bool TestRunner::startElement( - const QString& /*namespaceURI*/, - const QString& /*localName*/, - const QString& qName, - const QXmlAttributes& atts) -{ - if (qName == QString::fromAscii(testFunctionElement)) { - mTestCount++; - mCurrentTestName = atts.value(QString::fromAscii(nameAttr)); - return true; - } - if (qName == QString::fromAscii(incidentElement)) { - mParsingIncidentElement = true; - if (atts.value(QString::fromAscii(typeAttr)) == QString::fromAscii(attrValueFail)) { - mCurrentTestFailed = true; - mCurrentTestFile = atts.value(QString::fromAscii(fileAttr)); - mCurrentTestFailureLine = atts.value(QString::fromAscii(lineAttr)).toInt(); - } - return true; - } - mParsingDescriptionElement = - (qName == QString::fromAscii(descriptionElement)); - return true; -} - -bool TestRunner::endElement( - const QString& /*namespaceURI*/, - const QString& /*localName*/, - const QString& qName) -{ - if (qName == QString::fromAscii(incidentElement)) { - mParsingIncidentElement = false; - mCurrentTestFailed = false; - return true; - } - if (qName == QString::fromAscii(descriptionElement)) { - mParsingDescriptionElement = false; - } - return true; -} - -bool TestRunner::characters(const QString& ch) -{ - if (mParsingIncidentElement && - mParsingDescriptionElement && - mCurrentTestFailed) { - QByteArray testResult = mCurrentTestName.toAscii() + " failed:\n"; - testResult += "File: "; - testResult += mCurrentTestFile.toAscii(); - testResult += "\n"; - testResult += "Line: "; - testResult += QByteArray::number(mCurrentTestFailureLine); - testResult += "\n"; - testResult += "Reason: "; - testResult += ch.toAscii(); - testResult += "\n"; - mErrors.append(QString::fromAscii(testResult.data())); - } - return true; -} -