diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/xmlpatternssdk/DebugExpressionFactory.cpp | 82 | ||||
-rw-r--r-- | tests/auto/xmlpatternssdk/TestCase.cpp | 36 | ||||
-rw-r--r-- | tests/auto/xmlpatternssdk/TreeItem.cpp | 4 | ||||
-rw-r--r-- | tests/auto/xmlpatternssdk/TreeItem.h | 3 | ||||
-rw-r--r-- | tests/auto/xmlpatternsxqts/tst_suitetest.cpp | 9 |
5 files changed, 83 insertions, 51 deletions
diff --git a/tests/auto/xmlpatternssdk/DebugExpressionFactory.cpp b/tests/auto/xmlpatternssdk/DebugExpressionFactory.cpp index 830b25f..92c4a6a 100644 --- a/tests/auto/xmlpatternssdk/DebugExpressionFactory.cpp +++ b/tests/auto/xmlpatternssdk/DebugExpressionFactory.cpp @@ -179,35 +179,25 @@ void DebugExpressionFactory::processTemplateRule(const Expression::Ptr &body, const QXmlName &mode, const TemplateCompilationStage stage) { - const char * title; - - switch(stage) - { - case TemplateInitial: - { - title = "Initial Build"; - break; - } - case TemplateTypeCheck: - { - title = "Type Check"; - break; - } - case TemplateCompress: - { - title = "Compression"; - break; - } + QString title = QLatin1String("T-Rule "); + + switch (stage) { + case TemplateInitial: + title += QLatin1String("Initial Build"); + break; + case TemplateTypeCheck: + title += QLatin1String("Type Check"); + break; + case TemplateCompress: + title += QLatin1String("Compression"); + break; } + title += QLatin1String(" mode: ") + + Global::namePool()->displayName(mode) + + QLatin1String(" priority: ") + + QString::number(pattern->priority()); - const QString modeName(Global::namePool()->displayName(mode)); - Q_ASSERT(title); - ASTItem *const newChild = new ASTItem(m_ast, QLatin1String("T-Rule ") - + QLatin1String(title) - + QLatin1String(" mode: ") - + modeName - + QLatin1String(" priority: ") - + QString::number(pattern->priority())); + ASTItem *const newChild = new ASTItem(m_ast, title); m_ast->appendChild(newChild); newChild->appendChild(buildASTTree(pattern->matchPattern(), newChild, QPatternist::SequenceType::Ptr())); @@ -218,31 +208,23 @@ void DebugExpressionFactory::processNamedTemplate(const QXmlName &name, const Expression::Ptr &body, const TemplateCompilationStage stage) { - const char * title; - - switch(stage) - { - case TemplateInitial: - { - title = "Named Template Initial Build"; - break; - } - case TemplateTypeCheck: - { - title = "Named Template Type Check"; - break; - } - case TemplateCompress: - { - title = "Named Template Compression"; - break; - } + QString title; + + switch (stage) { + case TemplateInitial: + title += QLatin1String("Named Template Initial Build"); + break; + case TemplateTypeCheck: + title += QLatin1String("Named Template Type Check"); + break; + case TemplateCompress: + title += QLatin1String("Named Template Compression"); + break; } - Q_ASSERT(title); - ASTItem *const newChild = new ASTItem(m_ast, QLatin1String(title) - + QLatin1String(": ") - + Global::namePool()->displayName(name)); + title += QLatin1String(": ") + Global::namePool()->displayName(name); + + ASTItem *const newChild = new ASTItem(m_ast, title); m_ast->appendChild(newChild); newChild->appendChild(buildASTTree(body, newChild, QPatternist::SequenceType::Ptr())); diff --git a/tests/auto/xmlpatternssdk/TestCase.cpp b/tests/auto/xmlpatternssdk/TestCase.cpp index d84ac06..acf9e84 100644 --- a/tests/auto/xmlpatternssdk/TestCase.cpp +++ b/tests/auto/xmlpatternssdk/TestCase.cpp @@ -38,6 +38,7 @@ #include <QXmlResultItems> #include <QXmlSerializer> #include <private/qxmlquery_p.h> +#include <algorithm> #include "DebugExpressionFactory.h" #include "ExternalSourceLoader.h" @@ -62,9 +63,23 @@ TestCase::~TestCase() delete m_result; } +static bool lessThan(const char *a, const char *b) +{ + return qstrcmp(a, b) < 0; +} + TestResult::List TestCase::execute(const ExecutionStage stage, TestSuite *) { + ++TestCase::executions; + + if ((TestCase::executions < TestCase::executeRange.first) || (TestCase::executions > TestCase::executeRange.second)) { + qDebug("Skipping test case #%6d", TestCase::executions); + return TestResult::List(); + } + + const QByteArray nm = name().toLatin1(); + if(name() == QLatin1String("Constr-cont-document-3")) { TestResult::List result; @@ -95,9 +110,28 @@ TestResult::List TestCase::execute(const ExecutionStage stage, result.append(createTestResult(TestResult::Fail, QLatin1String("Skipped this test, we crash on it."))); return result; } + else { + // Should be sorted in the order that std::binary_search expects + static const char *crashes[] = {"Constr-attr-content-4", + "K2-DirectConElem-12", + "K2-DirectConElem-50", + "K2-DirectConElemAttr-10", + "K2-DirectConElemAttr-18", + "K2-DirectConElemAttr-19", + "K2-DirectConElemAttr-20", + "K2-DirectConElemAttr-21" + }; + + const bool skip = std::binary_search(&crashes[0], &crashes[sizeof(crashes)/sizeof(crashes[0])], nm.constData(), lessThan); + if (skip) { + TestResult::List result; + result.append(createTestResult(TestResult::Fail, QLatin1String("Skipped this test, we crash on it."))); + return result; + } + } - qDebug() << "Running test case: " << name(); + qDebug("Running test case #%6d: %s", TestCase::executions, nm.constData()); return execute(stage); Q_ASSERT(false); diff --git a/tests/auto/xmlpatternssdk/TreeItem.cpp b/tests/auto/xmlpatternssdk/TreeItem.cpp index 9b91f0c..6c8c265 100644 --- a/tests/auto/xmlpatternssdk/TreeItem.cpp +++ b/tests/auto/xmlpatternssdk/TreeItem.cpp @@ -51,4 +51,8 @@ int TreeItem::row() const return -1; } +QPair<int, int> TreeItem::executeRange = qMakePair<int,int>(0,INT_MAX); +int TreeItem::executions = 0; + + // vim: et:ts=4:sw=4:sts=4 diff --git a/tests/auto/xmlpatternssdk/TreeItem.h b/tests/auto/xmlpatternssdk/TreeItem.h index 802b09f..f6a4fa1 100644 --- a/tests/auto/xmlpatternssdk/TreeItem.h +++ b/tests/auto/xmlpatternssdk/TreeItem.h @@ -84,6 +84,9 @@ namespace QPatternistSDK virtual QVariant data(const Qt::ItemDataRole role, int column) const = 0; + static QPair<int,int> executeRange; + static int executions; + Q_SIGNALS: /** * Emitted whenever this item changed. This is used for keeping diff --git a/tests/auto/xmlpatternsxqts/tst_suitetest.cpp b/tests/auto/xmlpatternsxqts/tst_suitetest.cpp index 4fdb7b5..4785067 100644 --- a/tests/auto/xmlpatternsxqts/tst_suitetest.cpp +++ b/tests/auto/xmlpatternsxqts/tst_suitetest.cpp @@ -35,6 +35,8 @@ #include <QtTest/QtTest> #include <QProcess> +#include <cstdlib> + #include "TestSuite.h" #include "TestSuiteResult.h" #include "XMLWriter.h" @@ -70,6 +72,13 @@ void tst_SuiteTest::runTestSuite() const if(m_abortRun) QSKIP("The test suite is not available, no tests are run."); + QByteArray range = qgetenv("XMLPATTERNSXQTS_TESTRANGE"); + char *endptr; + TreeItem::executeRange.first = strtol(range.constData(), &endptr, 10); + long e = 0; + if (endptr - range.constData() < range.size()) + e = strtol(endptr + 1, &endptr, 10); + TreeItem::executeRange.second = (e == 0 ? INT_MAX : e); QString errMsg; const QFileInfo fi(m_catalogPath); const QUrl catalogPath(QUrl::fromLocalFile(fi.absoluteFilePath())); |