File indexing completed on 2024-04-28 05:50:05
0001 /* 0002 * SPDX-License-Identifier: GPL-3.0-or-later 0003 * SPDX-FileCopyrightText: 2019 Johan Ouwerkerk <jm.ouwerkerk@gmail.com> 0004 */ 0005 0006 #include "test-util.h" 0007 0008 #include "validators/countervalidator.h" 0009 0010 using namespace validators::test; 0011 0012 static QLocale frFR(QLocale::French, QLocale::France); 0013 static QLocale nlNL(QLocale::Dutch, QLocale::Netherlands); 0014 static QLocale enUK(QLocale::English, QLocale::UnitedKingdom); 0015 0016 /* 0017 * French is weird. 0018 * Or at least the QLocale for France is definitely inconsistent. 0019 * Sometimes you get 123\u00A0456, sometimes you get 123\202f\456... 0020 */ 0021 static const QString french = frFR.toString(123456ULL); 0022 static const QString french2 = frFR.toString(12345ULL); 0023 0024 static void define_valid_table(void) 0025 { 0026 define_test_case(QLatin1String("42"), QLatin1String("42"), QValidator::Acceptable); 0027 define_test_case(QLatin1String("\r \n\t42\r\t \n"), QLatin1String("42"), QValidator::Acceptable); 0028 0029 define_test_case(QLatin1String("33 "), QLatin1String("33"), QValidator::Acceptable); 0030 define_test_case(QLatin1String("2 2"), QLatin1String("22"), QValidator::Invalid); 0031 define_test_case(QLatin1String("2\t\r\n2"), QLatin1String("22"), QValidator::Invalid); 0032 0033 define_test_case(QLatin1String("123,456"), QLatin1String("123456"), QValidator::Acceptable, QLocale::c()); 0034 0035 define_test_case(QLatin1String("123456"), QLatin1String("123,456"), QValidator::Acceptable, enUK); 0036 define_test_case(QLatin1String("123,456"), QLatin1String("123,456"), QValidator::Acceptable, enUK); 0037 define_test_case(QLatin1String("123 456"), QLatin1String("123,456"), QValidator::Invalid, enUK); 0038 0039 define_test_case(QLatin1String("123456"), QLatin1String("123.456"), QValidator::Acceptable, nlNL); 0040 define_test_case(QLatin1String("123.456"), QLatin1String("123.456"), QValidator::Acceptable, nlNL); 0041 define_test_case(QLatin1String("123 456"), QLatin1String("123.456"), QValidator::Invalid, nlNL); 0042 define_test_case(QLatin1String("123,456"), QLatin1String("123.456"), QValidator::Acceptable, nlNL); 0043 0044 define_test_case(french, french, QValidator::Acceptable, frFR); 0045 define_test_case(QLatin1String("123456"), french, QValidator::Acceptable, frFR); 0046 define_test_case(QLatin1String("123,456"), french, QValidator::Acceptable, frFR); 0047 define_test_case(QLatin1String("123 456"), french, QValidator::Acceptable, frFR); 0048 define_test_case(QLatin1String("123 45"), french2, QValidator::Invalid, frFR); 0049 } 0050 0051 static void define_empty_table(void) 0052 { 0053 define_test_case(QLatin1String(""), QLatin1String(""), QValidator::Intermediate); 0054 define_test_case(QLatin1String(" "), QLatin1String(""), QValidator::Invalid); 0055 define_test_case(QLatin1String("\t"), QLatin1String(""), QValidator::Invalid); 0056 define_test_case(QLatin1String("\r\n"), QLatin1String(""), QValidator::Invalid); 0057 } 0058 0059 /* 0060 * Due to how the UnsignedLongValidator works fixup() is always called and fixup() 0061 * never yields outright invalid output 0062 * 0063 * As a result it is not needed to maintain separate input samples for 0064 * both fixup() and validate(). 0065 */ 0066 0067 static void define_data(void) 0068 { 0069 define_empty_table(); 0070 define_valid_table(); 0071 0072 define_test_case(QLatin1String("-33"), QLatin1String("-33"), QValidator::Invalid); 0073 define_test_case(QLatin1String("ZZ9 Plural Z Alpha"), QLatin1String("ZZ9PluralZAlpha"), QValidator::Invalid); 0074 0075 define_test_case(QLatin1String("123.456"), QLatin1String("123.456"), QValidator::Invalid, frFR); 0076 define_test_case(QLatin1String("123.456"), QLatin1String("123.456"), QValidator::Invalid, enUK); 0077 define_test_case(QLatin1String("123.456"), QLatin1String("123.456"), QValidator::Invalid, QLocale::c()); 0078 define_test_case(french, french, QValidator::Invalid, enUK); 0079 define_test_case(french, french, QValidator::Invalid, nlNL); 0080 } 0081 0082 DEFINE_VALIDATOR_TEST(UnsignedLongValidatorTest, validators::UnsignedLongValidator, define_data); 0083 0084 QTEST_APPLESS_MAIN(UnsignedLongValidatorTest) 0085 0086 #include "unsigned-long-validator.moc"