]> Pileus Git - ~andy/gtk/blobdiff - gtk/tests/liststore.c
texthandle: Set a bigger input shape, covering the line height
[~andy/gtk] / gtk / tests / liststore.c
index 6452fc290364bf34526b15690663468b807ef0f7..4455a13dffee05c0b16f177aac437d5a485379cf 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:
@@ -27,6 +25,8 @@
 
 #include <gtk/gtk.h>
 
+#include "treemodel.h"
+
 static inline gboolean
 iters_equal (GtkTreeIter *a,
             GtkTreeIter *b)
@@ -168,6 +168,13 @@ list_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);
 }
@@ -205,6 +212,13 @@ list_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);
 }
@@ -242,6 +256,13 @@ list_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);
 }
@@ -280,6 +301,20 @@ list_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);
 }
 
@@ -313,6 +348,16 @@ list_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);
 }
 
@@ -353,6 +398,20 @@ list_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);
 }
 
@@ -385,10 +444,34 @@ list_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);
 }
 
+/* setting values */
+static void
+list_store_set_gvalue_to_transform (void)
+{
+  GtkListStore *store;
+  GtkTreeIter iter;
+  GValue value = G_VALUE_INIT;
+
+  /* https://bugzilla.gnome.org/show_bug.cgi?id=677649 */
+  store = gtk_list_store_new (1, G_TYPE_LONG);
+  gtk_list_store_append (store, &iter);
+
+  g_value_init (&value, G_TYPE_INT);
+  g_value_set_int (&value, 42);
+  gtk_list_store_set_value (store, &iter, 0, &value);
+}
+
 /* removal */
 static void
 list_store_test_remove_begin (ListStore     *fixture,
@@ -853,6 +936,20 @@ list_store_test_move_before_single (void)
 
 /* iter invalidation */
 
+static void
+list_store_test_iter_previous_invalid (ListStore     *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_list_store_iter_is_valid (fixture->store, &iter) == FALSE);
+  g_assert (iter.stamp == 0);
+}
+
 static void
 list_store_test_iter_next_invalid (ListStore     *fixture,
                                    gconstpointer  user_data)
