File indexing completed on 2024-04-28 05:50:05
0001 /* 0002 * SPDX-License-Identifier: GPL-3.0-or-later 0003 * SPDX-FileCopyrightText: 2019-2020 Johan Ouwerkerk <jm.ouwerkerk@gmail.com> 0004 */ 0005 0006 #include "validators/countervalidator.h" 0007 0008 #include <QObject> 0009 #include <QTest> 0010 #include <QValidator> 0011 #include <QtDebug> 0012 0013 Q_DECLARE_METATYPE(std::optional<qulonglong>); 0014 Q_DECLARE_METATYPE(QLocale); 0015 0016 class UnsignedLongParsingSamplesTest: public QObject 0017 { 0018 Q_OBJECT 0019 private Q_SLOTS: 0020 void testParseUnsignedInteger(void); 0021 void testParseUnsignedInteger_data(void); 0022 }; 0023 0024 0025 void UnsignedLongParsingSamplesTest::testParseUnsignedInteger(void) 0026 { 0027 QFETCH(QString, input); 0028 QFETCH(QLocale, locale); 0029 QTEST(validators::parseUnsignedInteger(input, locale), "result"); 0030 } 0031 0032 static void define_test_case(const QString &input, const QLocale &locale, const std::optional<qulonglong> &result) 0033 { 0034 QTest::newRow(qPrintable(input)) << input << locale << result; 0035 } 0036 0037 void UnsignedLongParsingSamplesTest::testParseUnsignedInteger_data(void) 0038 { 0039 QTest::addColumn<QString>("input"); 0040 QTest::addColumn<QLocale>("locale"); 0041 QTest::addColumn<std::optional<qulonglong>>("result"); 0042 0043 QLocale frFR(QLocale::French, QLocale::France); 0044 QLocale nlNL(QLocale::Dutch, QLocale::Netherlands); 0045 QLocale enUK(QLocale::English, QLocale::UnitedKingdom); 0046 0047 define_test_case(QLatin1String("123456"), frFR, std::optional<qulonglong>(123'456ULL)); 0048 define_test_case(QLatin1String("123 456"), frFR, std::optional<qulonglong>(123'456ULL)); 0049 0050 define_test_case(QLatin1String("12 3456"), frFR, std::nullopt); 0051 define_test_case(QLatin1String("1234 56"), frFR, std::nullopt); 0052 define_test_case(QLatin1String("12345 6"), frFR, std::nullopt); 0053 0054 define_test_case(QLatin1String("123.456"), nlNL, std::optional<qulonglong>(123'456ULL)); 0055 define_test_case(QLatin1String("123,456"), enUK, std::optional<qulonglong>(123'456ULL)); 0056 } 0057 0058 QTEST_APPLESS_MAIN(UnsignedLongParsingSamplesTest) 0059 0060 #include "unsigned-long-parsing.moc"