libstdc++: Adjust expected locale-dependent date formats in tests

The std/time/year_month_day/io.cc test assumes that %x in the fr_FR
locale is %d/%m/%Y but on FreeBSD it is %d.%m.%Y instead. Make the test
PASS for either format.

Similarly, 27_io/manipulators/extended/get_time/char/2.cc expects that
%a in the de_DE locale is "Di" but on FreeBSD it's "Di." with a trailing
period. Adjust the input string to be "1971 Di." instead of "Di 1971"
and that way if %a doesn't expect the trailing '.' it simply won't
extract it from the stream.

This fixes:
FAIL: std/time/year_month_day/io.cc  -std=gnu++20 execution test
FAIL: 27_io/manipulators/extended/get_time/char/2.cc  -std=gnu++17 execution test

libstdc++-v3/ChangeLog:

	* testsuite/27_io/manipulators/extended/get_time/char/2.cc:
	Adjust input string so that it matches %a with or without a
	trailing period.
	* testsuite/std/time/year_month_day/io.cc: Adjust expected
	format for %x in the fr_FR locale.
This commit is contained in:
Jonathan Wakely 2024-04-10 13:24:51 +01:00
parent 9586d6248e
commit 4decc1062f
No known key found for this signature in database
2 changed files with 4 additions and 4 deletions

View file

@ -35,9 +35,9 @@ void test01()
VERIFY( loc_de != loc_c );
istringstream iss;
iss.imbue(loc_de);
iss.str("Di 1971");
tm time1;
iss >> get_time(&time1, "%a %Y");
iss.str("1971 Di."); // %a is "Di" on some targets, "Di." on others.
tm time1{};
iss >> get_time(&time1, "%Y %a");
VERIFY(time1.tm_wday == 2);
VERIFY(time1.tm_year == 71);
}

View file

@ -84,7 +84,7 @@ test_format()
s = std::format(loc_fr, "{:%x}", 2022y/December/19);
VERIFY( s == "12/19/22" );
s = std::format(loc_fr, "{:L%x}", 2022y/December/19);
VERIFY( s == "19/12/2022" );
VERIFY( s == "19/12/2022" || s == "19.12.2022" ); // depends on locale defs
s = std::format(loc_fr, "{}", 2022y/December/19);
VERIFY( s == "2022-12-19" );
s = std::format(loc_fr, "{:L%F}", 2022y/December/19);