summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-05-06 09:09:33 -0400
committerMatthias Clasen <mclasen@redhat.com>2022-05-06 09:29:44 -0400
commit0ce49daa5f210140413927112da85f207f20ce47 (patch)
tree3688cf854959b29f2f61184d3a63b3d72095bd5e
parent08154c41f98db5269b9d5d62738a55398dbc9716 (diff)
downloadgtk+-0ce49daa5f210140413927112da85f207f20ce47.tar.gz
testsuite: test new treestore builder functionality
Verify that we can nest rows.
-rw-r--r--testsuite/gtk/builder.c75
-rw-r--r--testsuite/gtk/builderparser.c8
2 files changed, 78 insertions, 5 deletions
diff --git a/testsuite/gtk/builder.c b/testsuite/gtk/builder.c
index e2269dfcf4..88dc7c853a 100644
--- a/testsuite/gtk/builder.c
+++ b/testsuite/gtk/builder.c
@@ -661,9 +661,34 @@ test_tree_store (void)
" </data>"
" </object>"
"</interface>";
+ const char buffer4[] =
+ "<interface>"
+ " <object class=\"GtkTreeStore\" id=\"treestore1\">"
+ " <columns>"
+ " <column type=\"gchararray\"/>"
+ " <column type=\"gchararray\"/>"
+ " <column type=\"gint\"/>"
+ " </columns>"
+ " <data>"
+ " <row>"
+ " <col id=\"1\" context=\"foo\">Doe</col>"
+ " <col id=\"0\" translatable=\"yes\">John</col>"
+ " <col id=\"2\" comments=\"foobar\">25</col>"
+ " <row>"
+ " <col id=\"2\">50</col>"
+ " <col id=\"1\">Dole</col>"
+ " <col id=\"0\">Johan</col>"
+ " </row>"
+ " </row>"
+ " <row>"
+ " <col id=\"2\">19</col>"
+ " </row>"
+ " </data>"
+ " </object>"
+ "</interface>";
GtkBuilder *builder;
GObject *store;
- GtkTreeIter iter;
+ GtkTreeIter iter, parent;
char *surname, *lastname;
int age;
@@ -754,6 +779,54 @@ test_tree_store (void)
g_assert_false (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter));
g_object_unref (builder);
+
+ builder = builder_new_from_string (buffer4, -1, NULL);
+ store = gtk_builder_get_object (builder, "treestore1");
+ g_assert_true (GTK_IS_TREE_STORE (store));
+ g_assert_cmpint (gtk_tree_model_get_n_columns (GTK_TREE_MODEL (store)), ==, 3);
+ g_assert_cmpint (gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), 0), ==, G_TYPE_STRING);
+ g_assert_cmpint (gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), 1), ==, G_TYPE_STRING);
+ g_assert_cmpint (gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), 2), ==, G_TYPE_INT);
+
+ g_assert_true (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter));
+ gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
+ 0, &surname,
+ 1, &lastname,
+ 2, &age,
+ -1);
+ g_assert_cmpstr (surname, ==, "John");
+ g_free (surname);
+ g_assert_cmpstr (lastname, ==, "Doe");
+ g_free (lastname);
+ g_assert_cmpint (age, ==, 25);
+ parent = iter;
+ g_assert_true (gtk_tree_model_iter_children (GTK_TREE_MODEL (store), &iter, &parent));
+
+ gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
+ 0, &surname,
+ 1, &lastname,
+ 2, &age,
+ -1);
+ g_assert_cmpstr (surname, ==, "Johan");
+ g_free (surname);
+ g_assert_cmpstr (lastname, ==, "Dole");
+ g_free (lastname);
+ g_assert_cmpint (age, ==, 50);
+ g_assert_false (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter));
+ iter = parent;
+ g_assert_true (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter));
+
+ gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
+ 0, &surname,
+ 1, &lastname,
+ 2, &age,
+ -1);
+ g_assert_null (surname);
+ g_assert_null (lastname);
+ g_assert_cmpint (age, ==, 19);
+ g_assert_false (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter));
+
+ g_object_unref (builder);
}
static void
diff --git a/testsuite/gtk/builderparser.c b/testsuite/gtk/builderparser.c
index 7f26242d60..66556e2048 100644
--- a/testsuite/gtk/builderparser.c
+++ b/testsuite/gtk/builderparser.c
@@ -51,7 +51,7 @@ test_file (const char *filename, GString *string)
{
g_string_append_printf (string, "ERROR: %s %d\n%s\n",
g_quark_to_string (error->domain),
- error->code,
+ error->code,
error->message);
g_error_free (error);
}
@@ -66,12 +66,12 @@ get_expected_filename (const char *filename)
f = g_strdup (filename);
p = strstr (f, ".ui");
- if (p)
+ if (p)
*p = 0;
expected = g_strconcat (f, ".expected", NULL);
-
+
g_free (f);
-
+
return expected;
}