On Thu, Jun 12, 2025 at 4:48 PM Daniel Krügler <daniel.krueg...@gmail.com> wrote:
> Am Do., 12. Juni 2025 um 16:40 Uhr schrieb Tomasz Kamiński < > tkami...@redhat.com>: > >> libstdc++-v3/ChangeLog: >> >> * testsuite/std/time/format/whitespace.cc: New test. >> --- >> Testing on x86_64-linux. OK for trunk when test passes. >> >> .../testsuite/std/time/format/whitespace.cc | 54 +++++++++++++++++++ >> 1 file changed, 54 insertions(+) >> create mode 100644 libstdc++-v3/testsuite/std/time/format/whitespace.cc >> >> diff --git a/libstdc++-v3/testsuite/std/time/format/whitespace.cc >> b/libstdc++-v3/testsuite/std/time/format/whitespace.cc >> new file mode 100644 >> index 00000000000..e211bd51dc1 >> --- /dev/null >> +++ b/libstdc++-v3/testsuite/std/time/format/whitespace.cc >> @@ -0,0 +1,54 @@ >> +// { 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) >> >> > I don't think that you really need to use the uglified _CharT here... > > >> +template<typename _CharT, typename ChronoType> >> > > .. and here. It is only needed within the standard library headers, right? > Yes, that's true. I copied this marco from the _GLIBCXX_WIDEN from std/format. I use this definition like that in multiple files, so I think I would prefer to clean them all at once. Jonathan, is changing _CharT in WIDEN and other places for files that use them pre-approved? > > >> +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); >> + test<CharT>(sys_info()); >> + test<CharT>(local_info()); >> +} >> + >> +int main() >> +{ >> + test_all<char>(); >> + >> +#ifdef _GLIBCXX_USE_WCHAR_T >> + test_all<wchar_t>(); >> +#endif // _GLIBCXX_USE_WCHAR_T >> +} >> -- >> 2.49.0 >> > > - Daniel >