]> Pileus Git - ~andy/gtk/blobdiff - gtk/tests/treestore.c
tests: Ifdef out unused code
[~andy/gtk] / gtk / tests / treestore.c
index c9dbcffba8cbefc2b2c5180d5099294f353039f1..894015387fd3b2e2fc2ff4c36c4419a36f668f96 100644 (file)
@@ -13,9 +13,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* To do:
@@ -171,6 +169,13 @@ tree_store_test_insert_high_values (void)
 
   g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
   g_assert (iters_equal (&iter2, &iter_copy));
+  g_assert (iter_position (store, &iter2, 1));
+
+  g_assert (gtk_tree_model_iter_previous (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_previous (GTK_TREE_MODEL (store), &iter_copy));
 
   g_object_unref (store);
 }
@@ -208,6 +213,13 @@ tree_store_test_append (void)
 
   g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
   g_assert (iters_equal (&iter2, &iter_copy));
+  g_assert (iter_position (store, &iter2, 1));
+
+  g_assert (gtk_tree_model_iter_previous (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_previous (GTK_TREE_MODEL (store), &iter_copy));
 
   g_object_unref (store);
 }
@@ -245,6 +257,13 @@ tree_store_test_prepend (void)
 
   g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
   g_assert (iters_equal (&iter, &iter_copy));
+  g_assert (iter_position (store, &iter, 1));
+
+  g_assert (gtk_tree_model_iter_previous (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_previous (GTK_TREE_MODEL (store), &iter_copy));
 
   g_object_unref (store);
 }
@@ -283,6 +302,20 @@ tree_store_test_insert_after (void)
 
   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, 2));
+  g_assert (iters_equal (&iter2, &iter_copy));
+  g_assert (iter_position (store, &iter2, 2));
+
+  g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy));
+  g_assert (iters_equal (&iter3, &iter_copy));
+  g_assert (iter_position (store, &iter3, 1));
+
+  g_assert (gtk_tree_model_iter_previous (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_previous (GTK_TREE_MODEL (store), &iter_copy));
+
   g_object_unref (store);
 }
 
@@ -316,6 +349,16 @@ tree_store_test_insert_after_NULL (void)
   g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 0));
   g_assert (iters_equal (&iter2, &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_assert (iter_position (store, &iter, 1));
+
+  g_assert (gtk_tree_model_iter_previous (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_previous (GTK_TREE_MODEL (store), &iter_copy));
+
   g_object_unref (store);
 }
 
@@ -356,6 +399,20 @@ tree_store_test_insert_before (void)
   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 (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 2));
+  g_assert (iters_equal (&iter2, &iter_copy));
+  g_assert (iter_position (store, &iter2, 2));
+
+  g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy));
+  g_assert (iters_equal (&iter3, &iter_copy));
+  g_assert (iter_position (store, &iter3, 1));
+
+  g_assert (gtk_tree_model_iter_previous (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_previous (GTK_TREE_MODEL (store), &iter_copy));
+
   g_object_unref (store);
 }
 
@@ -388,6 +445,13 @@ tree_store_test_insert_before_NULL (void)
 
   g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1));
   g_assert (iters_equal (&iter2, &iter_copy));
+  g_assert (iter_position (store, &iter2, 1));
+
+  g_assert (gtk_tree_model_iter_previous (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_previous (GTK_TREE_MODEL (store), &iter_copy));
 
   g_object_unref (store);
 }
@@ -856,6 +920,20 @@ tree_store_test_move_before_single (void)
 
 /* iter invalidation */
 
+static void
+tree_store_test_iter_previous_invalid (TreeStore     *fixture,
+                                       gconstpointer  user_data)
+{
+  GtkTreeIter iter;
+
+  gtk_tree_model_get_iter_first (GTK_TREE_MODEL (fixture->store), &iter);
+
+  g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (fixture->store),
+                                          &iter) == FALSE);
+  g_assert (gtk_tree_store_iter_is_valid (fixture->store, &iter) == FALSE);
+  g_assert (iter.stamp == 0);
+}
+
 static void
 tree_store_test_iter_next_invalid (TreeStore     *fixture,
                                    gconstpointer  user_data)
