Hi mclow.lists, jroelofs,
The time_put test doesn't seem to work on Linux and CloudABI. For Linux we
already have an XFAIL. Closer inspection seems to reveal that this test does
not pass for a couple of reasons.
First of all, the tm_yday field is set to an invalid value. The strftime()
function doesn't behave consistently across platforms in case the values in the
tm structure are incoherent. Fix up this field to have the value 121, which
corresponds with tm_mday and tm_year. This of course affects the output of
time_put for some modifiers, so update the tests accordingly.
Second, some of the tests actually use modifiers that are only present on BSD
derived systems. They are not part of the C standard/POSIX. Simply remove them.
Finally, some of the tests actually use invalid modifiers, causing a malformed
format string to be passed to strftime(). Remove these tests as well.
REPOSITORY
rL LLVM
http://reviews.llvm.org/D8349
Files:
test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
Index: test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp
===================================================================
--- test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp
+++ test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp
@@ -14,9 +14,6 @@
// iter_type put(iter_type s, ios_base& str, char_type fill, const tm* t,
// char format, char modifier = 0) const;
-// TODO: investigation needed
-// XFAIL: linux-gnu
-
#include <locale>
#include <cassert>
#include "test_iterators.h"
@@ -36,15 +33,15 @@
const my_facet f(1);
char str[200];
output_iterator<char*> iter;
- tm t = {0};
+ tm t = {};
t.tm_sec = 6;
t.tm_min = 3;
t.tm_hour = 13;
t.tm_mday = 2;
t.tm_mon = 4;
t.tm_year = 109;
t.tm_wday = 6;
- t.tm_yday = -1;
+ t.tm_yday = 121;
t.tm_isdst = 1;
std::ios ios(0);
{
@@ -160,12 +157,12 @@
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'U', 'O');
std::string ex(str, iter.base());
- assert(ex == "00");
+ assert(ex == "17");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'V', 'O');
std::string ex(str, iter.base());
- assert(ex == "52");
+ assert(ex == "18");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'w', 'O');
@@ -175,19 +172,14 @@
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'W', 'O');
std::string ex(str, iter.base());
- assert(ex == "00");
+ assert(ex == "17");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'y', 'O');
std::string ex(str, iter.base());
assert(ex == "09");
}
{
- iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'B', 'O');
- std::string ex(str, iter.base());
- assert(ex == "May");
- }
- {
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'e');
std::string ex(str, iter.base());
assert(ex == " 2");
@@ -200,12 +192,12 @@
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'G');
std::string ex(str, iter.base());
- assert(ex == "2008");
+ assert(ex == "2009");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'g');
std::string ex(str, iter.base());
- assert(ex == "08");
+ assert(ex == "09");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'H');
@@ -225,17 +217,7 @@
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'j');
std::string ex(str, iter.base());
- assert(ex == "000");
- }
- {
- iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'k');
- std::string ex(str, iter.base());
- assert(ex == "13");
- }
- {
- iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'l');
- std::string ex(str, iter.base());
- assert(ex == " 1");
+ assert(ex == "122");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'M');
@@ -273,11 +255,6 @@
assert(ex == "06");
}
{
- iter = f.put(output_iterator<char*>(str), ios, '*', &t, 's');
- std::string ex(str, iter.base());
-// assert(ex == "1241283786"); depends on time zone
- }
- {
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'T');
std::string ex(str, iter.base());
assert(ex == "13:03:06");
@@ -290,7 +267,7 @@
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'U');
std::string ex(str, iter.base());
- assert(ex == "00");
+ assert(ex == "17");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'u');
@@ -300,17 +277,12 @@
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'V');
std::string ex(str, iter.base());
- assert(ex == "52");
- }
- {
- iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'v');
- std::string ex(str, iter.base());
- assert(ex == " 2-May-2009");
+ assert(ex == "18");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'W');
std::string ex(str, iter.base());
- assert(ex == "00");
+ assert(ex == "17");
}
{
iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'w');
@@ -357,14 +329,4 @@
std::string ex(str, iter.base());
assert(ex == "%");
}
- {
- iter = f.put(output_iterator<char*>(str), ios, '*', &t, '%', 'J');
- std::string ex(str, iter.base());
- assert(ex == "J%");
- }
- {
- iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'J');
- std::string ex(str, iter.base());
- assert(ex == "J");
- }
}
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits