diff --git a/tests/auto/corelib/text/qchar/tst_qchar.cpp b/tests/auto/corelib/text/qchar/tst_qchar.cpp index fae507f4c6d..7f8ec724a9e 100644 --- a/tests/auto/corelib/text/qchar/tst_qchar.cpp +++ b/tests/auto/corelib/text/qchar/tst_qchar.cpp @@ -6,6 +6,59 @@ #include #include +#include + +template +constexpr inline bool implicitly = std::is_convertible_v; +template +constexpr inline bool explicitly = std::is_constructible_v; +template +constexpr inline bool disabled = !explicitly; + +// +// Conversion from character types +// +static_assert(implicitly); +#ifdef __cpp_char8_t +static_assert(disabled); // ### should this be enabled? +#endif +static_assert(implicitly); +#ifdef Q_OS_WIN +static_assert(implicitly); +#else +static_assert(explicitly); +#endif +static_assert(explicitly); + +// +// Conversion from others +// +static_assert(explicitly); +static_assert(implicitly); +static_assert(implicitly); +static_assert(explicitly); +static_assert(explicitly); + +// +// Disabled conversions (from Qt 6.9) +// +static_assert(disabled); +static_assert(disabled); +static_assert(disabled); +static_assert(disabled); +static_assert(disabled); +static_assert(disabled); +static_assert(disabled); +static_assert(disabled); +enum E1 {}; +static_assert(disabled); +enum class E2 {}; +static_assert(disabled); +enum E1C : char16_t {}; +static_assert(disabled); +enum class E2C : char16_t {}; +static_assert(disabled); + class tst_QChar : public QObject { Q_OBJECT