From 9ccdef031b534c40d366951d525125fc69bf8988 Mon Sep 17 00:00:00 2001 From: Paul Colby Date: Wed, 8 Oct 2014 17:08:38 +1100 Subject: [PATCH] Validate the Garmin (GPX) TrackPoint Extension (#30) Note, we're not yet creating any such extension data, but if/when we do this will validate it :) --- test/polar/v2/testtrainingsession.cpp | 30 +++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/test/polar/v2/testtrainingsession.cpp b/test/polar/v2/testtrainingsession.cpp index 39e9df1a..e45e9f9a 100644 --- a/test/polar/v2/testtrainingsession.cpp +++ b/test/polar/v2/testtrainingsession.cpp @@ -974,12 +974,30 @@ void TestTrainingSession::toGPX_GarminTrackPoint() // Validate the generated document against the relevant XML schema. gpx.documentElement().removeAttribute(QLatin1String("xsi:schemaLocation")); - QFile xsd(QFINDTESTDATA("schemata/gpx.xsd")); - QVERIFY(xsd.open(QIODevice::ReadOnly)); - QXmlSchema schema; - QVERIFY(schema.load(&xsd, QUrl::fromLocalFile(xsd.fileName()))); - QXmlSchemaValidator validator(schema); - QVERIFY(validator.validate(gpx.toByteArray())); + { // The base GPX schema. + QFile xsd(QFINDTESTDATA("schemata/gpx.xsd")); + QVERIFY(xsd.open(QIODevice::ReadOnly)); + QXmlSchema schema; + QVERIFY(schema.load(&xsd, QUrl::fromLocalFile(xsd.fileName()))); + QXmlSchemaValidator validator(schema); + QVERIFY(validator.validate(gpx.toByteArray())); + } + + { // The Garmin TrackPoint Extension. + const QDomNodeList extensionNodes = + gpx.elementsByTagName(QLatin1String("TrackPointExtension")); + QFile xsd(QFINDTESTDATA("schemata/TrackPointExtensionv1.xsd")); + QVERIFY(xsd.open(QIODevice::ReadOnly)); + QXmlSchema schema; + QVERIFY(schema.load(&xsd, QUrl::fromLocalFile(xsd.fileName()))); + QXmlSchemaValidator validator(schema); + for (int index = 0; index < extensionNodes.length(); ++index) { + QByteArray byteArray; + QTextStream stream(&byteArray); + stream << extensionNodes.at(index); + QVERIFY(validator.validate(byteArray)); + } + } } void TestTrainingSession::toHRM_data()