diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-05-06 09:09:33 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-05-06 09:29:44 -0400 |
commit | 0ce49daa5f210140413927112da85f207f20ce47 (patch) | |
tree | 3688cf854959b29f2f61184d3a63b3d72095bd5e | |
parent | 08154c41f98db5269b9d5d62738a55398dbc9716 (diff) | |
download | gtk+-0ce49daa5f210140413927112da85f207f20ce47.tar.gz |
testsuite: test new treestore builder functionality
Verify that we can nest rows.
-rw-r--r-- | testsuite/gtk/builder.c | 75 | ||||
-rw-r--r-- | testsuite/gtk/builderparser.c | 8 |
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; } |