summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-12-10 09:58:18 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-12-10 09:58:18 +0100
commitc5ea60cb84fc7af57a85389a20d91e8397cce1a8 (patch)
tree6f9394b540efb6b0319b6b649d728de84e6d4af0 /tests
parent944129e3022a28a5cb969c6adaf01378b4555375 (diff)
parent8ba610490e2d93526c165584e2f52c7ae8e9edc0 (diff)
downloadqtxmlpatterns-c5ea60cb84fc7af57a85389a20d91e8397cce1a8.tar.gz
Merge remote-tracking branch 'origin/5.6' into dev
Change-Id: Iaf57c1b0beffdceb3f0533aa77ba536ec4c373a9
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/xmlpatternssdk/DebugExpressionFactory.cpp82
-rw-r--r--tests/auto/xmlpatternssdk/TestCase.cpp36
-rw-r--r--tests/auto/xmlpatternssdk/TreeItem.cpp4
-rw-r--r--tests/auto/xmlpatternssdk/TreeItem.h3
-rw-r--r--tests/auto/xmlpatternsxqts/tst_suitetest.cpp9
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()));