mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-10-03 23:38:39 +00:00
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:
+10
-9
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user