QBenchmarkTestMethodData::QBenchmarkTestMethodData()
:resultAccepted(false), runOnce(false), iterationCount(-1)
{
-
}
QBenchmarkTestMethodData::~QBenchmarkTestMethodData()
void QBenchmarkTestMethodData::endDataRun()
{
-
}
int QBenchmarkTestMethodData::adjustIterationCount(int suggestion)
accepted = true;
}
- // Test the result directly without calling the measurer if the minimum time
+ // Test the result directly without calling the measurer if the minimum time
// has been specified on the command line with -minimumvalue.
else if (QBenchmarkGlobalData::current->walltimeMinimum != -1)
accepted = (value > QBenchmarkGlobalData::current->walltimeMinimum);
{
i = 0;
if (runMode == RunOnce)
- QBenchmarkTestMethodData::current->runOnce = true;
+ QBenchmarkTestMethodData::current->runOnce = true;
QTest::beginBenchmarkMeasurement();
}
quint64 QTest::endBenchmarkMeasurement()
{
// the clock is ticking before the line below, don't add code here.
- return QBenchmarkGlobalData::current->measurer->stop();
+ return QBenchmarkGlobalData::current->measurer->stop();
}
/*!
Sets the benchmark result for this test function to \a result.
-
+
Use this function if you want to report benchmark results without
using the QBENCHMARK macro. Use \a metric to specify how QTestLib
should interpret the results.
-
+
The context for the result will be the test function name and any
data tag from the _data function. This function can only be called
once in each test function, subsequent calls will replace the
#include <QtCore/qglobal.h>
#if (defined(Q_OS_LINUX) || defined Q_OS_MAC) && !defined(QT_NO_PROCESS)
-#define QTESTLIB_USE_VALGRIND
+#define QTESTLIB_USE_VALGRIND
#else
#undef QTESTLIB_USE_VALGRIND
#endif
, valid(true)
{ }
- bool operator<(const QBenchmarkResult &other) const
+ bool operator<(const QBenchmarkResult &other) const
{
return (value / iterations) < (other.value / other.iterations);
}
bool isMeasurementAccepted(qint64 measurement);
int adjustIterationCount(int suggestion);
int adjustMedianCount(int suggestion);
- bool repeatCount() { return 1; }
+ bool repeatCount() { return 1; }
QTest::QBenchmarkMetric metricType();
static bool eventCountingMechanism(void *message);
static qint64 eventCounter;
};
QT_END_NAMESPACE
-
+
#endif // QBENCHMARKEVENT_H
}
qint64 QBenchmarkTimeMeasurer::stop()
-{
+{
return time.elapsed();
}
}
int QBenchmarkTimeMeasurer::adjustIterationCount(int suggestion)
-{
- return suggestion;
+{
+ return suggestion;
}
bool QBenchmarkTimeMeasurer::needsWarmupIteration()
}
int QBenchmarkTimeMeasurer::adjustMedianCount(int)
-{
- return 1;
+{
+ return 1;
}
QTest::QBenchmarkMetric QBenchmarkTimeMeasurer::metricType()
}
int QBenchmarkTickMeasurer::adjustIterationCount(int)
-{
- return 1;
+{
+ return 1;
}
int QBenchmarkTickMeasurer::adjustMedianCount(int)
-{
- return 1;
+{
+ return 1;
}
bool QBenchmarkTickMeasurer::needsWarmupIteration()
-{
- return true;
+{
+ return true;
}
QTest::QBenchmarkMetric QBenchmarkTickMeasurer::metricType()
virtual bool isMeasurementAccepted(qint64 measurement) = 0;
virtual int adjustIterationCount(int suggestion) = 0;
virtual int adjustMedianCount(int suggestion) = 0;
- virtual bool repeatCount() { return 1; }
- virtual bool needsWarmupIteration() { return false; }
+ virtual bool repeatCount() { return 1; }
+ virtual bool needsWarmupIteration() { return false; }
virtual QTest::QBenchmarkMetric metricType() = 0;
};
\since 4.7
This enum lists all the things that can be benchmarked.
-
+
\value FramesPerSecond Frames per second
\value BitsPerSecond Bits per second
\value BytesPerSecond Bytes per second
}
qint64 QBenchmarkCallgrindMeasurer::stop()
-{
+{
return checkpoint();
}
}
int QBenchmarkCallgrindMeasurer::adjustIterationCount(int)
-{
+{
return 1;
}
int QBenchmarkCallgrindMeasurer::adjustMedianCount(int)
-{
+{
return 1;
}
bool QBenchmarkCallgrindMeasurer::needsWarmupIteration()
-{
+{
return true;
}
QT_MODULE(Test)
-#define QTEST_ASSERT(cond) do {if(!(cond))qt_assert(#cond,__FILE__,__LINE__);} while (0)
+#define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (0)
-#define QTEST_ASSERT_X(cond, where, what) do {if(!(cond))qt_assert_x(where, what,__FILE__,__LINE__);} while (0)
+#define QTEST_ASSERT_X(cond, where, what) do { if (!(cond)) qt_assert_x(where, what,__FILE__,__LINE__); } while (0)
QT_END_NAMESPACE
qPrintTestSlots(stdout);
exit(0);
}
- } else if(strcmp(argv[i], "-xunitxml") == 0){
+ } else if (strcmp(argv[i], "-xunitxml") == 0) {
QTestLog::setLogMode(QTestLog::XunitXML);
} else if (strcmp(argv[i], "-xml") == 0) {
QTestLog::setLogMode(QTestLog::XML);
// we load the QML files. So just store the data for now.
int colon = -1;
int offset;
- for(offset = 0; *(argv[i]+offset); ++offset) {
+ for (offset = 0; *(argv[i]+offset); ++offset) {
if (*(argv[i]+offset) == ':') {
if (*(argv[i]+offset+1) == ':') {
// "::" is used as a test name separator.
int colon = -1;
char buf[512], *data=0;
int off;
- for(off = 0; *(argv[i]+off); ++off) {
+ for (off = 0; *(argv[i]+off); ++off) {
if (*(argv[i]+off) == ':') {
colon = off;
break;
}
}
- if(colon != -1) {
+ if (colon != -1) {
data = qstrdup(argv[i]+colon+1);
}
QTest::qt_snprintf(buf, qMin(512, off + 1), "%s", argv[i]); // copy text before the ':' into buf
if (data && !foundFunction) {
fprintf(stderr, "Unknown testdata for function %s: '%s'\n", slotName, data);
fprintf(stderr, "Available testdata:\n");
- for(int i = 0; i < table.dataCount(); ++i)
+ for (int i = 0; i < table.dataCount(); ++i)
fprintf(stderr, "%s\n", table.testData(i)->dataTag());
return false;
}
*/
char *toHexRepresentation(const char *ba, int length)
{
- if(length == 0)
+ if (length == 0)
return qstrdup("");
/* We output at maximum about maxLen characters in order to avoid
const int len = qMin(maxLen, length);
char *result = 0;
- if(length > maxLen) {
+ if (length > maxLen) {
const int size = len * 3 + 4;
result = new char[size];
int i = 0;
int o = 0;
- while(true) {
+ while (true) {
const char at = ba[i];
result[o] = toHex[(at >> 4) & 0x0F];
++i;
++o;
- if(i == len)
+ if (i == len)
break;
else {
result[o] = ' ';
const bool previousFailed = QTestResult::testFailed();
QTestResult::finishedCurrentTestFunction();
- if(!QTestResult::skipCurrentTest() && !previousFailed) {
+ if (!QTestResult::skipCurrentTest() && !previousFailed) {
if (QTest::testFuncs) {
for (int i = 0; i != QTest::testFuncCount; i++) {
#endif
#ifdef Q_WS_MAC
- bool macNeedsActivate = qApp && (qstrcmp(qApp->metaObject()->className(), "QApplication") == 0);
+ bool macNeedsActivate = qApp && (qstrcmp(qApp->metaObject()->className(), "QApplication") == 0);
#ifdef QT_MAC_USE_COCOA
- IOPMAssertionID powerID;
+ IOPMAssertionID powerID;
#endif
#endif
#ifndef QT_NO_EXCEPTIONS
try {
#endif
- #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- SetErrorMode(SetErrorMode(0) | SEM_NOGPFAULTERRORBOX);
- #endif
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ SetErrorMode(SetErrorMode(0) | SEM_NOGPFAULTERRORBOX);
+#endif
#ifdef Q_WS_MAC
// Starting with Qt 4.4, applications launched from the command line
if (macNeedsActivate) {
ProcessSerialNumber psn = { 0, kCurrentProcess };
SetFrontProcess(&psn);
-# ifdef QT_MAC_USE_COCOA
+#ifdef QT_MAC_USE_COCOA
IOReturn ok = IOPMAssertionCreate(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, &powerID);
if (ok != kIOReturnSuccess)
macNeedsActivate = false; // no need to release the assertion on exit.
-# else
+#else
UpdateSystemActivity(1); // Wake the display.
-# endif
+#endif
}
#endif
throw;
return 1;
}
-# endif
+#endif
currentTestObject = 0;
#ifdef QT_MAC_USE_COCOA
QVector<QByteArray> args;
args.reserve(argc);
- for(int i = 0; i < argc; ++i)
+ for (int i = 0; i < argc; ++i)
{
args.append(arguments.at(i).toLocal8Bit().constData());
argv[i] = args.last().data();
template <class ElementType>
void QTestCoreElement<ElementType>::addAttribute(const QTest::AttributeIndex attributeIndex, const char *value)
{
- if(attributeIndex == -1)
- return;
-
- if (attribute(attributeIndex))
+ if (attributeIndex == -1 || attribute(attributeIndex))
return;
QTestElementAttribute *testAttribute = new QTestElementAttribute;
const char *QTestCoreElement<ElementType>::attributeValue(QTest::AttributeIndex index) const
{
const QTestElementAttribute *attrb = attribute(index);
- if(attrb)
+ if (attrb)
return attrb->value();
return 0;
const char *QTestCoreElement<ElementType>::attributeName(QTest::AttributeIndex index) const
{
const QTestElementAttribute *attrb = attribute(index);
- if(attrb)
+ if (attrb)
return attrb->name();
return 0;
"system-err"
};
- if(type != QTest::LET_Undefined)
+ if (type != QTest::LET_Undefined)
return xmlElementNames[type];
return 0;
const QTestElementAttribute *QTestCoreElement<ElementType>::attribute(QTest::AttributeIndex index) const
{
QTestElementAttribute *iterator = listOfAttributes;
- while(iterator){
- if(iterator->index() == index)
+ while (iterator) {
+ if (iterator->index() == index)
return iterator;
iterator = iterator->nextElement();
template <class T>
QTestCoreList<T>::QTestCoreList()
-:next(0)
-,prev(0)
+ : next(0)
+ , prev(0)
{
}
int numOfElements = 0;
T *it = next;
- while(it){
+ while (it) {
++numOfElements;
it = it->nextElement();
}
class QTestDataPrivate
{
public:
- QTestDataPrivate(): tag(0), parent(0), data(0), dataCount(0) {}
+ QTestDataPrivate() : tag(0), parent(0), data(0), dataCount(0) {}
char *tag;
QTestTable *parent;
QT_BEGIN_NAMESPACE
QTestElement::QTestElement(int type)
- :QTestCoreElement<QTestElement>(type),
- listOfChildren(0),
- parent(0)
+ : QTestCoreElement<QTestElement>(type)
+ , listOfChildren(0)
+ , parent(0)
{
}
bool QTestElement::addLogElement(QTestElement *element)
{
- if(!element)
+ if (!element)
return false;
- if(element->elementType() != QTest::LET_Undefined){
+ if (element->elementType() != QTest::LET_Undefined) {
element->addToList(&listOfChildren);
element->setParent(this);
return true;
This enum numbers the different tests.
\value AI_Undefined
-
+
\value AI_Name
-
+
\value AI_Result
-
+
\value AI_Tests
-
+
\value AI_Failures
-
+
\value AI_Errors
-
+
\value AI_Type
-
+
\value AI_Description
-
+
\value AI_PropertyValue
-
+
\value AI_QTestVersion
-
+
\value AI_QtVersion
-
+
\value AI_File
-
+
\value AI_Line
-
+
\value AI_Metric
-
+
\value AI_Tag
-
+
\value AI_Value
-
+
\value AI_Iterations
*/
"iterations"
};
- if(attributeIndex != QTest::AI_Undefined)
+ if (attributeIndex != QTest::AI_Undefined)
return AttributeNames[attributeIndex];
return 0;
bool QTestElementAttribute::setPair(QTest::AttributeIndex index, const char *value)
{
- if(!value)
+ if (!value)
return false;
delete[] attributeValue;
if (delay == -1 || delay < defaultKeyDelay())
delay = defaultKeyDelay();
- if(delay > 0)
+ if (delay > 0)
QTest::qWait(delay);
QKeyEvent a(press ? QEvent::KeyPress : QEvent::KeyRelease, code, modifier, text, repeat);
if (delay == -1 || delay < defaultMouseDelay())
delay = defaultMouseDelay();
- if(delay > 0)
+ if (delay > 0)
QTest::qWait(delay);
if (pos.isNull())
void QTestXunitStreamer::formatStart(const QTestElement *element, QTestCharBuffer *formatted) const
{
- if(!element || !formatted )
+ if (!element || !formatted )
return;
char indent[20];
if (!element || !formatted )
return;
- if (!element->childElements()){
+ if (!element->childElements()) {
formatted->data()[0] = '\0';
return;
}
void QTestXunitStreamer::formatAttributes(const QTestElement* element, const QTestElementAttribute *attribute, QTestCharBuffer *formatted) const
{
- if(!attribute || !formatted )
+ if (!attribute || !formatted )
return;
QTest::AttributeIndex attrindex = attribute->index();
void QTestXunitStreamer::formatAfterAttributes(const QTestElement *element, QTestCharBuffer *formatted) const
{
- if(!element || !formatted )
+ if (!element || !formatted )
return;
// Errors are written as CDATA within system-err, comments elsewhere
return;
}
- if(!element->childElements())
+ if (!element->childElements())
QTest::qt_asprintf(formatted, "/>\n");
else
QTest::qt_asprintf(formatted, ">\n");
while (element) {
hasChildren = element->childElements();
- if(element->elementType() != QTest::LET_Benchmark){
+ if (element->elementType() != QTest::LET_Benchmark) {
formatStart(element, &buf);
outputString(buf.data());
formatAfterAttributes(element, &buf);
outputString(buf.data());
- if(hasChildren)
+ if (hasChildren)
outputElements(element->childElements(), true);
formatEnd(element, &buf);
void QTestXunitStreamer::outputElementAttributes(const QTestElement* element, QTestElementAttribute *attribute) const
{
QTestCharBuffer buf;
- while(attribute){
+ while (attribute) {
formatAttributes(element, attribute, &buf);
outputString(buf.data());
attribute = attribute->nextElement();
outputString(buf.constData());
}
- QTest::qt_asprintf(&buf,
+ QTest::qt_asprintf(&buf,
"<Environment>\n"
" <QtVersion>%s</QtVersion>\n"
" <QTestVersion>"QTEST_VERSION_STR"</QTestVersion>\n"
if (type == QAbstractTestLogger::Fail || type == QAbstractTestLogger::XPass) {
QTestElement *failureElement = new QTestElement(QTest::LET_Failure);
failureElement->addAttribute(QTest::AI_Result, typeBuf);
- if(file)
+ if (file)
failureElement->addAttribute(QTest::AI_File, file);
else
failureElement->addAttribute(QTest::AI_File, "");
currentLogElement->addAttribute(QTest::AI_Result, typeBuf);
}
- if(file)
+ if (file)
currentLogElement->addAttribute(QTest::AI_File, file);
else
currentLogElement->addAttribute(QTest::AI_File, "");
errorElement->addAttribute(QTest::AI_Description, message);
addTag(errorElement);
- if(file)
+ if (file)
errorElement->addAttribute(QTest::AI_File, file);
else
errorElement->addAttribute(QTest::AI_File, "");