summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Rietveld <kris@imendio.com>2007-12-14 00:52:04 +0000
committerKristian Rietveld <kristian@src.gnome.org>2007-12-14 00:52:04 +0000
commit22e102081a5d2b549a26c5b77d1b1e06a39a9dc7 (patch)
tree3c8b13ab3aa1005e0603aae74818ea345ae93173
parent053cbe6dafda0844f3c70b02826fb22a4821fa15 (diff)
downloadgtk+-22e102081a5d2b549a26c5b77d1b1e06a39a9dc7.tar.gz
added tests for insertion functions.
2007-12-14 Kristian Rietveld <kris@imendio.com> * gtk/tests/liststore.c: * gtk/tests/treestore.c: added tests for insertion functions. svn path=/trunk/; revision=19174
-rw-r--r--ChangeLog5
-rw-r--r--gtk/tests/liststore.c291
-rw-r--r--gtk/tests/treestore.c294
3 files changed, 588 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 4cc50d6cfc..3b545dd54a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-14 Kristian Rietveld <kris@imendio.com>
+
+ * gtk/tests/liststore.c:
+ * gtk/tests/treestore.c: added tests for insertion functions.
+
Thu Dec 13 13:14:50 2007 Søren Sandmann <sandmann@redhat.com>
* Add RandR 1.2 support
diff --git a/gtk/tests/liststore.c b/gtk/tests/liststore.c
index b1b10933a0..27bd87b9d6 100644
--- a/gtk/tests/liststore.c
+++ b/gtk/tests/liststore.c
@@ -43,6 +43,26 @@ iters_equal (GtkTreeIter *a,
return TRUE;
}
+static gboolean
+iter_position (GtkListStore *store,
+ GtkTreeIter *iter,
+ int n)
+{
+ gboolean ret = TRUE;
+ GtkTreePath *path;
+
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), iter);
+ if (!path)
+ return FALSE;
+
+ if (gtk_tree_path_get_indices (path)[0] != n)
+ ret = FALSE;
+
+ gtk_tree_path_free (path);
+
+ return ret;
+}
+
/*
* Fixture
*/
@@ -115,6 +135,261 @@ check_model (ListStore *fixture,
gtk_tree_path_free (path);
}
+/* insertion */
+static void
+list_store_test_insert_high_values (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkListStore *store;
+
+ store = gtk_list_store_new (1, G_TYPE_INT);
+
+ gtk_list_store_insert (store, &iter, 1234);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 1);
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ gtk_list_store_insert (store, &iter2, 765);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter2, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+list_store_test_append (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkListStore *store;
+
+ store = gtk_list_store_new (1, G_TYPE_INT);
+
+ gtk_list_store_append (store, &iter);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 1);
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ gtk_list_store_append (store, &iter2);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter2, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+list_store_test_prepend (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkListStore *store;
+
+ store = gtk_list_store_new (1, G_TYPE_INT);
+
+ gtk_list_store_prepend (store, &iter);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 1);
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ gtk_list_store_prepend (store, &iter2);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+list_store_test_insert_after (void)
+{
+ GtkTreeIter iter, iter2, iter3;
+ GtkTreeIter iter_copy;
+ GtkListStore *store;
+
+ store = gtk_list_store_new (1, G_TYPE_INT);
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_append (store, &iter2);
+
+ gtk_list_store_insert_after (store, &iter3, &iter);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter3));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 3);
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter3, &iter_copy));
+ g_assert (iter_position (store, &iter3, 1));
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter3, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 1));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 2));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+list_store_test_insert_after_NULL (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkListStore *store;
+
+ store = gtk_list_store_new (1, G_TYPE_INT);
+
+ gtk_list_store_append (store, &iter);
+
+ /* move_after NULL is basically a prepend */
+ gtk_list_store_insert_after (store, &iter2, NULL);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 0));
+ g_assert (iters_equal (&iter2, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+list_store_test_insert_before (void)
+{
+ GtkTreeIter iter, iter2, iter3;
+ GtkTreeIter iter_copy;
+ GtkListStore *store;
+
+ store = gtk_list_store_new (1, G_TYPE_INT);
+
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_append (store, &iter2);
+
+ gtk_list_store_insert_before (store, &iter3, &iter2);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter3));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 3);
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter3, &iter_copy));
+ g_assert (iter_position (store, &iter3, 1));
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter3, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 1));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 2));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter3, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+list_store_test_insert_before_NULL (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkListStore *store;
+
+ store = gtk_list_store_new (1, G_TYPE_INT);
+
+ gtk_list_store_append (store, &iter);
+
+ /* move_before NULL is basically an append */
+ gtk_list_store_insert_before (store, &iter2, NULL);
+ g_assert (gtk_list_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter2, &iter_copy));
+
+ g_object_unref (store);
+}
+
/* removal */
static void
list_store_test_remove_begin (ListStore *fixture,
@@ -584,7 +859,21 @@ main (int argc,
{
gtk_test_init (&argc, &argv, NULL);
- /* insertion (FIXME) */
+ /* insertion */
+ g_test_add_func ("/list-store/insert-high-values",
+ list_store_test_insert_high_values);
+ g_test_add_func ("/list-store/append",
+ list_store_test_append);
+ g_test_add_func ("/list-store/prepend",
+ list_store_test_prepend);
+ g_test_add_func ("/list-store/insert-after",
+ list_store_test_insert_after);
+ g_test_add_func ("/list-store/insert-after-NULL",
+ list_store_test_insert_after_NULL);
+ g_test_add_func ("/list-store/insert-before",
+ list_store_test_insert_before);
+ g_test_add_func ("/list-store/insert-before-NULL",
+ list_store_test_insert_before_NULL);
/* setting values (FIXME) */
diff --git a/gtk/tests/treestore.c b/gtk/tests/treestore.c
index cb7d356383..37a98da047 100644
--- a/gtk/tests/treestore.c
+++ b/gtk/tests/treestore.c
@@ -20,6 +20,9 @@
/* To do:
* - All the to do items from liststore.c, plus:
+ * - Finish up the insertion tests; things aren't as nicely refactored
+ * here as in GtkListStore, so we need to check for corner cases on
+ * all insertion functions separately.
* - We only test in the root level, we also need all tests "duplicated"
* for child levels.
* - And we also need tests for creating these child levels, etc.
@@ -43,6 +46,26 @@ iters_equal (GtkTreeIter *a,
return TRUE;
}
+static gboolean
+iter_position (GtkTreeStore *store,
+ GtkTreeIter *iter,
+ int n)
+{
+ gboolean ret = TRUE;
+ GtkTreePath *path;
+
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), iter);
+ if (!path)
+ return FALSE;
+
+ if (gtk_tree_path_get_indices (path)[0] != n)
+ ret = FALSE;
+
+ gtk_tree_path_free (path);
+
+ return ret;
+}
+
/*
* Fixture
*/
@@ -115,6 +138,261 @@ check_model (TreeStore *fixture,
gtk_tree_path_free (path);
}
+/* insertion */
+static void
+tree_store_test_insert_high_values (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkTreeStore *store;
+
+ store = gtk_tree_store_new (1, G_TYPE_INT);
+
+ gtk_tree_store_insert (store, &iter, NULL, 1234);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 1);
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ gtk_tree_store_insert (store, &iter2, NULL, 765);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter2, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+tree_store_test_append (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkTreeStore *store;
+
+ store = gtk_tree_store_new (1, G_TYPE_INT);
+
+ gtk_tree_store_append (store, &iter, NULL);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 1);
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ gtk_tree_store_append (store, &iter2, NULL);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter2, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+tree_store_test_prepend (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkTreeStore *store;
+
+ store = gtk_tree_store_new (1, G_TYPE_INT);
+
+ gtk_tree_store_prepend (store, &iter, NULL);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 1);
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ gtk_tree_store_prepend (store, &iter2, NULL);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+tree_store_test_insert_after (void)
+{
+ GtkTreeIter iter, iter2, iter3;
+ GtkTreeIter iter_copy;
+ GtkTreeStore *store;
+
+ store = gtk_tree_store_new (1, G_TYPE_INT);
+
+ gtk_tree_store_append (store, &iter, NULL);
+ gtk_tree_store_append (store, &iter2, NULL);
+
+ gtk_tree_store_insert_after (store, &iter3, NULL, &iter);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter3));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 3);
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter3, &iter_copy));
+ g_assert (iter_position (store, &iter3, 1));
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter3, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 1));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 2));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+tree_store_test_insert_after_NULL (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkTreeStore *store;
+
+ store = gtk_tree_store_new (1, G_TYPE_INT);
+
+ gtk_tree_store_append (store, &iter, NULL);
+
+ /* move_after NULL is basically a prepend */
+ gtk_tree_store_insert_after (store, &iter2, NULL, NULL);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 0));
+ g_assert (iters_equal (&iter2, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+tree_store_test_insert_before (void)
+{
+ GtkTreeIter iter, iter2, iter3;
+ GtkTreeIter iter_copy;
+ GtkTreeStore *store;
+
+ store = gtk_tree_store_new (1, G_TYPE_INT);
+
+ gtk_tree_store_append (store, &iter, NULL);
+ gtk_tree_store_append (store, &iter2, NULL);
+
+ gtk_tree_store_insert_before (store, &iter3, NULL, &iter2);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter3));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 3);
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter3, &iter_copy));
+ g_assert (iter_position (store, &iter3, 1));
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter3, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 1));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter_copy, 2));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter3, &iter_copy));
+
+ g_object_unref (store);
+}
+
+static void
+tree_store_test_insert_before_NULL (void)
+{
+ GtkTreeIter iter, iter2;
+ GtkTreeIter iter_copy;
+ GtkTreeStore *store;
+
+ store = gtk_tree_store_new (1, G_TYPE_INT);
+
+ gtk_tree_store_append (store, &iter, NULL);
+
+ /* move_before NULL is basically an append */
+ gtk_tree_store_insert_before (store, &iter2, NULL, NULL);
+ g_assert (gtk_tree_store_iter_is_valid (store, &iter2));
+ g_assert (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) == 2);
+
+ /* Walk over the model */
+ g_assert (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter, &iter_copy));
+ g_assert (iter_position (store, &iter, 0));
+
+ g_assert (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+ g_assert (iters_equal (&iter2, &iter_copy));
+ g_assert (iter_position (store, &iter2, 1));
+
+ g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy));
+
+ g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
+ g_assert (iters_equal (&iter2, &iter_copy));
+
+ g_object_unref (store);
+}
+
/* removal */
static void
tree_store_test_remove_begin (TreeStore *fixture,
@@ -584,7 +862,21 @@ main (int argc,
{
gtk_test_init (&argc, &argv, NULL);
- /* insertion (FIXME) */
+ /* insertion */
+ g_test_add_func ("/tree-store/insert-high-values",
+ tree_store_test_insert_high_values);
+ g_test_add_func ("/tree-store/append",
+ tree_store_test_append);
+ g_test_add_func ("/tree-store/prepend",
+ tree_store_test_prepend);
+ g_test_add_func ("/tree-store/insert-after",
+ tree_store_test_insert_after);
+ g_test_add_func ("/tree-store/insert-after-NULL",
+ tree_store_test_insert_after_NULL);
+ g_test_add_func ("/tree-store/insert-before",
+ tree_store_test_insert_before);
+ g_test_add_func ("/tree-store/insert-before-NULL",
+ tree_store_test_insert_before_NULL);
/* setting values (FIXME) */