src/testlib/qplaintestlogger.cpp
branchGCC_SURGE
changeset 31 5daf16870df6
parent 30 5dc02b23752f
equal deleted inserted replaced
27:93b982ccede2 31:5daf16870df6
    42 #include "QtTest/private/qtestresult_p.h"
    42 #include "QtTest/private/qtestresult_p.h"
    43 #include "QtTest/qtestassert.h"
    43 #include "QtTest/qtestassert.h"
    44 #include "QtTest/private/qtestlog_p.h"
    44 #include "QtTest/private/qtestlog_p.h"
    45 #include "QtTest/private/qplaintestlogger_p.h"
    45 #include "QtTest/private/qplaintestlogger_p.h"
    46 #include "QtTest/private/qbenchmark_p.h"
    46 #include "QtTest/private/qbenchmark_p.h"
       
    47 #include "QtTest/private/qbenchmarkmetric_p.h"
    47 
    48 
    48 #include <stdarg.h>
    49 #include <stdarg.h>
    49 #include <stdio.h>
    50 #include <stdio.h>
    50 #include <stdlib.h>
    51 #include <stdlib.h>
    51 #include <string.h>
    52 #include <string.h>
   179             for (int i = 0; i < ptr.Length(); i += maxBlockSize) {
   180             for (int i = 0; i < ptr.Length(); i += maxBlockSize) {
   180                 int size = Min(maxBlockSize, ptr.Length() - i);
   181                 int size = Min(maxBlockSize, ptr.Length() - i);
   181                 hbuffer->Des().Copy(ptr.Mid(i, size));
   182                 hbuffer->Des().Copy(ptr.Mid(i, size));
   182                 RDebug::Print(format, hbuffer);
   183                 RDebug::Print(format, hbuffer);
   183             }
   184             }
       
   185             delete hbuffer;
   184         }
   186         }
   185         else {
   187         else {
   186             // fast, no allocations, but truncates silently
   188             // fast, no allocations, but truncates silently
   187             RDebug::RawPrint(format);
   189             RDebug::RawPrint(format);
   188             TPtrC8 ptr(reinterpret_cast<const TUint8*>(str));
   190             TPtrC8 ptr(reinterpret_cast<const TUint8*>(str));
   322             buf1, sizeof(buf1), "%s: %s::%s",
   324             buf1, sizeof(buf1), "%s: %s::%s",
   323             bmtag,
   325             bmtag,
   324             QTestResult::currentTestObjectName(),
   326             QTestResult::currentTestObjectName(),
   325             result.context.slotName.toAscii().data());
   327             result.context.slotName.toAscii().data());
   326 
   328 
   327 
       
   328         char bufTag[1024];
   329         char bufTag[1024];
   329         bufTag[0] = 0;
   330         bufTag[0] = 0;
   330         QByteArray tag = result.context.tag.toAscii();
   331         QByteArray tag = result.context.tag.toAscii();
   331         if (tag.isEmpty() == false) {
   332         if (tag.isEmpty() == false) {
   332             QTest::qt_snprintf(bufTag, sizeof(bufTag), ":\"%s\"", tag.data());
   333             QTest::qt_snprintf(bufTag, sizeof(bufTag), ":\"%s\"", tag.data());
   338         QTest::qt_snprintf(
   339         QTest::qt_snprintf(
   339             fillFormat, sizeof(fillFormat), ":\n%%%ds", fillLength);
   340             fillFormat, sizeof(fillFormat), ":\n%%%ds", fillLength);
   340         char fill[1024];
   341         char fill[1024];
   341         QTest::qt_snprintf(fill, sizeof(fill), fillFormat, "");
   342         QTest::qt_snprintf(fill, sizeof(fill), fillFormat, "");
   342 
   343 
   343 
   344         const char * unitText = QTest::benchmarkMetricUnit(result.metric);
   344         QByteArray unitText = QBenchmarkGlobalData::current->measurer->unitText().toAscii();
       
   345 
   345 
   346         qreal valuePerIteration = qreal(result.value) / qreal(result.iterations);
   346         qreal valuePerIteration = qreal(result.value) / qreal(result.iterations);
   347         char resultBuffer[100] = "";
   347         char resultBuffer[100] = "";
   348         formatResult(resultBuffer, 100, valuePerIteration, countSignificantDigits(result.value));
   348         formatResult(resultBuffer, 100, valuePerIteration, countSignificantDigits(result.value));
   349 
   349 
   350         QByteArray iterationText = "per iteration";
       
   351 
       
   352         char buf2[1024];
   350         char buf2[1024];
       
   351         QTest::qt_snprintf(
       
   352             buf2, sizeof(buf2), "%s %s",
       
   353             resultBuffer,
       
   354             unitText);
       
   355 
       
   356         char buf2_[1024];
       
   357         QByteArray iterationText = " per iteration";
   353         Q_ASSERT(result.iterations > 0);
   358         Q_ASSERT(result.iterations > 0);
   354         QTest::qt_snprintf(
   359         QTest::qt_snprintf(
   355             buf2, sizeof(buf2), "%s %s %s",
   360             buf2_,
   356             resultBuffer,
   361             sizeof(buf2_), "%s",
   357             unitText.data(),
       
   358             iterationText.data());
   362             iterationText.data());
   359 
   363 
   360         char buf3[1024];
   364         char buf3[1024];
   361         Q_ASSERT(result.iterations > 0);
   365         Q_ASSERT(result.iterations > 0);
       
   366         formatResult(resultBuffer, 100, result.value, countSignificantDigits(result.value));
   362         QTest::qt_snprintf(
   367         QTest::qt_snprintf(
   363             buf3, sizeof(buf3), " (total: %s, iterations: %d)\n",
   368             buf3, sizeof(buf3), " (total: %s, iterations: %d)",
   364             QByteArray::number(result.value).constData(), // no 64-bit qt_snprintf support
   369             resultBuffer,
   365             result.iterations);
   370             result.iterations);
   366 
   371 
   367         char buf[1024];
   372         char buf[1024];
   368         QTest::qt_snprintf(buf, sizeof(buf), "%s%s%s%s%s", buf1, bufTag, fill, buf2, buf3);
   373 
       
   374         if (result.setByMacro) {
       
   375             QTest::qt_snprintf(
       
   376                 buf, sizeof(buf), "%s%s%s%s%s%s\n", buf1, bufTag, fill, buf2, buf2_, buf3);
       
   377         } else {
       
   378             QTest::qt_snprintf(buf, sizeof(buf), "%s%s%s%s\n", buf1, bufTag, fill, buf2);
       
   379         }
       
   380 
   369         memcpy(buf, bmtag, strlen(bmtag));
   381         memcpy(buf, bmtag, strlen(bmtag));
   370         outputMessage(buf);
   382         outputMessage(buf);
   371     }
   383     }
   372 }
   384 }
   373 
   385