| // { dg-do run { target c++20 } } | |
| #include <chrono> | |
| #include <testsuite_hooks.h> | |
| using namespace std::chrono; | |
| #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S) | |
| #define WIDEN(S) WIDEN_(_CharT, S) | |
| template<typename _CharT, typename ChronoType> | |
| void | |
| test(const ChronoType& ct) | |
| { | |
| std::basic_string<_CharT> res; | |
| res = std::format(WIDEN("{:%% %t %n more text}"), ct); | |
| VERIFY( res == WIDEN("% \t \n more text") ); | |
| res = std::format(WIDEN("{:7%% %t %n}"), ct); | |
| VERIFY( res == WIDEN("% \t \n ") ); | |
| res = std::format(WIDEN("{:>6%% %t %n}"), ct); | |
| VERIFY( res == WIDEN(" % \t \n") ); | |
| res = std::format(WIDEN("{:+>7%% %t %n}"), ct); | |
| VERIFY( res == WIDEN("++% \t \n") ); | |
| res = std::format(WIDEN("{:=^7%% %t %n}"), ct); | |
| VERIFY( res == WIDEN("=% \t \n=") ); | |
| } | |
| template<typename CharT> | |
| void | |
| test_all() | |
| { | |
| test<CharT>(20s); | |
| test<CharT>(10d); | |
| test<CharT>(Monday); | |
| test<CharT>(2020y/January/8); | |
| test<CharT>(local_days(2020y/January/8)); | |
| test<CharT>(sys_days(2020y/January/8) + 13h + 10min + 5s); | |
| #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI | |
| test<CharT>(sys_info()); | |
| test<CharT>(local_info()); | |
| #endif | |
| } | |
| int main() | |
| { | |
| test_all<char>(); | |
| #ifdef _GLIBCXX_USE_WCHAR_T | |
| test_all<wchar_t>(); | |
| #endif // _GLIBCXX_USE_WCHAR_T | |
| } |