summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorAndreas Buhr <andreas.buhr@qt.io>2020-10-02 10:06:56 +0200
committerAndreas Buhr <andreas.buhr@qt.io>2020-10-23 20:33:18 +0200
commit83fce1931f055498c29bb23951c1f5da264fb4f9 (patch)
tree5a9c35bce46a2d9ccda732f187b5a64ecba15b99 /tests/auto
parent85e4e5bacf0030573359be8de2ea984d541fdbd5 (diff)
Add unit tests for qdatetimeparser
The qdatetimeparser was not tested explicitly so far, but only implicitly in tst_qdate / tst_qdatetime / tst_qdatetimeedit etc. This made it difficult to test some corner cases, especially in the context of unfinished dates, i.e. dates which are invalid, but could become valid by adding more characters. This is used to validate user input in qdatetimeedit. Task-number: QTBUG-84334 Change-Id: I27202849abb1b7cad96d3e25f7ac81ce85272b2a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/corelib/time/CMakeLists.txt1
-rw-r--r--tests/auto/corelib/time/qdatetimeparser/.gitignore1
-rw-r--r--tests/auto/corelib/time/qdatetimeparser/CMakeLists.txt10
-rw-r--r--tests/auto/corelib/time/qdatetimeparser/qdatetimeparser.pro4
-rw-r--r--tests/auto/corelib/time/qdatetimeparser/tst_qdatetimeparser.cpp72
-rw-r--r--tests/auto/corelib/time/time.pro1
6 files changed, 89 insertions, 0 deletions
diff --git a/tests/auto/corelib/time/CMakeLists.txt b/tests/auto/corelib/time/CMakeLists.txt
index b099b32469..e861a1ac71 100644
--- a/tests/auto/corelib/time/CMakeLists.txt
+++ b/tests/auto/corelib/time/CMakeLists.txt
@@ -3,6 +3,7 @@
add_subdirectory(qcalendar)
add_subdirectory(qdate)
add_subdirectory(qdatetime)
+add_subdirectory(qdatetimeparser)
add_subdirectory(qtime)
if(QT_FEATURE_timezone)
add_subdirectory(qtimezone)
diff --git a/tests/auto/corelib/time/qdatetimeparser/.gitignore b/tests/auto/corelib/time/qdatetimeparser/.gitignore
new file mode 100644
index 0000000000..880d073ac8
--- /dev/null
+++ b/tests/auto/corelib/time/qdatetimeparser/.gitignore
@@ -0,0 +1 @@
+tst_qdatetimeparser
diff --git a/tests/auto/corelib/time/qdatetimeparser/CMakeLists.txt b/tests/auto/corelib/time/qdatetimeparser/CMakeLists.txt
new file mode 100644
index 0000000000..df9fe43958
--- /dev/null
+++ b/tests/auto/corelib/time/qdatetimeparser/CMakeLists.txt
@@ -0,0 +1,10 @@
+#####################################################################
+## tst_qdatetimeparser Test:
+#####################################################################
+
+qt_internal_add_test(tst_qdatetimeparser
+ SOURCES
+ tst_qdatetimeparser.cpp
+ PUBLIC_LIBRARIES
+ Qt::CorePrivate
+)
diff --git a/tests/auto/corelib/time/qdatetimeparser/qdatetimeparser.pro b/tests/auto/corelib/time/qdatetimeparser/qdatetimeparser.pro
new file mode 100644
index 0000000000..76431b04b0
--- /dev/null
+++ b/tests/auto/corelib/time/qdatetimeparser/qdatetimeparser.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase
+TARGET = tst_qdatetimeparser
+QT = core-private testlib
+SOURCES = tst_qdatetimeparser.cpp
diff --git a/tests/auto/corelib/time/qdatetimeparser/tst_qdatetimeparser.cpp b/tests/auto/corelib/time/qdatetimeparser/tst_qdatetimeparser.cpp
new file mode 100644
index 0000000000..c6490c6158
--- /dev/null
+++ b/tests/auto/corelib/time/qdatetimeparser/tst_qdatetimeparser.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <private/qdatetimeparser_p.h>
+
+class tst_QDateTimeParser : public QObject
+{
+ Q_OBJECT
+private Q_SLOTS:
+ void intermediateYear_data();
+ void intermediateYear();
+};
+
+void tst_QDateTimeParser::intermediateYear_data()
+{
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QDate>("expected");
+
+ QTest::newRow("short-year-begin")
+ << "yyyy_MM_dd" << "200_12_15" << QDate(200, 12, 15);
+ QTest::newRow("short-year-mid")
+ << "MM_yyyy_dd" << "12_200_15" << QDate(200, 12, 15);
+ QTest::newRow("short-year-end")
+ << "MM_dd_yyyy" << "12_15_200" << QDate(200, 12, 15);
+}
+
+void tst_QDateTimeParser::intermediateYear()
+{
+ QFETCH(QString, format);
+ QFETCH(QString, input);
+ QFETCH(QDate, expected);
+
+ QDateTimeParser testParser(QMetaType::QDateTime, QDateTimeParser::DateTimeEdit);
+
+ QVERIFY(testParser.parseFormat(format));
+
+ QDateTime val(QDate(1900, 1, 1).startOfDay());
+ const QDateTimeParser::StateNode tmp = testParser.parse(input, -1, val, false);
+ QCOMPARE(tmp.state, QDateTimeParser::Intermediate);
+ QCOMPARE(tmp.value, expected.startOfDay());
+}
+
+QTEST_APPLESS_MAIN(tst_QDateTimeParser)
+
+#include "tst_qdatetimeparser.moc"
diff --git a/tests/auto/corelib/time/time.pro b/tests/auto/corelib/time/time.pro
index c917587fe7..78217e582e 100644
--- a/tests/auto/corelib/time/time.pro
+++ b/tests/auto/corelib/time/time.pro
@@ -3,5 +3,6 @@ SUBDIRS = \
qcalendar \
qdate \
qdatetime \
+ qdatetimeparser \
qtime
qtConfig(timezone): SUBDIRS += qtimezone