test: fix strtod test for real

The "0,5" syntax was actually right. The real problem is, the test should
only run if the local system has the de_DE.UTF-8 locale. Therefore, skip
the tests if setlocale() fails. This is kinda ugly, as it is done
silently, but we cannot skip partial tests with the current
infrastructure. Should be fine this way.
This commit is contained in:
David Herrmann
2014-08-15 13:25:15 +02:00
parent db73295acc
commit 926446f4aa
+10 -9
View File
@@ -202,20 +202,21 @@ static void test_safe_atod(void) {
assert_se(*e == ',');
/* Check if this really is locale independent */
setlocale(LC_NUMERIC, "de_DE.utf8");
if (setlocale(LC_NUMERIC, "de_DE.utf8")) {
r = safe_atod("0.2244", &d);
assert_se(r == 0);
assert_se(fabs(d - 0.2244) < 0.000001);
r = safe_atod("0.2244", &d);
assert_se(r == 0);
assert_se(fabs(d - 0.2244) < 0.000001);
r = safe_atod("0,5", &d);
assert_se(r == -EINVAL);
r = safe_atod("0,5", &d);
assert_se(r == -EINVAL);
errno = 0;
assert_se(fabs(strtod("0.5", &e) - 0.5) < 0.00001);
errno = 0;
assert_se(fabs(strtod("0,5", &e) - 0.5) < 0.00001);
}
/* And check again, reset */
setlocale(LC_NUMERIC, "C");
assert_se(setlocale(LC_NUMERIC, "C"));
r = safe_atod("0.2244", &d);
assert_se(r == 0);