[glib/param-speedups2: 1/2] gparamspec: Test individual paramspec is_valid() implementations
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/param-speedups2: 1/2] gparamspec: Test individual paramspec is_valid() implementations
- Date: Wed, 25 May 2022 13:25:32 +0000 (UTC)
commit b0d15068c461d58de0a50f0c6a89e95a444c87bc
Author: Matthias Clasen <mclasen redhat com>
Date: Mon May 23 08:16:30 2022 -0400
gparamspec: Test individual paramspec is_valid() implementations
Test many of the paramspec implementations
at least a little bit.
gobject/tests/param.c | 268 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 268 insertions(+)
---
diff --git a/gobject/tests/param.c b/gobject/tests/param.c
index 08d9f97671..787c2d8f0d 100644
--- a/gobject/tests/param.c
+++ b/gobject/tests/param.c
@@ -90,6 +90,263 @@ test_param_spec_char (void)
g_param_spec_unref (pspec);
}
+static void
+test_param_spec_uchar (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_uchar ("char", NULL, NULL,
+ 20, 40, 30, G_PARAM_READWRITE);
+
+ g_assert_cmpstr (g_param_spec_get_name (pspec), ==, "char");
+
+ g_value_init (&value, G_TYPE_UCHAR);
+
+ g_value_set_uchar (&value, 0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_uchar (&value), ==, 20);
+
+ g_value_set_uchar (&value, 20);
+ g_assert_true (g_param_value_is_valid (pspec, &value));
+ g_assert_false (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_uchar (&value), ==, 20);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_int (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_int ("int", NULL, NULL,
+ 20, 40, 30, G_PARAM_READWRITE);
+
+ g_param_value_set_default (pspec, &value);
+ g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_INT);
+ g_assert_cmpint (g_value_get_int (&value), ==, 30);
+ g_assert_true (g_param_value_defaults (pspec, &value));
+
+ g_value_set_int (&value, 0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_int (&value), ==, 20);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_uint (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_uint ("uint", NULL, NULL,
+ 20, 40, 30, G_PARAM_READWRITE);
+
+ g_param_value_set_default (pspec, &value);
+ g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_UINT);
+ g_assert_cmpint (g_value_get_uint (&value), ==, 30);
+ g_assert_true (g_param_value_defaults (pspec, &value));
+
+ g_value_set_uint (&value, 0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_uint (&value), ==, 20);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_long (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_long ("long", NULL, NULL,
+ 20, 40, 30, G_PARAM_READWRITE);
+
+ g_param_value_set_default (pspec, &value);
+ g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_LONG);
+ g_assert_cmpint (g_value_get_long (&value), ==, 30);
+ g_assert_true (g_param_value_defaults (pspec, &value));
+
+ g_value_set_long (&value, 0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_long (&value), ==, 20);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_ulong (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_ulong ("ulong", NULL, NULL,
+ 20, 40, 30, G_PARAM_READWRITE);
+
+ g_param_value_set_default (pspec, &value);
+ g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_ULONG);
+ g_assert_cmpint (g_value_get_ulong (&value), ==, 30);
+ g_assert_true (g_param_value_defaults (pspec, &value));
+
+ g_value_set_ulong (&value, 0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_ulong (&value), ==, 20);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_int64 (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_int64 ("int64", NULL, NULL,
+ 20, 40, 30, G_PARAM_READWRITE);
+
+ g_param_value_set_default (pspec, &value);
+ g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_INT64);
+ g_assert_cmpint (g_value_get_int64 (&value), ==, 30);
+ g_assert_true (g_param_value_defaults (pspec, &value));
+
+ g_value_set_int64 (&value, 0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_int64 (&value), ==, 20);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_uint64 (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_uint64 ("uint64", NULL, NULL,
+ 20, 40, 30, G_PARAM_READWRITE);
+
+ g_param_value_set_default (pspec, &value);
+ g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_UINT64);
+ g_assert_cmpint (g_value_get_uint64 (&value), ==, 30);
+ g_assert_true (g_param_value_defaults (pspec, &value));
+
+ g_value_set_uint64 (&value, 0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_uint64 (&value), ==, 20);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_float (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_float ("float", NULL, NULL,
+ 20.0, 40.0, 30.0, G_PARAM_READWRITE);
+
+ g_param_value_set_default (pspec, &value);
+ g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_FLOAT);
+ g_assert_cmpfloat (g_value_get_float (&value), ==, 30.0);
+ g_assert_true (g_param_value_defaults (pspec, &value));
+
+ g_value_set_float (&value, 0.0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_float (&value), ==, 20.0);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_double (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_double ("double", NULL, NULL,
+ 20.0, 40.0, 30.0, G_PARAM_READWRITE);
+
+ g_param_value_set_default (pspec, &value);
+ g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_DOUBLE);
+ g_assert_cmpfloat (g_value_get_double (&value), ==, 30.0);
+ g_assert_true (g_param_value_defaults (pspec, &value));
+
+ g_value_set_double (&value, 0.0);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_double (&value), ==, 20.0);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_unichar (void)
+{
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ pspec = g_param_spec_unichar ("unichar", NULL, NULL,
+ 0x1F4A9, G_PARAM_READWRITE);
+
+ g_assert_cmpstr (g_param_spec_get_name (pspec), ==, "unichar");
+
+ g_value_init (&value, G_TYPE_UINT);
+
+ /* Unicode codepoints can’t be 0x110000 or above, as that’s not representable
+ * in UTF-16. */
+ g_value_set_uint (&value, 0x110000);
+ g_assert_false (g_param_value_is_valid (pspec, &value));
+ g_assert_true (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_uint (&value), ==, 0);
+
+ g_value_set_uint (&value, 0x20);
+ g_assert_true (g_param_value_is_valid (pspec, &value));
+ g_assert_false (g_param_value_validate (pspec, &value));
+ g_assert_cmpint (g_value_get_uint (&value), ==, 0x20);
+
+ g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_param (void)
+{
+ GParamSpec *wrapped_pspec_uint;
+ GParamSpec *pspec;
+ GValue value = G_VALUE_INIT;
+
+ wrapped_pspec_uint = g_param_spec_uint ("uint", NULL, NULL,
+ 0, G_MAXUINT, 5, G_PARAM_READWRITE);
+
+ pspec = g_param_spec_param ("param", NULL, NULL,
+ G_TYPE_PARAM_UINT, G_PARAM_READWRITE);
+
+ g_assert_cmpstr (g_param_spec_get_name (pspec), ==, "param");
+
+ g_value_init (&value, G_TYPE_PARAM_UINT);
+
+ g_value_set_param (&value, wrapped_pspec_uint);
+ g_assert_true (g_param_value_is_valid (pspec, &value));
+ g_assert_false (g_param_value_validate (pspec, &value));
+ g_assert_true (g_value_get_param (&value) == wrapped_pspec_uint);
+
+ g_value_unset (&value);
+ g_param_spec_unref (pspec);
+ g_param_spec_unref (wrapped_pspec_uint);
+}
+
static void
test_param_spec_string (void)
{
@@ -1383,6 +1640,17 @@ main (int argc, char *argv[])
g_test_add_func ("/param/default", test_param_default);
g_test_add_func ("/param/is-valid-name", test_param_is_valid_name);
g_test_add_func ("/paramspec/char", test_param_spec_char);
+ g_test_add_func ("/paramspec/uchar", test_param_spec_uchar);
+ g_test_add_func ("/paramspec/int", test_param_spec_int);
+ g_test_add_func ("/paramspec/uint", test_param_spec_uint);
+ g_test_add_func ("/paramspec/long", test_param_spec_long);
+ g_test_add_func ("/paramspec/ulong", test_param_spec_ulong);
+ g_test_add_func ("/paramspec/int64", test_param_spec_int64);
+ g_test_add_func ("/paramspec/uint64", test_param_spec_uint64);
+ g_test_add_func ("/paramspec/float", test_param_spec_float);
+ g_test_add_func ("/paramspec/double", test_param_spec_double);
+ g_test_add_func ("/paramspec/unichar", test_param_spec_unichar);
+ g_test_add_func ("/paramspec/param", test_param_spec_param);
g_test_add_func ("/paramspec/string", test_param_spec_string);
g_test_add_func ("/paramspec/override", test_param_spec_override);
g_test_add_func ("/paramspec/gtype", test_param_spec_gtype);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]