@@ -918,125 +1015,125 @@ list_store_test_iter_parent_invalid (ListStore     *fixture,
 
 /* main */
 
-int
-main (int    argc,
-      char **argv)
+void
+register_list_store_tests (void)
 {
-  gtk_test_init (&argc, &argv, NULL);
-
   /* insertion */
-  g_test_add_func ("/list-store/insert-high-values",
+  g_test_add_func ("/ListStore/insert-high-values",
                   list_store_test_insert_high_values);
-  g_test_add_func ("/list-store/append",
+  g_test_add_func ("/ListStore/append",
                   list_store_test_append);
-  g_test_add_func ("/list-store/prepend",
+  g_test_add_func ("/ListStore/prepend",
                   list_store_test_prepend);
-  g_test_add_func ("/list-store/insert-after",
+  g_test_add_func ("/ListStore/insert-after",
                   list_store_test_insert_after);
-  g_test_add_func ("/list-store/insert-after-NULL",
+  g_test_add_func ("/ListStore/insert-after-NULL",
                   list_store_test_insert_after_NULL);
-  g_test_add_func ("/list-store/insert-before",
+  g_test_add_func ("/ListStore/insert-before",
                   list_store_test_insert_before);
-  g_test_add_func ("/list-store/insert-before-NULL",
+  g_test_add_func ("/ListStore/insert-before-NULL",
                   list_store_test_insert_before_NULL);
 
   /* setting values (FIXME) */
+  g_test_add_func ("/ListStore/set-gvalue-to-transform",
+                   list_store_set_gvalue_to_transform);
 
   /* removal */
-  g_test_add ("/list-store/remove-begin", ListStore, NULL,
+  g_test_add ("/ListStore/remove-begin", ListStore, NULL,
              list_store_setup, list_store_test_remove_begin,
              list_store_teardown);
-  g_test_add ("/list-store/remove-middle", ListStore, NULL,
+  g_test_add ("/ListStore/remove-middle", ListStore, NULL,
              list_store_setup, list_store_test_remove_middle,
              list_store_teardown);
-  g_test_add ("/list-store/remove-end", ListStore, NULL,
+  g_test_add ("/ListStore/remove-end", ListStore, NULL,
              list_store_setup, list_store_test_remove_end,
              list_store_teardown);
 
-  g_test_add ("/list-store/clear", ListStore, NULL,
+  g_test_add ("/ListStore/clear", ListStore, NULL,
              list_store_setup, list_store_test_clear,
              list_store_teardown);
 
   /* reordering */
-  g_test_add ("/list-store/reorder", ListStore, NULL,
+  g_test_add ("/ListStore/reorder", ListStore, NULL,
              list_store_setup, list_store_test_reorder,
              list_store_teardown);
 
   /* swapping */
-  g_test_add ("/list-store/swap-begin", ListStore, NULL,
+  g_test_add ("/ListStore/swap-begin", ListStore, NULL,
              list_store_setup, list_store_test_swap_begin,
              list_store_teardown);
-  g_test_add ("/list-store/swap-middle-next", ListStore, NULL,
+  g_test_add ("/ListStore/swap-middle-next", ListStore, NULL,
              list_store_setup, list_store_test_swap_middle_next,
              list_store_teardown);
-  g_test_add ("/list-store/swap-middle-apart", ListStore, NULL,
+  g_test_add ("/ListStore/swap-middle-apart", ListStore, NULL,
              list_store_setup, list_store_test_swap_middle_apart,
              list_store_teardown);
-  g_test_add ("/list-store/swap-end", ListStore, NULL,
+  g_test_add ("/ListStore/swap-end", ListStore, NULL,
              list_store_setup, list_store_test_swap_end,
              list_store_teardown);
-  g_test_add_func ("/list-store/swap-single",
+  g_test_add_func ("/ListStore/swap-single",
                   list_store_test_swap_single);
 
   /* moving */
-  g_test_add ("/list-store/move-after-from-start", ListStore, NULL,
+  g_test_add ("/ListStore/move-after-from-start", ListStore, NULL,
              list_store_setup, list_store_test_move_after_from_start,
              list_store_teardown);
-  g_test_add ("/list-store/move-after-next", ListStore, NULL,
+  g_test_add ("/ListStore/move-after-next", ListStore, NULL,
              list_store_setup, list_store_test_move_after_next,
              list_store_teardown);
-  g_test_add ("/list-store/move-after-apart", ListStore, NULL,
+  g_test_add ("/ListStore/move-after-apart", ListStore, NULL,
              list_store_setup, list_store_test_move_after_apart,
              list_store_teardown);
-  g_test_add ("/list-store/move-after-end", ListStore, NULL,
+  g_test_add ("/ListStore/move-after-end", ListStore, NULL,
              list_store_setup, list_store_test_move_after_end,
              list_store_teardown);
-  g_test_add ("/list-store/move-after-from-end", ListStore, NULL,
+  g_test_add ("/ListStore/move-after-from-end", ListStore, NULL,
              list_store_setup, list_store_test_move_after_from_end,
              list_store_teardown);
-  g_test_add ("/list-store/move-after-change-ends", ListStore, NULL,
+  g_test_add ("/ListStore/move-after-change-ends", ListStore, NULL,
              list_store_setup, list_store_test_move_after_change_ends,
              list_store_teardown);
-  g_test_add ("/list-store/move-after-NULL", ListStore, NULL,
+  g_test_add ("/ListStore/move-after-NULL", ListStore, NULL,
              list_store_setup, list_store_test_move_after_NULL,
              list_store_teardown);
-  g_test_add_func ("/list-store/move-after-single",
+  g_test_add_func ("/ListStore/move-after-single",
                   list_store_test_move_after_single);
 
-  g_test_add ("/list-store/move-before-next", ListStore, NULL,
+  g_test_add ("/ListStore/move-before-next", ListStore, NULL,
              list_store_setup, list_store_test_move_before_next,
              list_store_teardown);
-  g_test_add ("/list-store/move-before-apart", ListStore, NULL,
+  g_test_add ("/ListStore/move-before-apart", ListStore, NULL,
              list_store_setup, list_store_test_move_before_apart,
              list_store_teardown);
-  g_test_add ("/list-store/move-before-to-start", ListStore, NULL,
+  g_test_add ("/ListStore/move-before-to-start", ListStore, NULL,
              list_store_setup, list_store_test_move_before_to_start,
              list_store_teardown);
-  g_test_add ("/list-store/move-before-from-end", ListStore, NULL,
+  g_test_add ("/ListStore/move-before-from-end", ListStore, NULL,
              list_store_setup, list_store_test_move_before_from_end,
              list_store_teardown);
-  g_test_add ("/list-store/move-before-change-ends", ListStore, NULL,
+  g_test_add ("/ListStore/move-before-change-ends", ListStore, NULL,
              list_store_setup, list_store_test_move_before_change_ends,
              list_store_teardown);
-  g_test_add ("/list-store/move-before-NULL", ListStore, NULL,
+  g_test_add ("/ListStore/move-before-NULL", ListStore, NULL,
              list_store_setup, list_store_test_move_before_NULL,
              list_store_teardown);
-  g_test_add_func ("/list-store/move-before-single",
+  g_test_add_func ("/ListStore/move-before-single",
                   list_store_test_move_before_single);
 
   /* iter invalidation */
-  g_test_add ("/list-store/iter-next-invalid", ListStore, NULL,
+  g_test_add ("/ListStore/iter-prev-invalid", ListStore, NULL,
+              list_store_setup, list_store_test_iter_previous_invalid,
+              list_store_teardown);
+  g_test_add ("/ListStore/iter-next-invalid", ListStore, NULL,
               list_store_setup, list_store_test_iter_next_invalid,
               list_store_teardown);
-  g_test_add ("/list-store/iter-children-invalid", ListStore, NULL,
+  g_test_add ("/ListStore/iter-children-invalid", ListStore, NULL,
               list_store_setup, list_store_test_iter_children_invalid,
               list_store_teardown);
-  g_test_add ("/list-store/iter-nth-child-invalid", ListStore, NULL,
+  g_test_add ("/ListStore/iter-nth-child-invalid", ListStore, NULL,
               list_store_setup, list_store_test_iter_nth_child_invalid,
               list_store_teardown);
-  g_test_add ("/list-store/iter-parent-invalid", ListStore, NULL,
+  g_test_add ("/ListStore/iter-parent-invalid", ListStore, NULL,
               list_store_setup, list_store_test_iter_parent_invalid,
               list_store_teardown);
-
-  return g_test_run ();
 }