summaryrefslogtreecommitdiff
path: root/tests/repository/giteststructinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/repository/giteststructinfo.c')
-rw-r--r--tests/repository/giteststructinfo.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/repository/giteststructinfo.c b/tests/repository/giteststructinfo.c
new file mode 100644
index 00000000..ed1563b2
--- /dev/null
+++ b/tests/repository/giteststructinfo.c
@@ -0,0 +1,58 @@
+
+#include "girepository.h"
+
+
+static void
+test_field_iterators (void)
+{
+ GIRepository *repo;
+ GITypelib *ret;
+ GIStructInfo *class_info;
+ GIFieldInfo *field_info;
+ GError *error = NULL;
+ gint i;
+
+ repo = g_irepository_get_default ();
+
+ ret = g_irepository_require (repo, "GIMarshallingTests", NULL, 0, &error);
+ g_assert_nonnull (ret);
+ g_assert_no_error (error);
+
+ class_info = g_irepository_find_by_name (repo, "GIMarshallingTests", "ObjectClass");
+ g_assert_nonnull (class_info);
+ g_assert (g_base_info_get_type (class_info) == GI_INFO_TYPE_STRUCT);
+
+ for (i = 0; i < g_struct_info_get_n_fields (class_info); i++)
+ {
+ const char *field_name;
+ GIFieldInfo *found;
+
+ field_info = g_struct_info_get_field (class_info, i);
+ g_assert_nonnull (field_info);
+
+ field_name = g_base_info_get_name (field_info);
+ g_assert_nonnull (field_name);
+
+ found = g_struct_info_find_field (class_info, field_name);
+ g_assert_nonnull (found);
+ g_assert_cmpstr (g_base_info_get_name (found), ==, field_name);
+
+ g_base_info_unref (found);
+ g_base_info_unref (field_info);
+ }
+
+ field_info = g_struct_info_find_field (class_info, "not_a_real_field_name");
+ g_assert_null (field_info);
+
+ g_base_info_unref (class_info);
+}
+
+int
+main(int argc, char **argv)
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/girepository/structinfo/field-iterators", test_field_iterators);
+
+ return g_test_run ();
+}