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>bb10
parent
85e4e5bacf
commit
83fce1931f
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
tst_qdatetimeparser
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
#####################################################################
|
||||
## tst_qdatetimeparser Test:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_test(tst_qdatetimeparser
|
||||
SOURCES
|
||||
tst_qdatetimeparser.cpp
|
||||
PUBLIC_LIBRARIES
|
||||
Qt::CorePrivate
|
||||
)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
CONFIG += testcase
|
||||
TARGET = tst_qdatetimeparser
|
||||
QT = core-private testlib
|
||||
SOURCES = 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"
|
||||
|
|
@ -3,5 +3,6 @@ SUBDIRS = \
|
|||
qcalendar \
|
||||
qdate \
|
||||
qdatetime \
|
||||
qdatetimeparser \
|
||||
qtime
|
||||
qtConfig(timezone): SUBDIRS += qtimezone
|
||||
|
|
|
|||
Loading…
Reference in New Issue