summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/xmlpatterns/data/qabstractdatetime.cpp2
-rw-r--r--tests/auto/xmlpatternsvalidator/files/dateTime-with-microseconds.xml1
-rw-r--r--tests/auto/xmlpatternsvalidator/files/dateTime-with-microseconds.xsd12
-rw-r--r--tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp6
4 files changed, 20 insertions, 1 deletions
diff --git a/src/xmlpatterns/data/qabstractdatetime.cpp b/src/xmlpatterns/data/qabstractdatetime.cpp
index 6329fbe..a298698 100644
--- a/src/xmlpatterns/data/qabstractdatetime.cpp
+++ b/src/xmlpatterns/data/qabstractdatetime.cpp
@@ -163,7 +163,7 @@ QDateTime AbstractDateTime::create(AtomicValue::Ptr &errorMessage,
QString msecondsStr(getSafeCapt(mseconds));
if(!msecondsStr.isEmpty())
- msecondsStr = msecondsStr.leftJustified(3, QLatin1Char('0'));
+ msecondsStr = msecondsStr.leftJustified(3, QLatin1Char('0'), true);
const MSecondProperty msecs = msecondsStr.toInt();
if(hour == 24)
diff --git a/tests/auto/xmlpatternsvalidator/files/dateTime-with-microseconds.xml b/tests/auto/xmlpatternsvalidator/files/dateTime-with-microseconds.xml
new file mode 100644
index 0000000..b17739a
--- /dev/null
+++ b/tests/auto/xmlpatternsvalidator/files/dateTime-with-microseconds.xml
@@ -0,0 +1 @@
+<date>2009-12-16T23:14:10.823218Z</date>
diff --git a/tests/auto/xmlpatternsvalidator/files/dateTime-with-microseconds.xsd b/tests/auto/xmlpatternsvalidator/files/dateTime-with-microseconds.xsd
new file mode 100644
index 0000000..55557f1
--- /dev/null
+++ b/tests/auto/xmlpatternsvalidator/files/dateTime-with-microseconds.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="date" type="xsd:dateTime"/>
+
+ <xsd:simpleType name="microsecondsType">
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:pattern value="\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\.\d\d\d\d\d\dZ"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
diff --git a/tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp b/tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp
index 3517b5a..092e966 100644
--- a/tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp
+++ b/tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp
@@ -216,6 +216,12 @@ void tst_XmlPatternsValidator::xsdSupport_data() const
<< 0
<< (QStringList() << QLatin1String("files/complex-type-including-anonymous-type.xsd"))
<< QString();
+
+ QTest::newRow("QTBUG-11559 A schema and instance with a dateTime containing microseconds")
+ << 0
+ << (QStringList() << QLatin1String("files/dateTime-with-microseconds.xml")
+ << QLatin1String("files/dateTime-with-microseconds.xsd"))
+ << QString();
}
QTEST_MAIN(tst_XmlPatternsValidator)