1 #include <glib-object.h>
3 static const GEnumValue my_enum_values
[] =
5 { 1, "the first value", "one" },
6 { 2, "the second value", "two" },
7 { 3, "the third value", "three" },
12 test_enum_basic (void)
17 GValue value
= G_VALUE_INIT
;
20 type
= g_enum_register_static ("MyEnum", my_enum_values
);
22 g_value_init (&value
, type
);
23 g_assert (G_VALUE_HOLDS_ENUM (&value
));
25 g_value_set_enum (&value
, 2);
26 g_assert_cmpint (g_value_get_enum (&value
), ==, 2);
27 g_value_unset (&value
);
29 class = g_type_class_ref (type
);
31 g_assert_cmpint (class->minimum
, ==, 1);
32 g_assert_cmpint (class->maximum
, ==, 3);
33 g_assert_cmpint (class->n_values
, ==, 3);
35 val
= g_enum_get_value (class, 2);
36 g_assert (val
!= NULL
);
37 g_assert_cmpstr (val
->value_name
, ==, "the second value");
38 val
= g_enum_get_value (class, 15);
39 g_assert (val
== NULL
);
41 val
= g_enum_get_value_by_name (class, "the third value");
42 g_assert (val
!= NULL
);
43 g_assert_cmpint (val
->value
, ==, 3);
44 val
= g_enum_get_value_by_name (class, "the color purple");
45 g_assert (val
== NULL
);
47 val
= g_enum_get_value_by_nick (class, "one");
48 g_assert (val
!= NULL
);
49 g_assert_cmpint (val
->value
, ==, 1);
50 val
= g_enum_get_value_by_nick (class, "purple");
51 g_assert (val
== NULL
);
53 to_string
= g_enum_to_string (type
, 2);
54 g_assert_cmpstr (to_string
, ==, "the second value");
57 to_string
= g_enum_to_string (type
, 15);
58 g_assert_cmpstr (to_string
, ==, "15");
61 g_type_class_unref (class);
64 static const GFlagsValue my_flag_values
[] =
66 { 0, "no flags", "none" },
67 { 1, "the first flag", "one" },
68 { 2, "the second flag", "two" },
69 { 8, "the third flag", "three" },
73 static const GFlagsValue no_default_flag_values
[] =
75 { 1, "the first flag", "one" },
80 test_flags_transform_to_string (const GValue
*value
)
82 GValue tmp
= G_VALUE_INIT
;
84 g_value_init (&tmp
, G_TYPE_STRING
);
85 g_value_transform (value
, &tmp
);
90 test_flags_basic (void)
92 GType type
, no_default_type
;
95 GValue value
= G_VALUE_INIT
;
98 type
= g_flags_register_static ("MyFlags", my_flag_values
);
99 no_default_type
= g_flags_register_static ("NoDefaultFlags",
100 no_default_flag_values
);
102 g_value_init (&value
, type
);
103 g_assert (G_VALUE_HOLDS_FLAGS (&value
));
105 g_value_set_flags (&value
, 2|8);
106 g_assert_cmpint (g_value_get_flags (&value
), ==, 2|8);
108 class = g_type_class_ref (type
);
110 g_assert_cmpint (class->mask
, ==, 1|2|8);
111 g_assert_cmpint (class->n_values
, ==, 4);
113 val
= g_flags_get_first_value (class, 2|8);
114 g_assert (val
!= NULL
);
115 g_assert_cmpstr (val
->value_name
, ==, "the second flag");
116 val
= g_flags_get_first_value (class, 16);
117 g_assert (val
== NULL
);
119 val
= g_flags_get_value_by_name (class, "the third flag");
120 g_assert (val
!= NULL
);
121 g_assert_cmpint (val
->value
, ==, 8);
122 val
= g_flags_get_value_by_name (class, "the color purple");
123 g_assert (val
== NULL
);
125 val
= g_flags_get_value_by_nick (class, "one");
126 g_assert (val
!= NULL
);
127 g_assert_cmpint (val
->value
, ==, 1);
128 val
= g_flags_get_value_by_nick (class, "purple");
129 g_assert (val
== NULL
);
131 test_flags_transform_to_string (&value
);
132 g_value_unset (&value
);
134 to_string
= g_flags_to_string (type
, 1|8);
135 g_assert_cmpstr (to_string
, ==, "the first flag | the third flag");
138 to_string
= g_flags_to_string (type
, 0);
139 g_assert_cmpstr (to_string
, ==, "no flags");
142 to_string
= g_flags_to_string (type
, 16);
143 g_assert_cmpstr (to_string
, ==, "0x10");
146 to_string
= g_flags_to_string (type
, 1|16);
147 g_assert_cmpstr (to_string
, ==, "the first flag | 0x10");
150 to_string
= g_flags_to_string (no_default_type
, 0);
151 g_assert_cmpstr (to_string
, ==, "0x0");
154 to_string
= g_flags_to_string (no_default_type
, 16);
155 g_assert_cmpstr (to_string
, ==, "0x10");
158 g_type_class_unref (class);
162 main (int argc
, char *argv
[])
164 g_test_init (&argc
, &argv
, NULL
);
166 g_test_add_func ("/enum/basic", test_enum_basic
);
167 g_test_add_func ("/flags/basic", test_flags_basic
);
169 return g_test_run ();