qmltest: Count passes, fails and skips consistently.
[profile/ivi/qtdeclarative.git] / src / qmltest / quicktestresult_p.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/
5 **
6 ** This file is part of the test suite of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** GNU Lesser General Public License Usage
10 ** This file may be used under the terms of the GNU Lesser General Public
11 ** License version 2.1 as published by the Free Software Foundation and
12 ** appearing in the file LICENSE.LGPL included in the packaging of this
13 ** file. Please review the following information to ensure the GNU Lesser
14 ** General Public License version 2.1 requirements will be met:
15 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
16 **
17 ** In addition, as a special exception, Nokia gives you certain additional
18 ** rights. These rights are described in the Nokia Qt LGPL Exception
19 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
20 **
21 ** GNU General Public License Usage
22 ** Alternatively, this file may be used under the terms of the GNU General
23 ** Public License version 3.0 as published by the Free Software Foundation
24 ** and appearing in the file LICENSE.GPL included in the packaging of this
25 ** file. Please review the following information to ensure the GNU General
26 ** Public License version 3.0 requirements will be met:
27 ** http://www.gnu.org/copyleft/gpl.html.
28 **
29 ** Other Usage
30 ** Alternatively, this file may be used in accordance with the terms and
31 ** conditions contained in a signed written agreement between you and Nokia.
32 **
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef QUICKTESTRESULT_P_H
43 #define QUICKTESTRESULT_P_H
44
45 #include <QtQuickTest/quicktestglobal.h>
46 #include <QtCore/qobject.h>
47 #include <QtCore/qstring.h>
48 #include <QtCore/qstringlist.h>
49 #include <QtCore/qscopedpointer.h>
50
51 QT_BEGIN_NAMESPACE
52
53 class QUrl;
54 class QuickTestResultPrivate;
55
56 class Q_QUICK_TEST_EXPORT QuickTestResult : public QObject
57 {
58     Q_OBJECT
59     Q_ENUMS(RunMode)
60     Q_PROPERTY(QString testCaseName READ testCaseName WRITE setTestCaseName NOTIFY testCaseNameChanged)
61     Q_PROPERTY(QString functionName READ functionName WRITE setFunctionName NOTIFY functionNameChanged)
62     Q_PROPERTY(QString dataTag READ dataTag WRITE setDataTag NOTIFY dataTagChanged)
63     Q_PROPERTY(bool failed READ isFailed)
64     Q_PROPERTY(bool skipped READ isSkipped WRITE setSkipped NOTIFY skippedChanged)
65     Q_PROPERTY(int passCount READ passCount)
66     Q_PROPERTY(int failCount READ failCount)
67     Q_PROPERTY(int skipCount READ skipCount)
68     Q_PROPERTY(QStringList functionsToRun READ functionsToRun)
69 public:
70     QuickTestResult(QObject *parent = 0);
71     ~QuickTestResult();
72
73     // Values must match QBenchmarkIterationController::RunMode.
74     enum RunMode
75     {
76         RepeatUntilValidMeasurement,
77         RunOnce
78     };
79
80     QString testCaseName() const;
81     void setTestCaseName(const QString &name);
82
83     QString functionName() const;
84     void setFunctionName(const QString &name);
85
86     QString dataTag() const;
87     void setDataTag(const QString &tag);
88
89     bool isFailed() const;
90
91     bool isSkipped() const;
92     void setSkipped(bool skip);
93
94     int passCount() const;
95     int failCount() const;
96     int skipCount() const;
97
98     QStringList functionsToRun() const;
99
100 public Q_SLOTS:
101     void reset();
102
103     void startLogging();
104     void stopLogging();
105
106     void initTestTable();
107     void clearTestTable();
108
109     void finishTestData();
110     void finishTestDataCleanup();
111     void finishTestFunction();
112
113     void fail(const QString &message, const QUrl &location, int line);
114     bool verify(bool success, const QString &message,
115                 const QUrl &location, int line);
116     bool compare(bool success, const QString &message,
117                  const QString &val1, const QString &val2,
118                  const QUrl &location, int line);
119     void skip(const QString &message, const QUrl &location, int line);
120     bool expectFail(const QString &tag, const QString &comment,
121                     const QUrl &location, int line);
122     bool expectFailContinue(const QString &tag, const QString &comment,
123                             const QUrl &location, int line);
124     void warn(const QString &message, const QUrl &location, int line);
125
126     void ignoreWarning(const QString &message);
127
128     void wait(int ms);
129     void sleep(int ms);
130
131     void startMeasurement();
132     void beginDataRun();
133     void endDataRun();
134     bool measurementAccepted();
135     bool needsMoreMeasurements();
136
137     void startBenchmark(RunMode runMode, const QString &tag);
138     bool isBenchmarkDone() const;
139     void nextBenchmark();
140     void stopBenchmark();
141
142 public:
143     // Helper functions for the C++ main() shell.
144     static void parseArgs(int argc, char *argv[]);
145     static void setProgramName(const char *name);
146     static int exitCode();
147
148 Q_SIGNALS:
149     void programNameChanged();
150     void testCaseNameChanged();
151     void functionNameChanged();
152     void dataTagChanged();
153     void skippedChanged();
154
155 private:
156     QScopedPointer<QuickTestResultPrivate> d_ptr;
157
158     Q_DECLARE_PRIVATE(QuickTestResult)
159     Q_DISABLE_COPY(QuickTestResult)
160 };
161
162 QT_END_NAMESPACE
163
164 #endif