mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 11:26:16 +01:00
Test the newly added G_DEFINE macros for enumeration types
This commit is contained in:
parent
9a4a10fbc8
commit
2a9ef1e0b4
@ -158,13 +158,86 @@ test_flags_basic (void)
|
|||||||
g_type_class_unref (class);
|
g_type_class_unref (class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
TEST_ENUM_FIRST_VALUE,
|
||||||
|
TEST_ENUM_SECOND_VALUE,
|
||||||
|
TEST_ENUM_THIRD_VALUE
|
||||||
|
} TestEnum;
|
||||||
|
|
||||||
|
GType test_enum_get_type (void);
|
||||||
|
|
||||||
|
G_DEFINE_ENUM_TYPE (TestEnum, test_enum,
|
||||||
|
G_DEFINE_ENUM_VALUE (TEST_ENUM_FIRST_VALUE, "first-value")
|
||||||
|
G_DEFINE_ENUM_VALUE (TEST_ENUM_SECOND_VALUE, "second-value")
|
||||||
|
G_DEFINE_ENUM_VALUE (TEST_ENUM_THIRD_VALUE, "third-value"))
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_enum_define_type (void)
|
||||||
|
{
|
||||||
|
GEnumClass *class = g_type_class_ref (test_enum_get_type ());
|
||||||
|
GEnumValue *val;
|
||||||
|
|
||||||
|
g_assert_cmpint (class->minimum, ==, 0);
|
||||||
|
g_assert_cmpint (class->maximum, ==, 2);
|
||||||
|
g_assert_cmpint (class->n_values, ==, 3);
|
||||||
|
|
||||||
|
val = g_enum_get_value (class, 2);
|
||||||
|
g_assert (val != NULL);
|
||||||
|
g_assert_cmpstr (val->value_nick, ==, "third-value");
|
||||||
|
val = g_enum_get_value (class, 15);
|
||||||
|
g_assert (val == NULL);
|
||||||
|
|
||||||
|
g_type_class_unref (class);
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
TEST_FLAGS_DEFAULT = 0,
|
||||||
|
TEST_FLAGS_FIRST = 1 << 0,
|
||||||
|
TEST_FLAGS_SECOND = 1 << 1,
|
||||||
|
TEST_FLAGS_THIRD = 1 << 2
|
||||||
|
} TestFlags;
|
||||||
|
|
||||||
|
GType test_flags_get_type (void);
|
||||||
|
|
||||||
|
G_DEFINE_FLAGS_TYPE (TestFlags, test_flags,
|
||||||
|
G_DEFINE_ENUM_VALUE (TEST_FLAGS_DEFAULT, "default")
|
||||||
|
G_DEFINE_ENUM_VALUE (TEST_FLAGS_FIRST, "first")
|
||||||
|
G_DEFINE_ENUM_VALUE (TEST_FLAGS_SECOND, "second")
|
||||||
|
G_DEFINE_ENUM_VALUE (TEST_FLAGS_THIRD, "third"))
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_flags_define_type (void)
|
||||||
|
{
|
||||||
|
GFlagsClass *class = g_type_class_ref (test_flags_get_type ());
|
||||||
|
GFlagsValue *val;
|
||||||
|
char *to_string;
|
||||||
|
|
||||||
|
g_assert_cmpint (class->mask, ==, 1 | 2 | 4);
|
||||||
|
g_assert_cmpint (class->n_values, ==, 4);
|
||||||
|
|
||||||
|
val = g_flags_get_first_value (class, 2|4);
|
||||||
|
g_assert (val != NULL);
|
||||||
|
g_assert_cmpstr (val->value_nick, ==, "second");
|
||||||
|
|
||||||
|
val = g_flags_get_first_value (class, 8);
|
||||||
|
g_assert (val == NULL);
|
||||||
|
|
||||||
|
to_string = g_flags_to_string (test_flags_get_type (), 0);
|
||||||
|
g_assert_cmpstr (to_string, ==, "TEST_FLAGS_DEFAULT");
|
||||||
|
g_free (to_string);
|
||||||
|
|
||||||
|
g_type_class_unref (class);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
g_test_init (&argc, &argv, NULL);
|
g_test_init (&argc, &argv, NULL);
|
||||||
|
|
||||||
g_test_add_func ("/enum/basic", test_enum_basic);
|
g_test_add_func ("/enum/basic", test_enum_basic);
|
||||||
|
g_test_add_func ("/enum/define-type", test_enum_define_type);
|
||||||
g_test_add_func ("/flags/basic", test_flags_basic);
|
g_test_add_func ("/flags/basic", test_flags_basic);
|
||||||
|
g_test_add_func ("/flags/define-type", test_flags_define_type);
|
||||||
|
|
||||||
return g_test_run ();
|
return g_test_run ();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user