On Thu, 12 Jun 2025, 16:12 Tomasz Kaminski, <tkami...@redhat.com> wrote:

>
>
> 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?
>

Yes, ok for trunk with that change, thanks.



>>
>>> +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
>>
>

Reply via email to