@@ -918,128 +996,162 @@ tree_store_test_iter_parent_invalid (TreeStore     *fixture,
   g_assert (iter.stamp == 0);
 }
 
+/* specific bugs */
+static void
+specific_bug_77977 (void)
+{
+  GtkTreeStore *tree_store;
+  GtkTreeIter iter1, iter2, iter3;
+  GtkTreePath *path;
+  GtkTreeRowReference *row_ref;
+
+  /* Stripped down version of test case for bug 77977 by Damon Chaplin */
+
+  g_test_bug ("77977");
+
+  tree_store = gtk_tree_store_new (1, G_TYPE_STRING);
+
+  gtk_tree_store_append (tree_store, &iter1, NULL);
+  gtk_tree_store_set (tree_store, &iter1, 0, "Window1", -1);
+
+  gtk_tree_store_append (tree_store, &iter2, &iter1);
+  gtk_tree_store_set (tree_store, &iter2, 0, "Table1", -1);
+
+  gtk_tree_store_append (tree_store, &iter3, &iter2);
+  gtk_tree_store_set (tree_store, &iter3, 0, "Button1", -1);
+
+  path = gtk_tree_path_new_from_indices (0, 0, 0, -1);
+  row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (tree_store), path);
+  gtk_tree_path_free (path);
+
+  gtk_tree_store_remove (tree_store, &iter1);
+
+  gtk_tree_row_reference_free (row_ref);
+  g_object_unref (tree_store);
+}
 
 /* main */
 
