diff options
Diffstat (limited to 'tests')
9 files changed, 211 insertions, 13 deletions
diff --git a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp index e41a4760e6a..65714036e2d 100644 --- a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp +++ b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp @@ -3009,14 +3009,41 @@ void tst_QTextStream::int_write_with_locale_data() QTest::addColumn<int>("numberFlags"); QTest::addColumn<int>("input"); QTest::addColumn<QString>("output"); + QTest::addColumn<int>("fieldWidth"); + QTest::addColumn<QTextStream::FieldAlignment>("fieldAlignment"); - QTest::newRow("C -123") << QString("C") << 0 << -123 << QString("-123"); - QTest::newRow("C +123") << QString("C") << (int)QTextStream::ForceSign << 123 << QString("+123"); - QTest::newRow("C 12345") << QString("C") << 0 << 12345 << QString("12345"); + const auto alignDefault = QTextStream().fieldAlignment(); + constexpr int forceSign = QTextStream::ForceSign; - QTest::newRow("de_DE -123") << QString("de_DE") << 0 << -123 << QString("-123"); - QTest::newRow("de_DE +123") << QString("de_DE") << (int)QTextStream::ForceSign << 123 << QString("+123"); - QTest::newRow("de_DE 12345") << QString("de_DE") << 0 << 12345 << QString("12.345"); + QTest::newRow("C -123") << u"C"_s << 0 << -123 << u"-123"_s << 0 << alignDefault; + QTest::newRow("C +123") << u"C"_s << forceSign << 123 << u"+123"_s << 0 << alignDefault; + QTest::newRow("C 12345") << u"C"_s << 0 << 12345 << u"12345"_s << 0 << alignDefault; + + QTest::newRow("de_DE -123") << u"de_DE"_s << 0 << -123 << u"-123"_s << 0 << alignDefault; + QTest::newRow("de_DE +123") << u"de_DE"_s << forceSign << 123 << u"+123"_s << 0 << alignDefault; + QTest::newRow("de_DE 12345") << u"de_DE"_s << 0 << 12345 << u"12.345"_s << 0 << alignDefault; + + constexpr auto alignAccountingStyle = QTextStream::FieldAlignment::AlignAccountingStyle; + + { + const QLocale loc("ar_EG"_L1); + // Arabic as spoken in Egypt has a two-code-point negativeSign(): + const auto minus = loc.negativeSign(); + QCOMPARE(minus.size(), 2); + // ditto positiveSign(): + const auto plus = loc.positiveSign(); + QCOMPARE(plus.size(), 2); + + QTest::addRow("ar_EG -123") << u"ar_EG"_s << 0 << -123 + << (minus + u" ١٢٣") + << 10 << alignAccountingStyle; + QTest::newRow("ar_EG +123") << u"ar_EG"_s << forceSign << 123 + << (plus + u" ١٢٣") + << 10 << alignAccountingStyle; + QTest::newRow("ar_EG 12345") << u"ar_EG"_s << 0 << 12345 + << u" ١٢٬٣٤٥"_s + << 10 << alignAccountingStyle; + } } void tst_QTextStream::int_write_with_locale() @@ -3025,12 +3052,18 @@ void tst_QTextStream::int_write_with_locale() QFETCH(int, numberFlags); QFETCH(int, input); QFETCH(QString, output); + QFETCH(const int, fieldWidth); + QFETCH(const QTextStream::FieldAlignment, fieldAlignment); QString result; QTextStream stream(&result); stream.setLocale(QLocale(locale)); + stream.setFieldAlignment(fieldAlignment); if (numberFlags) stream.setNumberFlags(QTextStream::NumberFlags(numberFlags)); + if (fieldWidth) + stream.setFieldWidth(fieldWidth); + QVERIFY(stream << input); QCOMPARE(result, output); } diff --git a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp index e10dd6da885..8787cc54bf6 100644 --- a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp +++ b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> +#include <QtCore/qatomicscopedvaluerollback.h> #include <QtCore/QCoreApplication> #include <QtCore/QTimer> #ifdef QT_GUI_LIB @@ -15,6 +16,8 @@ #endif #include <QSet> #include <vector> + +using namespace std::chrono_literals; using namespace Qt::StringLiterals; /* XPM test data for QPixmap, QImage tests (use drag cursors as example) */ @@ -105,6 +108,9 @@ public: enum class MyClassEnum { MyClassEnumValue1, MyClassEnumValue2 }; Q_ENUM(MyClassEnum) +private: + void defaultTryTimeoutData(); + private slots: void compare_unregistered_enums(); void compare_registered_enums(); @@ -152,6 +158,10 @@ private slots: void tryVerify(); void tryVerify2(); void verifyExplicitOperatorBool(); + void defaultTryVerifyTimeout_data(); + void defaultTryVerifyTimeout(); + void defaultTryCompareTimeout_data(); + void defaultTryCompareTimeout(); }; enum MyUnregisteredEnum { MyUnregisteredEnumValue1, MyUnregisteredEnumValue2 }; @@ -841,5 +851,56 @@ void tst_Cmptest::verifyExplicitOperatorBool() QVERIFY(!val2); } +void tst_Cmptest::defaultTryTimeoutData() +{ + QTest::addColumn<std::chrono::milliseconds>("timeout"); + QTest::addRow("times-out") << 1ms; + QTest::addRow("ample-time") << 1000ms; +} + +void tst_Cmptest::defaultTryVerifyTimeout_data() +{ + defaultTryTimeoutData(); +} + +void tst_Cmptest::defaultTryVerifyTimeout() +{ + QFETCH(const std::chrono::milliseconds, timeout); + + // Check that the default is what expect. + QCOMPARE(QTest::defaultTryTimeout.load(std::memory_order_relaxed), 5s); + + { + DeferredFlag trueEventually; + const auto innerScope = QAtomicScopedValueRollback(QTest::defaultTryTimeout, timeout, std::memory_order_relaxed); + QEXPECT_FAIL("times-out", "The timeout (std::chrono::milliseconds) is deliberately too short", Continue); + QTRY_VERIFY(trueEventually); + } + + // innerScope has now been destroyed, so the timeout should be back to its default. + QCOMPARE(QTest::defaultTryTimeout.load(std::memory_order_relaxed), 5s); +} + +void tst_Cmptest::defaultTryCompareTimeout_data() +{ + defaultTryTimeoutData(); +} + +void tst_Cmptest::defaultTryCompareTimeout() +{ + QFETCH(const std::chrono::milliseconds, timeout); + + DeferredFlag trueAlready(true); + { + DeferredFlag trueEventually; + const auto innerScope = QAtomicScopedValueRollback(QTest::defaultTryTimeout, timeout, std::memory_order_relaxed); + QEXPECT_FAIL("times-out", "The timeout (std::chrono::milliseconds) is deliberately too short", Continue); + QTRY_COMPARE(trueEventually, trueAlready); + } + + // innerScope has now been destroyed, so the timeout should be back to its default. + QCOMPARE(QTest::defaultTryTimeout.load(std::memory_order_relaxed), 5s); +} + QTEST_MAIN(tst_Cmptest) #include "tst_cmptest.moc" diff --git a/tests/auto/testlib/selftests/expected_cmptest.junitxml b/tests/auto/testlib/selftests/expected_cmptest.junitxml index ce6a1c0c76e..232b86117af 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.junitxml +++ b/tests/auto/testlib/selftests/expected_cmptest.junitxml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<testsuite name="tst_Cmptest" timestamp="@TEST_START_TIME@" hostname="@HOSTNAME@" tests="74" failures="51" errors="0" skipped="0" time="@TEST_DURATION@"> +<testsuite name="tst_Cmptest" timestamp="@TEST_START_TIME@" hostname="@HOSTNAME@" tests="78" failures="51" errors="0" skipped="0" time="@TEST_DURATION@"> <properties> <property name="QTestVersion" value="@INSERT_QT_VERSION_HERE@"/> <property name="QtVersion" value="@INSERT_QT_VERSION_HERE@"/> @@ -321,5 +321,17 @@ <failure type="fail" message="'!c' returned FALSE. (Should time out and fail)"/> </testcase> <testcase name="verifyExplicitOperatorBool" classname="tst_Cmptest" time="@TEST_DURATION@"/> + <testcase name="defaultTryVerifyTimeout(times-out)" classname="tst_Cmptest" time="@TEST_DURATION@"> + <system-out> + <![CDATA[The timeout (std::chrono::milliseconds) is deliberately too short]]> + </system-out> + </testcase> + <testcase name="defaultTryVerifyTimeout(ample-time)" classname="tst_Cmptest" time="@TEST_DURATION@"/> + <testcase name="defaultTryCompareTimeout(times-out)" classname="tst_Cmptest" time="@TEST_DURATION@"> + <system-out> + <![CDATA[The timeout (std::chrono::milliseconds) is deliberately too short]]> + </system-out> + </testcase> + <testcase name="defaultTryCompareTimeout(ample-time)" classname="tst_Cmptest" time="@TEST_DURATION@"/> <testcase name="cleanupTestCase" classname="tst_Cmptest" time="@TEST_DURATION@"/> </testsuite> diff --git a/tests/auto/testlib/selftests/expected_cmptest.lightxml b/tests/auto/testlib/selftests/expected_cmptest.lightxml index 9919dde3241..b31bc2aef7d 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.lightxml +++ b/tests/auto/testlib/selftests/expected_cmptest.lightxml @@ -486,6 +486,32 @@ <Incident type="pass" file="" line="0" /> <Duration msecs="0"/> </TestFunction> + <TestFunction name="defaultTryVerifyTimeout"> + <Incident type="xfail" file="qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="0"> + <DataTag><![CDATA[times-out]]></DataTag> + <Description><![CDATA[The timeout (std::chrono::milliseconds) is deliberately too short]]></Description> + </Incident> + <Incident type="pass" file="" line="0"> + <DataTag><![CDATA[times-out]]></DataTag> + </Incident> + <Incident type="pass" file="" line="0"> + <DataTag><![CDATA[ample-time]]></DataTag> + </Incident> + <Duration msecs="0"/> + </TestFunction> + <TestFunction name="defaultTryCompareTimeout"> + <Incident type="xfail" file="qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="0"> + <DataTag><![CDATA[times-out]]></DataTag> + <Description><![CDATA[The timeout (std::chrono::milliseconds) is deliberately too short]]></Description> + </Incident> + <Incident type="pass" file="" line="0"> + <DataTag><![CDATA[times-out]]></DataTag> + </Incident> + <Incident type="pass" file="" line="0"> + <DataTag><![CDATA[ample-time]]></DataTag> + </Incident> + <Duration msecs="0"/> + </TestFunction> <TestFunction name="cleanupTestCase"> <Incident type="pass" file="" line="0" /> <Duration msecs="0"/> diff --git a/tests/auto/testlib/selftests/expected_cmptest.tap b/tests/auto/testlib/selftests/expected_cmptest.tap index 77118713717..180567f2112 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.tap +++ b/tests/auto/testlib/selftests/expected_cmptest.tap @@ -719,8 +719,30 @@ not ok 72 - tryVerify2() line: 0 ... ok 73 - verifyExplicitOperatorBool() -ok 74 - cleanupTestCase() -1..74 -# tests 74 -# pass 23 +not ok 74 - defaultTryVerifyTimeout(times-out) # TODO The timeout (std::chrono::milliseconds) is deliberately too short + --- + extensions: + messages: + - severity: xfail + message: The timeout (std::chrono::milliseconds) is deliberately too short + at: tst_Cmptest::defaultTryVerifyTimeout() (qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp:0) + file: qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp + line: 0 + ... +ok 75 - defaultTryVerifyTimeout(ample-time) +not ok 76 - defaultTryCompareTimeout(times-out) # TODO The timeout (std::chrono::milliseconds) is deliberately too short + --- + extensions: + messages: + - severity: xfail + message: The timeout (std::chrono::milliseconds) is deliberately too short + at: tst_Cmptest::defaultTryCompareTimeout() (qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp:0) + file: qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp + line: 0 + ... +ok 77 - defaultTryCompareTimeout(ample-time) +ok 78 - cleanupTestCase() +1..78 +# tests 78 +# pass 27 # fail 51 diff --git a/tests/auto/testlib/selftests/expected_cmptest.teamcity b/tests/auto/testlib/selftests/expected_cmptest.teamcity index c48262e0376..f88e44f3ee2 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.teamcity +++ b/tests/auto/testlib/selftests/expected_cmptest.teamcity @@ -216,6 +216,16 @@ ##teamcity[testFinished name='tryVerify2()' flowId='tst_Cmptest'] ##teamcity[testStarted name='verifyExplicitOperatorBool()' flowId='tst_Cmptest'] ##teamcity[testFinished name='verifyExplicitOperatorBool()' flowId='tst_Cmptest'] +##teamcity[testStarted name='defaultTryVerifyTimeout(times-out)' flowId='tst_Cmptest'] +##teamcity[testStdOut name='defaultTryVerifyTimeout(times-out)' out='XFAIL |[Loc: qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(0)|]: The timeout (std::chrono::milliseconds) is deliberately too short' flowId='tst_Cmptest'] +##teamcity[testFinished name='defaultTryVerifyTimeout(times-out)' flowId='tst_Cmptest'] +##teamcity[testStarted name='defaultTryVerifyTimeout(ample-time)' flowId='tst_Cmptest'] +##teamcity[testFinished name='defaultTryVerifyTimeout(ample-time)' flowId='tst_Cmptest'] +##teamcity[testStarted name='defaultTryCompareTimeout(times-out)' flowId='tst_Cmptest'] +##teamcity[testStdOut name='defaultTryCompareTimeout(times-out)' out='XFAIL |[Loc: qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(0)|]: The timeout (std::chrono::milliseconds) is deliberately too short' flowId='tst_Cmptest'] +##teamcity[testFinished name='defaultTryCompareTimeout(times-out)' flowId='tst_Cmptest'] +##teamcity[testStarted name='defaultTryCompareTimeout(ample-time)' flowId='tst_Cmptest'] +##teamcity[testFinished name='defaultTryCompareTimeout(ample-time)' flowId='tst_Cmptest'] ##teamcity[testStarted name='cleanupTestCase()' flowId='tst_Cmptest'] ##teamcity[testFinished name='cleanupTestCase()' flowId='tst_Cmptest'] ##teamcity[testSuiteFinished name='tst_Cmptest' flowId='tst_Cmptest'] diff --git a/tests/auto/testlib/selftests/expected_cmptest.txt b/tests/auto/testlib/selftests/expected_cmptest.txt index efb305654f4..4c4b340a5ca 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.txt +++ b/tests/auto/testlib/selftests/expected_cmptest.txt @@ -252,6 +252,14 @@ FAIL! : tst_Cmptest::tryVerify() '!c' returned FALSE. () FAIL! : tst_Cmptest::tryVerify2() '!c' returned FALSE. (Should time out and fail) Loc: [qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(0)] PASS : tst_Cmptest::verifyExplicitOperatorBool() +XFAIL : tst_Cmptest::defaultTryVerifyTimeout(times-out) The timeout (std::chrono::milliseconds) is deliberately too short + Loc: [qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(0)] +PASS : tst_Cmptest::defaultTryVerifyTimeout(times-out) +PASS : tst_Cmptest::defaultTryVerifyTimeout(ample-time) +XFAIL : tst_Cmptest::defaultTryCompareTimeout(times-out) The timeout (std::chrono::milliseconds) is deliberately too short + Loc: [qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(0)] +PASS : tst_Cmptest::defaultTryCompareTimeout(times-out) +PASS : tst_Cmptest::defaultTryCompareTimeout(ample-time) PASS : tst_Cmptest::cleanupTestCase() -Totals: 23 passed, 51 failed, 0 skipped, 0 blacklisted, 0ms +Totals: 27 passed, 51 failed, 0 skipped, 0 blacklisted, 0ms ********* Finished testing of tst_Cmptest ********* diff --git a/tests/auto/testlib/selftests/expected_cmptest.xml b/tests/auto/testlib/selftests/expected_cmptest.xml index f6ed03b0e9f..5ec93c5ce7e 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.xml +++ b/tests/auto/testlib/selftests/expected_cmptest.xml @@ -488,6 +488,32 @@ <Incident type="pass" file="" line="0" /> <Duration msecs="0"/> </TestFunction> + <TestFunction name="defaultTryVerifyTimeout"> + <Incident type="xfail" file="qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="0"> + <DataTag><![CDATA[times-out]]></DataTag> + <Description><![CDATA[The timeout (std::chrono::milliseconds) is deliberately too short]]></Description> + </Incident> + <Incident type="pass" file="" line="0"> + <DataTag><![CDATA[times-out]]></DataTag> + </Incident> + <Incident type="pass" file="" line="0"> + <DataTag><![CDATA[ample-time]]></DataTag> + </Incident> + <Duration msecs="0"/> + </TestFunction> + <TestFunction name="defaultTryCompareTimeout"> + <Incident type="xfail" file="qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="0"> + <DataTag><![CDATA[times-out]]></DataTag> + <Description><![CDATA[The timeout (std::chrono::milliseconds) is deliberately too short]]></Description> + </Incident> + <Incident type="pass" file="" line="0"> + <DataTag><![CDATA[times-out]]></DataTag> + </Incident> + <Incident type="pass" file="" line="0"> + <DataTag><![CDATA[ample-time]]></DataTag> + </Incident> + <Duration msecs="0"/> + </TestFunction> <TestFunction name="cleanupTestCase"> <Incident type="pass" file="" line="0" /> <Duration msecs="0"/> diff --git a/tests/manual/wasm/eventloop/suspendresumecontrol_auto/main.cpp b/tests/manual/wasm/eventloop/suspendresumecontrol_auto/main.cpp index 59f1f00cc59..1fd6e0a0c4f 100644 --- a/tests/manual/wasm/eventloop/suspendresumecontrol_auto/main.cpp +++ b/tests/manual/wasm/eventloop/suspendresumecontrol_auto/main.cpp @@ -7,7 +7,7 @@ using namespace emscripten; -const int timerTimeout = 10; +const std::chrono::milliseconds timerTimeout{10}; // Test QWasmSuspendResumeControl suspend/resume and event processing, // via QWasmTimer native timer events. |