summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2021-08-13 12:54:38 +0200
committerBastien Nocera <hadess@hadess.net>2021-08-13 13:30:48 +0200
commit83a36a29e75b819281a8f114232d711b25572add (patch)
treeb3613a014949ac0ba8610eabe659875f0b8fe5e7
parent4b8e6ccd15a4270f19b35ad47a8dde6f0723ed4a (diff)
downloadlibgudev-83a36a29e75b819281a8f114232d711b25572add.tar.gz
tests: Add test for "," decimal separator locales
-rw-r--r--tests/meson.build4
-rw-r--r--tests/test-double.c63
2 files changed, 67 insertions, 0 deletions
diff --git a/tests/meson.build b/tests/meson.build
index 6995801..55fd09d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -7,6 +7,10 @@ libgudev_tests = {
'dependencies': [gio_dep, umockdev_dep],
'environment': ['LD_PRELOAD=libumockdev-preload.so.0'],
},
+ 'test-double': {
+ 'dependencies': [gio_dep, umockdev_dep],
+ 'environment': ['LD_PRELOAD=libumockdev-preload.so.0', 'LC_NUMERIC=fr_FR.UTF-8'],
+ },
}
libgudev_tests_deps = [
diff --git a/tests/test-double.c b/tests/test-double.c
new file mode 100644
index 0000000..0092d8b
--- /dev/null
+++ b/tests/test-double.c
@@ -0,0 +1,63 @@
+/*
+ * SPDX-FileCopyrightText: 2021 Red Hat Inc.
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ *
+ * Author: Bastien Nocera <hadess@hadess.net>
+ */
+
+#include <locale.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/wait.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include <umockdev.h>
+#include <langinfo.h>
+
+#include <gudev/gudev.h>
+
+static void
+test_double (void)
+{
+ /* create test bed */
+ UMockdevTestbed *testbed = umockdev_testbed_new ();
+
+ /* Relies on a test bed having been set up */
+ g_assert (umockdev_in_mock_environment ());
+
+ g_assert_cmpstr (nl_langinfo(RADIXCHAR), ==, ",");
+
+ umockdev_testbed_add_device (testbed, "platform", "dev1", NULL,
+ "in_accel_scale", "0.0000098", NULL,
+ "ID_MODEL", "KoolGadget", "SCALE", "0.0000098", NULL);
+
+ /* Check the number of items in GUdevClient */
+ const gchar *subsystems[] = { "platform", NULL};
+ GUdevClient *client = g_udev_client_new (subsystems);
+ GUdevDevice *dev;
+ g_autofree char *path = NULL;
+ gdouble scale;
+
+ GList *devices = g_udev_client_query_by_subsystem (client, NULL);
+ g_assert_cmpint (g_list_length (devices), ==, 1);
+ dev = devices->data;
+
+ scale = g_udev_device_get_sysfs_attr_as_double (dev, "in_accel_scale");
+ g_assert_cmpfloat (scale, ==, 0.0000098);
+
+ scale = g_udev_device_get_property_as_double (dev, "SCALE");
+ g_assert_cmpfloat (scale, ==, 0.0000098);
+
+ g_list_free_full (devices, g_object_unref);
+}
+
+int main(int argc, char **argv)
+{
+ setlocale (LC_ALL, NULL);
+ setlocale (LC_NUMERIC, "fr_FR.UTF-8");
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/gudev/double", test_double);
+
+ return g_test_run ();
+}