-int
-main (int    argc,
-      char **argv)
+void
+register_tree_store_tests (void)
 {
-  gtk_test_init (&argc, &argv, NULL);
-
   /* insertion */
-  g_test_add_func ("/tree-store/insert-high-values",
+  g_test_add_func ("/TreeStore/insert-high-values",
                   tree_store_test_insert_high_values);
-  g_test_add_func ("/tree-store/append",
+  g_test_add_func ("/TreeStore/append",
                   tree_store_test_append);
-  g_test_add_func ("/tree-store/prepend",
+  g_test_add_func ("/TreeStore/prepend",
                   tree_store_test_prepend);
-  g_test_add_func ("/tree-store/insert-after",
+  g_test_add_func ("/TreeStore/insert-after",
                   tree_store_test_insert_after);
-  g_test_add_func ("/tree-store/insert-after-NULL",
+  g_test_add_func ("/TreeStore/insert-after-NULL",
                   tree_store_test_insert_after_NULL);
-  g_test_add_func ("/tree-store/insert-before",
+  g_test_add_func ("/TreeStore/insert-before",
                   tree_store_test_insert_before);
-  g_test_add_func ("/tree-store/insert-before-NULL",
+  g_test_add_func ("/TreeStore/insert-before-NULL",
                   tree_store_test_insert_before_NULL);
 
   /* setting values (FIXME) */
 
   /* removal */
-  g_test_add ("/tree-store/remove-begin", TreeStore, NULL,
+  g_test_add ("/TreeStore/remove-begin", TreeStore, NULL,
              tree_store_setup, tree_store_test_remove_begin,
              tree_store_teardown);
-  g_test_add ("/tree-store/remove-middle", TreeStore, NULL,
+  g_test_add ("/TreeStore/remove-middle", TreeStore, NULL,
              tree_store_setup, tree_store_test_remove_middle,
              tree_store_teardown);
-  g_test_add ("/tree-store/remove-end", TreeStore, NULL,
+  g_test_add ("/TreeStore/remove-end", TreeStore, NULL,
              tree_store_setup, tree_store_test_remove_end,
              tree_store_teardown);
 
-  g_test_add ("/tree-store/clear", TreeStore, NULL,
+  g_test_add ("/TreeStore/clear", TreeStore, NULL,
              tree_store_setup, tree_store_test_clear,
              tree_store_teardown);
 
   /* reordering */
-  g_test_add ("/tree-store/reorder", TreeStore, NULL,
+  g_test_add ("/TreeStore/reorder", TreeStore, NULL,
              tree_store_setup, tree_store_test_reorder,
              tree_store_teardown);
 
   /* swapping */
-  g_test_add ("/tree-store/swap-begin", TreeStore, NULL,
+  g_test_add ("/TreeStore/swap-begin", TreeStore, NULL,
              tree_store_setup, tree_store_test_swap_begin,
              tree_store_teardown);
-  g_test_add ("/tree-store/swap-middle-next", TreeStore, NULL,
+  g_test_add ("/TreeStore/swap-middle-next", TreeStore, NULL,
              tree_store_setup, tree_store_test_swap_middle_next,
              tree_store_teardown);
-  g_test_add ("/tree-store/swap-middle-apart", TreeStore, NULL,
+  g_test_add ("/TreeStore/swap-middle-apart", TreeStore, NULL,
              tree_store_setup, tree_store_test_swap_middle_apart,
              tree_store_teardown);
-  g_test_add ("/tree-store/swap-end", TreeStore, NULL,
+  g_test_add ("/TreeStore/swap-end", TreeStore, NULL,
              tree_store_setup, tree_store_test_swap_end,
              tree_store_teardown);
-  g_test_add_func ("/tree-store/swap-single",
+  g_test_add_func ("/TreeStore/swap-single",
                   tree_store_test_swap_single);
 
   /* moving */
-  g_test_add ("/tree-store/move-after-from-start", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-after-from-start", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_after_from_start,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-after-next", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-after-next", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_after_next,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-after-apart", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-after-apart", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_after_apart,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-after-end", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-after-end", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_after_end,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-after-from-end", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-after-from-end", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_after_from_end,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-after-change-ends", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-after-change-ends", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_after_change_ends,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-after-NULL", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-after-NULL", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_after_NULL,
              tree_store_teardown);
-  g_test_add_func ("/tree-store/move-after-single",
+  g_test_add_func ("/TreeStore/move-after-single",
                   tree_store_test_move_after_single);
 
-  g_test_add ("/tree-store/move-before-next", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-before-next", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_before_next,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-before-apart", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-before-apart", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_before_apart,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-before-to-start", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-before-to-start", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_before_to_start,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-before-from-end", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-before-from-end", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_before_from_end,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-before-change-ends", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-before-change-ends", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_before_change_ends,
              tree_store_teardown);
-  g_test_add ("/tree-store/move-before-NULL", TreeStore, NULL,
+  g_test_add ("/TreeStore/move-before-NULL", TreeStore, NULL,
              tree_store_setup, tree_store_test_move_before_NULL,
              tree_store_teardown);
-  g_test_add_func ("/tree-store/move-before-single",
+  g_test_add_func ("/TreeStore/move-before-single",
                   tree_store_test_move_before_single);
 
   /* iter invalidation */
-  g_test_add ("/tree-store/iter-next-invalid", TreeStore, NULL,
+  g_test_add ("/TreeStore/iter-prev-invalid", TreeStore, NULL,
+              tree_store_setup, tree_store_test_iter_previous_invalid,
+              tree_store_teardown);
+  g_test_add ("/TreeStore/iter-next-invalid", TreeStore, NULL,
               tree_store_setup, tree_store_test_iter_next_invalid,
               tree_store_teardown);
-  g_test_add ("/tree-store/iter-children-invalid", TreeStore, NULL,
+  g_test_add ("/TreeStore/iter-children-invalid", TreeStore, NULL,
               tree_store_setup, tree_store_test_iter_children_invalid,
               tree_store_teardown);
-  g_test_add ("/tree-store/iter-nth-child-invalid", TreeStore, NULL,
+  g_test_add ("/TreeStore/iter-nth-child-invalid", TreeStore, NULL,
               tree_store_setup, tree_store_test_iter_nth_child_invalid,
               tree_store_teardown);
-  g_test_add ("/tree-store/iter-parent-invalid", TreeStore, NULL,
+  g_test_add ("/TreeStore/iter-parent-invalid", TreeStore, NULL,
               tree_store_setup, tree_store_test_iter_parent_invalid,
               tree_store_teardown);
 
-  return g_test_run ();
+  /* specific bugs */
+  g_test_add_func ("/TreeStore/bug-77977", specific_bug_77977);
 }