1 /* Extensive GtkTreeModelSort tests.
2 * Copyright (C) 2009,2011 Kristian Rietveld <kris@gtk.org>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
22 #include "treemodel.h"
23 #include "gtktreemodelrefcount.h"
27 ref_count_single_level (void)
31 GtkTreeModelRefCount *ref_model;
32 GtkTreeModel *sort_model;
35 model = gtk_tree_model_ref_count_new ();
36 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
38 gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
39 gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
40 gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
41 gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
42 gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
44 assert_root_level_unreferenced (ref_model);
46 sort_model = gtk_tree_model_sort_new_with_model (model);
47 tree_view = gtk_tree_view_new_with_model (sort_model);
49 assert_entire_model_referenced (ref_model, 1);
51 gtk_widget_destroy (tree_view);
53 assert_entire_model_unreferenced (ref_model);
55 g_object_unref (sort_model);
56 g_object_unref (ref_model);
60 ref_count_two_levels (void)
62 GtkTreeIter parent1, parent2, iter;
64 GtkTreeModelRefCount *ref_model;
65 GtkTreeModel *sort_model;
68 model = gtk_tree_model_ref_count_new ();
69 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
71 gtk_tree_store_append (GTK_TREE_STORE (model), &parent1, NULL);
72 gtk_tree_store_append (GTK_TREE_STORE (model), &parent2, NULL);
73 gtk_tree_store_append (GTK_TREE_STORE (model), &iter, &parent2);
74 gtk_tree_store_append (GTK_TREE_STORE (model), &iter, &parent2);
75 gtk_tree_store_append (GTK_TREE_STORE (model), &iter, &parent2);
77 assert_entire_model_unreferenced (ref_model);
79 sort_model = gtk_tree_model_sort_new_with_model (model);
80 tree_view = gtk_tree_view_new_with_model (sort_model);
82 assert_root_level_referenced (ref_model, 1);
83 assert_node_ref_count (ref_model, &iter, 0);
85 gtk_tree_view_expand_all (GTK_TREE_VIEW (tree_view));
87 assert_node_ref_count (ref_model, &parent1, 1);
88 assert_node_ref_count (ref_model, &parent2, 2);
89 assert_node_ref_count (ref_model, &iter, 1);
91 gtk_tree_view_collapse_all (GTK_TREE_VIEW (tree_view));
93 assert_node_ref_count (ref_model, &parent1, 1);
94 assert_node_ref_count (ref_model, &parent2, 2);
95 assert_node_ref_count (ref_model, &iter, 0);
97 gtk_tree_model_sort_clear_cache (GTK_TREE_MODEL_SORT (sort_model));
99 assert_root_level_referenced (ref_model, 1);
100 assert_node_ref_count (ref_model, &iter, 0);
102 gtk_widget_destroy (tree_view);
104 assert_entire_model_unreferenced (ref_model);
106 g_object_unref (sort_model);
107 g_object_unref (ref_model);
111 ref_count_three_levels (void)
113 GtkTreeIter grandparent1, grandparent2, parent1, parent2;
114 GtkTreeIter iter_parent1, iter_parent2;
116 GtkTreeModelRefCount *ref_model;
117 GtkTreeModel *sort_model;
119 GtkWidget *tree_view;
121 model = gtk_tree_model_ref_count_new ();
122 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
133 gtk_tree_store_append (GTK_TREE_STORE (model), &grandparent1, NULL);
134 gtk_tree_store_append (GTK_TREE_STORE (model), &grandparent2, NULL);
135 gtk_tree_store_append (GTK_TREE_STORE (model), &parent1, &grandparent2);
136 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent1, &parent1);
137 gtk_tree_store_append (GTK_TREE_STORE (model), &parent2, &grandparent2);
138 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent2, &parent2);
139 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent2, &parent2);
141 assert_entire_model_unreferenced (ref_model);
143 sort_model = gtk_tree_model_sort_new_with_model (model);
144 tree_view = gtk_tree_view_new_with_model (sort_model);
146 assert_root_level_referenced (ref_model, 1);
147 assert_node_ref_count (ref_model, &parent1, 0);
148 assert_node_ref_count (ref_model, &parent2, 0);
149 assert_level_unreferenced (ref_model, &parent1);
150 assert_level_unreferenced (ref_model, &parent2);
152 path = gtk_tree_path_new_from_indices (1, -1);
153 gtk_tree_view_expand_row (GTK_TREE_VIEW (tree_view), path, FALSE);
155 assert_node_ref_count (ref_model, &grandparent1, 1);
156 assert_node_ref_count (ref_model, &grandparent2, 2);
157 assert_node_ref_count (ref_model, &parent1, 1);
158 assert_node_ref_count (ref_model, &parent2, 1);
159 assert_node_ref_count (ref_model, &iter_parent1, 0);
160 assert_node_ref_count (ref_model, &iter_parent2, 0);
162 gtk_tree_view_expand_row (GTK_TREE_VIEW (tree_view), path, TRUE);
164 assert_node_ref_count (ref_model, &grandparent1, 1);
165 assert_node_ref_count (ref_model, &grandparent2, 2);
166 assert_node_ref_count (ref_model, &parent1, 2);
167 assert_node_ref_count (ref_model, &parent2, 2);
168 assert_node_ref_count (ref_model, &iter_parent1, 1);
169 assert_node_ref_count (ref_model, &iter_parent2, 1);
171 gtk_tree_view_collapse_all (GTK_TREE_VIEW (tree_view));
173 assert_node_ref_count (ref_model, &grandparent1, 1);
174 assert_node_ref_count (ref_model, &grandparent2, 2);
175 assert_node_ref_count (ref_model, &parent1, 1);
176 assert_node_ref_count (ref_model, &parent2, 1);
177 assert_node_ref_count (ref_model, &iter_parent1, 0);
178 assert_node_ref_count (ref_model, &iter_parent2, 0);
180 gtk_tree_model_sort_clear_cache (GTK_TREE_MODEL_SORT (sort_model));
182 assert_root_level_referenced (ref_model, 1);
183 assert_node_ref_count (ref_model, &parent1, 0);
184 assert_node_ref_count (ref_model, &parent2, 0);
186 gtk_tree_view_expand_row (GTK_TREE_VIEW (tree_view), path, FALSE);
188 assert_node_ref_count (ref_model, &grandparent1, 1);
189 assert_node_ref_count (ref_model, &grandparent2, 2);
190 assert_node_ref_count (ref_model, &parent1, 1);
191 assert_node_ref_count (ref_model, &parent2, 1);
192 assert_node_ref_count (ref_model, &iter_parent1, 0);
193 assert_node_ref_count (ref_model, &iter_parent2, 0);
195 gtk_tree_path_append_index (path, 1);
196 gtk_tree_view_expand_row (GTK_TREE_VIEW (tree_view), path, FALSE);
198 assert_node_ref_count (ref_model, &grandparent1, 1);
199 assert_node_ref_count (ref_model, &grandparent2, 2);
200 assert_node_ref_count (ref_model, &parent1, 1);
201 assert_node_ref_count (ref_model, &parent2, 2);
202 assert_node_ref_count (ref_model, &iter_parent1, 0);
203 assert_node_ref_count (ref_model, &iter_parent2, 1);
205 gtk_tree_view_collapse_row (GTK_TREE_VIEW (tree_view), path);
207 assert_node_ref_count (ref_model, &grandparent1, 1);
208 assert_node_ref_count (ref_model, &grandparent2, 2);
209 assert_node_ref_count (ref_model, &parent1, 1);
210 assert_node_ref_count (ref_model, &parent2, 2);
211 assert_node_ref_count (ref_model, &iter_parent1, 0);
212 assert_node_ref_count (ref_model, &iter_parent2, 0);
214 gtk_tree_model_sort_clear_cache (GTK_TREE_MODEL_SORT (sort_model));
216 assert_node_ref_count (ref_model, &grandparent1, 1);
217 assert_node_ref_count (ref_model, &grandparent2, 2);
218 assert_node_ref_count (ref_model, &parent1, 1);
219 assert_node_ref_count (ref_model, &parent2, 1);
220 assert_node_ref_count (ref_model, &iter_parent1, 0);
221 assert_node_ref_count (ref_model, &iter_parent2, 0);
223 gtk_tree_path_up (path);
224 gtk_tree_view_collapse_row (GTK_TREE_VIEW (tree_view), path);
225 gtk_tree_path_free (path);
227 assert_node_ref_count (ref_model, &grandparent1, 1);
228 assert_node_ref_count (ref_model, &grandparent2, 2);
229 assert_node_ref_count (ref_model, &parent1, 0);
230 assert_node_ref_count (ref_model, &parent2, 0);
231 assert_node_ref_count (ref_model, &iter_parent1, 0);
232 assert_node_ref_count (ref_model, &iter_parent2, 0);
234 gtk_tree_model_sort_clear_cache (GTK_TREE_MODEL_SORT (sort_model));
236 assert_node_ref_count (ref_model, &grandparent1, 1);
237 assert_node_ref_count (ref_model, &grandparent2, 1);
238 assert_node_ref_count (ref_model, &parent1, 0);
239 assert_node_ref_count (ref_model, &parent2, 0);
240 assert_node_ref_count (ref_model, &iter_parent1, 0);
241 assert_node_ref_count (ref_model, &iter_parent2, 0);
243 gtk_widget_destroy (tree_view);
245 assert_entire_model_unreferenced (ref_model);
247 g_object_unref (sort_model);
248 g_object_unref (ref_model);
252 ref_count_delete_row (void)
254 GtkTreeIter grandparent1, grandparent2, parent1, parent2;
255 GtkTreeIter iter_parent1, iter_parent2;
257 GtkTreeModelRefCount *ref_model;
258 GtkTreeModel *sort_model;
260 GtkWidget *tree_view;
262 model = gtk_tree_model_ref_count_new ();
263 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
274 gtk_tree_store_append (GTK_TREE_STORE (model), &grandparent1, NULL);
275 gtk_tree_store_append (GTK_TREE_STORE (model), &grandparent2, NULL);
276 gtk_tree_store_append (GTK_TREE_STORE (model), &parent1, &grandparent2);
277 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent1, &parent1);
278 gtk_tree_store_append (GTK_TREE_STORE (model), &parent2, &grandparent2);
279 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent2, &parent2);
280 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent2, &parent2);
282 assert_entire_model_unreferenced (ref_model);
284 sort_model = gtk_tree_model_sort_new_with_model (model);
285 tree_view = gtk_tree_view_new_with_model (sort_model);
287 assert_root_level_referenced (ref_model, 1);
288 assert_node_ref_count (ref_model, &parent1, 0);
289 assert_node_ref_count (ref_model, &parent2, 0);
290 assert_level_unreferenced (ref_model, &parent1);
291 assert_level_unreferenced (ref_model, &parent2);
293 path = gtk_tree_path_new_from_indices (1, -1);
294 gtk_tree_view_expand_row (GTK_TREE_VIEW (tree_view), path, TRUE);
296 assert_node_ref_count (ref_model, &grandparent1, 1);
297 assert_node_ref_count (ref_model, &grandparent2, 2);
298 assert_node_ref_count (ref_model, &parent1, 2);
299 assert_node_ref_count (ref_model, &parent2, 2);
300 assert_node_ref_count (ref_model, &iter_parent1, 1);
301 assert_node_ref_count (ref_model, &iter_parent2, 1);
303 gtk_tree_store_remove (GTK_TREE_STORE (model), &iter_parent2);
305 assert_node_ref_count (ref_model, &grandparent1, 1);
306 assert_node_ref_count (ref_model, &grandparent2, 2);
307 assert_node_ref_count (ref_model, &parent1, 2);
308 assert_level_referenced (ref_model, 1, &parent1);
309 assert_node_ref_count (ref_model, &parent2, 2);
310 assert_level_referenced (ref_model, 1, &parent2);
312 gtk_tree_store_remove (GTK_TREE_STORE (model), &parent1);
314 assert_node_ref_count (ref_model, &grandparent1, 1);
315 assert_node_ref_count (ref_model, &grandparent2, 2);
316 assert_node_ref_count (ref_model, &parent2, 2);
317 assert_level_referenced (ref_model, 1, &parent2);
319 gtk_tree_store_remove (GTK_TREE_STORE (model), &grandparent2);
321 assert_node_ref_count (ref_model, &grandparent1, 1);
323 gtk_tree_model_sort_clear_cache (GTK_TREE_MODEL_SORT (sort_model));
325 assert_node_ref_count (ref_model, &grandparent1, 1);
327 gtk_widget_destroy (tree_view);
329 assert_entire_model_unreferenced (ref_model);
331 g_object_unref (sort_model);
332 g_object_unref (ref_model);
336 ref_count_cleanup (void)
338 GtkTreeIter grandparent1, grandparent2, parent1, parent2;
339 GtkTreeIter iter_parent1, iter_parent2;
341 GtkTreeModelRefCount *ref_model;
342 GtkTreeModel *sort_model;
343 GtkWidget *tree_view;
345 model = gtk_tree_model_ref_count_new ();
346 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
357 gtk_tree_store_append (GTK_TREE_STORE (model), &grandparent1, NULL);
358 gtk_tree_store_append (GTK_TREE_STORE (model), &grandparent2, NULL);
359 gtk_tree_store_append (GTK_TREE_STORE (model), &parent1, &grandparent2);
360 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent1, &parent1);
361 gtk_tree_store_append (GTK_TREE_STORE (model), &parent2, &grandparent2);
362 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent2, &parent2);
363 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent2, &parent2);
365 sort_model = gtk_tree_model_sort_new_with_model (model);
366 tree_view = gtk_tree_view_new_with_model (sort_model);
368 gtk_tree_view_expand_all (GTK_TREE_VIEW (tree_view));
370 gtk_widget_destroy (tree_view);
372 assert_node_ref_count (ref_model, &grandparent1, 0);
373 assert_node_ref_count (ref_model, &grandparent2, 1);
374 assert_node_ref_count (ref_model, &parent1, 1);
375 assert_node_ref_count (ref_model, &parent2, 1);
376 assert_node_ref_count (ref_model, &iter_parent1, 0);
377 assert_node_ref_count (ref_model, &iter_parent2, 0);
379 gtk_tree_model_sort_clear_cache (GTK_TREE_MODEL_SORT (sort_model));
381 assert_entire_model_unreferenced (ref_model);
383 g_object_unref (sort_model);
384 g_object_unref (ref_model);
388 ref_count_row_ref (void)
390 GtkTreeIter grandparent1, grandparent2, parent1, parent2;
391 GtkTreeIter iter_parent1, iter_parent2;
393 GtkTreeModelRefCount *ref_model;
394 GtkTreeModel *sort_model;
395 GtkWidget *tree_view;
397 GtkTreeRowReference *row_ref;
399 model = gtk_tree_model_ref_count_new ();
400 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
411 gtk_tree_store_append (GTK_TREE_STORE (model), &grandparent1, NULL);
412 gtk_tree_store_append (GTK_TREE_STORE (model), &grandparent2, NULL);
413 gtk_tree_store_append (GTK_TREE_STORE (model), &parent1, &grandparent2);
414 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent1, &parent1);
415 gtk_tree_store_append (GTK_TREE_STORE (model), &parent2, &grandparent2);
416 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent2, &parent2);
417 gtk_tree_store_append (GTK_TREE_STORE (model), &iter_parent2, &parent2);
419 sort_model = gtk_tree_model_sort_new_with_model (model);
420 tree_view = gtk_tree_view_new_with_model (sort_model);
422 path = gtk_tree_path_new_from_indices (1, 1, 1, -1);
423 row_ref = gtk_tree_row_reference_new (sort_model, path);
424 gtk_tree_path_free (path);
426 assert_node_ref_count (ref_model, &grandparent1, 1);
427 /* Referenced because the node is visible, its child level is built
428 * and referenced by the row ref.
430 assert_node_ref_count (ref_model, &grandparent2, 3);
431 assert_node_ref_count (ref_model, &parent1, 0);
432 /* Referenced by the row ref and because its child level is built. */
433 assert_node_ref_count (ref_model, &parent2, 2);
434 assert_node_ref_count (ref_model, &iter_parent1, 0);
435 assert_node_ref_count (ref_model, &iter_parent2, 1);
437 gtk_tree_row_reference_free (row_ref);
439 assert_node_ref_count (ref_model, &grandparent1, 1);
440 assert_node_ref_count (ref_model, &grandparent2, 2);
441 assert_node_ref_count (ref_model, &parent1, 0);
442 assert_node_ref_count (ref_model, &parent2, 1);
443 assert_node_ref_count (ref_model, &iter_parent1, 0);
444 assert_node_ref_count (ref_model, &iter_parent2, 0);
446 path = gtk_tree_path_new_from_indices (1, 1, 1, -1);
447 row_ref = gtk_tree_row_reference_new (sort_model, path);
448 gtk_tree_path_free (path);
450 assert_node_ref_count (ref_model, &grandparent1, 1);
451 /* Referenced because the node is visible, its child level is built
452 * and referenced by the row ref.
454 assert_node_ref_count (ref_model, &grandparent2, 3);
455 assert_node_ref_count (ref_model, &parent1, 0);
456 /* Referenced by the row ref and because its child level is built. */
457 assert_node_ref_count (ref_model, &parent2, 2);
458 assert_node_ref_count (ref_model, &iter_parent1, 0);
459 assert_node_ref_count (ref_model, &iter_parent2, 1);
461 gtk_tree_store_remove (GTK_TREE_STORE (model), &parent2);
463 assert_node_ref_count (ref_model, &grandparent1, 1);
464 assert_node_ref_count (ref_model, &grandparent2, 1);
465 assert_node_ref_count (ref_model, &parent1, 0);
466 assert_node_ref_count (ref_model, &iter_parent1, 0);
468 gtk_tree_row_reference_free (row_ref);
470 assert_node_ref_count (ref_model, &grandparent1, 1);
471 assert_node_ref_count (ref_model, &grandparent2, 1);
472 assert_node_ref_count (ref_model, &parent1, 0);
473 assert_node_ref_count (ref_model, &iter_parent1, 0);
475 gtk_widget_destroy (tree_view);
476 g_object_unref (sort_model);
478 assert_entire_model_unreferenced (ref_model);
480 g_object_unref (ref_model);
484 ref_count_reorder_single (void)
486 GtkTreeIter iter1, iter2, iter3, iter4, iter5;
487 GtkTreeIter siter1, siter2, siter3, siter4, siter5;
489 GtkTreeModelRefCount *ref_model;
490 GtkTreeModel *sort_model;
491 GtkWidget *tree_view;
492 GType column_types[] = { G_TYPE_INT };
494 model = gtk_tree_model_ref_count_new ();
495 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
497 gtk_tree_store_set_column_types (GTK_TREE_STORE (model), 1,
500 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter1, NULL, 0,
502 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter2, NULL, 1,
504 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter3, NULL, 2,
506 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter4, NULL, 3,
508 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter5, NULL, 4,
511 assert_root_level_unreferenced (ref_model);
513 sort_model = gtk_tree_model_sort_new_with_model (model);
514 tree_view = gtk_tree_view_new_with_model (sort_model);
516 assert_entire_model_referenced (ref_model, 1);
518 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter1, &iter1);
519 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter2, &iter2);
520 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter3, &iter3);
521 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter4, &iter4);
522 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter5, &iter5);
524 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter1);
525 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter1);
527 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter3);
528 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter3);
529 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter3);
531 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter5);
533 assert_node_ref_count (ref_model, &iter1, 3);
534 assert_node_ref_count (ref_model, &iter2, 1);
535 assert_node_ref_count (ref_model, &iter3, 4);
536 assert_node_ref_count (ref_model, &iter4, 1);
537 assert_node_ref_count (ref_model, &iter5, 2);
540 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
541 0, GTK_SORT_ASCENDING);
543 assert_node_ref_count (ref_model, &iter1, 3);
544 assert_node_ref_count (ref_model, &iter2, 1);
545 assert_node_ref_count (ref_model, &iter3, 4);
546 assert_node_ref_count (ref_model, &iter4, 1);
547 assert_node_ref_count (ref_model, &iter5, 2);
549 /* Re-translate the iters after sorting */
550 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter1, &iter1);
551 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter2, &iter2);
552 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter3, &iter3);
553 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter4, &iter4);
554 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter5, &iter5);
556 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter1);
557 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter1);
559 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter3);
560 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter3);
561 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter3);
563 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter5);
565 assert_entire_model_referenced (ref_model, 1);
567 gtk_widget_destroy (tree_view);
568 g_object_unref (sort_model);
570 assert_entire_model_unreferenced (ref_model);
572 g_object_unref (ref_model);
576 ref_count_reorder_two (void)
578 GtkTreeIter iter1, iter2, iter3, iter4, iter5;
579 GtkTreeIter citer1, citer2, citer3, citer4, citer5;
580 GtkTreeIter siter1, siter2, siter3, siter4, siter5;
581 GtkTreeIter sciter1, sciter2, sciter3, sciter4, sciter5;
583 GtkTreeModelRefCount *ref_model;
584 GtkTreeModel *sort_model;
585 GtkWidget *tree_view;
586 GType column_types[] = { G_TYPE_INT };
588 model = gtk_tree_model_ref_count_new ();
589 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
591 gtk_tree_store_set_column_types (GTK_TREE_STORE (model), 1,
594 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter1, NULL, 0,
596 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter2, NULL, 1,
598 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter3, NULL, 2,
600 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter4, NULL, 3,
602 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter5, NULL, 4,
606 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer1, &iter1, 0,
608 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer2, &iter1, 1,
610 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer3, &iter1, 2,
612 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer4, &iter1, 3,
614 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer5, &iter1, 4,
617 assert_root_level_unreferenced (ref_model);
619 sort_model = gtk_tree_model_sort_new_with_model (model);
620 tree_view = gtk_tree_view_new_with_model (sort_model);
621 gtk_tree_view_expand_all (GTK_TREE_VIEW (tree_view));
623 assert_node_ref_count (ref_model, &iter1, 2);
624 assert_node_ref_count (ref_model, &iter2, 1);
625 assert_node_ref_count (ref_model, &iter3, 1);
626 assert_node_ref_count (ref_model, &iter4, 1);
627 assert_node_ref_count (ref_model, &iter5, 1);
629 assert_level_referenced (ref_model, 1, &iter1);
631 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter1, &iter1);
632 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter2, &iter2);
633 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter3, &iter3);
634 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter4, &iter4);
635 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter5, &iter5);
637 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter1, &citer1);
638 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter2, &citer2);
639 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter3, &citer3);
640 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter4, &citer4);
641 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter5, &citer5);
643 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter1);
644 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter1);
646 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter3);
647 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter3);
648 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter3);
650 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &siter5);
652 assert_node_ref_count (ref_model, &iter1, 4);
653 assert_node_ref_count (ref_model, &iter2, 1);
654 assert_node_ref_count (ref_model, &iter3, 4);
655 assert_node_ref_count (ref_model, &iter4, 1);
656 assert_node_ref_count (ref_model, &iter5, 2);
658 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &sciter3);
659 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &sciter3);
661 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &sciter5);
662 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &sciter5);
663 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &sciter5);
665 gtk_tree_model_ref_node (GTK_TREE_MODEL (sort_model), &sciter1);
667 assert_node_ref_count (ref_model, &citer1, 2);
668 assert_node_ref_count (ref_model, &citer2, 1);
669 assert_node_ref_count (ref_model, &citer3, 3);
670 assert_node_ref_count (ref_model, &citer4, 1);
671 assert_node_ref_count (ref_model, &citer5, 4);
674 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
675 0, GTK_SORT_ASCENDING);
677 assert_node_ref_count (ref_model, &iter1, 4);
678 assert_node_ref_count (ref_model, &iter2, 1);
679 assert_node_ref_count (ref_model, &iter3, 4);
680 assert_node_ref_count (ref_model, &iter4, 1);
681 assert_node_ref_count (ref_model, &iter5, 2);
683 assert_node_ref_count (ref_model, &citer1, 2);
684 assert_node_ref_count (ref_model, &citer2, 1);
685 assert_node_ref_count (ref_model, &citer3, 3);
686 assert_node_ref_count (ref_model, &citer4, 1);
687 assert_node_ref_count (ref_model, &citer5, 4);
689 /* Re-translate the iters after sorting */
690 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter1, &iter1);
691 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter2, &iter2);
692 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter3, &iter3);
693 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter4, &iter4);
694 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &siter5, &iter5);
696 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter1, &citer1);
697 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter2, &citer2);
698 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter3, &citer3);
699 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter4, &citer4);
700 gtk_tree_model_sort_convert_child_iter_to_iter (GTK_TREE_MODEL_SORT (sort_model), &sciter5, &citer5);
702 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter1);
703 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter1);
705 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter3);
706 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter3);
707 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter3);
709 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &siter5);
711 assert_node_ref_count (ref_model, &iter1, 2);
712 assert_node_ref_count (ref_model, &iter2, 1);
713 assert_node_ref_count (ref_model, &iter3, 1);
714 assert_node_ref_count (ref_model, &iter4, 1);
715 assert_node_ref_count (ref_model, &iter5, 1);
717 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &sciter3);
718 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &sciter3);
720 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &sciter5);
721 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &sciter5);
722 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &sciter5);
724 gtk_tree_model_unref_node (GTK_TREE_MODEL (sort_model), &sciter1);
726 assert_level_referenced (ref_model, 1, &iter1);
728 gtk_widget_destroy (tree_view);
729 g_object_unref (sort_model);
731 assert_entire_model_unreferenced (ref_model);
733 g_object_unref (ref_model);
737 check_sort_order (GtkTreeModel *sort_model,
738 GtkSortType sort_order,
739 const char *parent_path)
745 gtk_tree_model_get_iter_first (sort_model, &siter);
750 path = gtk_tree_path_new_from_string (parent_path);
751 gtk_tree_path_append_index (path, 0);
753 gtk_tree_model_get_iter (sort_model, &siter, path);
755 gtk_tree_path_free (path);
758 if (sort_order == GTK_SORT_ASCENDING)
761 prev_value = INT_MAX;
767 gtk_tree_model_get (sort_model, &siter, 0, &value, -1);
768 if (sort_order == GTK_SORT_ASCENDING)
769 g_assert (prev_value <= value);
771 g_assert (prev_value >= value);
775 while (gtk_tree_model_iter_next (sort_model, &siter));
779 rows_reordered_single_level (void)
781 GtkTreeIter iter1, iter2, iter3, iter4, iter5;
783 GtkTreeModelRefCount *ref_model;
784 GtkTreeModel *sort_model;
785 GtkWidget *tree_view;
786 SignalMonitor *monitor;
788 GType column_types[] = { G_TYPE_INT };
796 model = gtk_tree_model_ref_count_new ();
797 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
799 gtk_tree_store_set_column_types (GTK_TREE_STORE (model), 1,
802 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter1, NULL, 0,
804 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter2, NULL, 1,
806 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter3, NULL, 2,
808 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter4, NULL, 3,
810 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter5, NULL, 4,
813 sort_model = gtk_tree_model_sort_new_with_model (model);
814 tree_view = gtk_tree_view_new_with_model (sort_model);
816 monitor = signal_monitor_new (sort_model);
819 path = gtk_tree_path_new ();
820 signal_monitor_append_signal_reordered (monitor,
823 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
824 0, GTK_SORT_ASCENDING);
825 signal_monitor_assert_is_empty (monitor);
826 check_sort_order (sort_model, GTK_SORT_ASCENDING, NULL);
828 signal_monitor_append_signal_reordered (monitor,
831 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
832 0, GTK_SORT_DESCENDING);
833 signal_monitor_assert_is_empty (monitor);
834 check_sort_order (sort_model, GTK_SORT_DESCENDING, NULL);
836 signal_monitor_append_signal_reordered (monitor,
839 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
840 GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
842 signal_monitor_assert_is_empty (monitor);
844 gtk_tree_path_free (path);
845 signal_monitor_free (monitor);
847 gtk_widget_destroy (tree_view);
848 g_object_unref (sort_model);
850 assert_entire_model_unreferenced (ref_model);
852 g_object_unref (ref_model);
856 rows_reordered_two_levels (void)
858 GtkTreeIter iter1, iter2, iter3, iter4, iter5;
859 GtkTreeIter citer1, citer2, citer3, citer4, citer5;
861 GtkTreeModelRefCount *ref_model;
862 GtkTreeModel *sort_model;
863 GtkWidget *tree_view;
864 SignalMonitor *monitor;
865 GtkTreePath *path, *child_path;
866 GType column_types[] = { G_TYPE_INT };
874 model = gtk_tree_model_ref_count_new ();
875 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
877 gtk_tree_store_set_column_types (GTK_TREE_STORE (model), 1,
880 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter1, NULL, 0,
882 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter2, NULL, 1,
884 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter3, NULL, 2,
886 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter4, NULL, 3,
888 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter5, NULL, 4,
892 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer1, &iter1, 0,
894 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer2, &iter1, 1,
896 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer3, &iter1, 2,
898 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer4, &iter1, 3,
900 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &citer5, &iter1, 4,
903 sort_model = gtk_tree_model_sort_new_with_model (model);
904 tree_view = gtk_tree_view_new_with_model (sort_model);
905 gtk_tree_view_expand_all (GTK_TREE_VIEW (tree_view));
907 monitor = signal_monitor_new (sort_model);
910 path = gtk_tree_path_new ();
911 child_path = gtk_tree_path_new_from_indices (2, -1);
912 signal_monitor_append_signal_reordered (monitor,
915 signal_monitor_append_signal_reordered (monitor,
917 child_path, order[0], 5);
918 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
919 0, GTK_SORT_ASCENDING);
920 signal_monitor_assert_is_empty (monitor);
921 check_sort_order (sort_model, GTK_SORT_ASCENDING, NULL);
922 /* The parent node of the child level moved due to sorting */
923 check_sort_order (sort_model, GTK_SORT_ASCENDING, "2");
925 signal_monitor_append_signal_reordered (monitor,
928 signal_monitor_append_signal_reordered (monitor,
930 child_path, order[1], 5);
931 gtk_tree_path_free (child_path);
932 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
933 0, GTK_SORT_DESCENDING);
934 signal_monitor_assert_is_empty (monitor);
935 check_sort_order (sort_model, GTK_SORT_DESCENDING, NULL);
936 /* The parent node of the child level moved due to sorting */
937 check_sort_order (sort_model, GTK_SORT_DESCENDING, "2");
939 child_path = gtk_tree_path_new_from_indices (0, -1);
940 signal_monitor_append_signal_reordered (monitor,
943 signal_monitor_append_signal_reordered (monitor,
945 child_path, order[2], 5);
946 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
947 GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
949 signal_monitor_assert_is_empty (monitor);
951 gtk_tree_path_free (path);
952 gtk_tree_path_free (child_path);
953 signal_monitor_free (monitor);
955 gtk_widget_destroy (tree_view);
956 g_object_unref (sort_model);
958 g_object_unref (ref_model);
964 GtkTreeIter iter1, iter2, iter3, iter4, iter5, new_iter;
966 GtkTreeModelRefCount *ref_model;
967 GtkTreeModel *sort_model;
968 GtkWidget *tree_view;
969 SignalMonitor *monitor;
971 GType column_types[] = { G_TYPE_INT };
972 int order0[] = { 1, 2, 3, 0, 4, 5, 6 };
974 model = gtk_tree_model_ref_count_new ();
975 ref_model = GTK_TREE_MODEL_REF_COUNT (model);
977 gtk_tree_store_set_column_types (GTK_TREE_STORE (model), 1,
980 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter1, NULL, 0,
982 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter2, NULL, 1,
984 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter3, NULL, 2,
986 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter4, NULL, 3,
988 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &iter5, NULL, 4,
991 sort_model = gtk_tree_model_sort_new_with_model (model);
992 tree_view = gtk_tree_view_new_with_model (sort_model);
995 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
996 0, GTK_SORT_ASCENDING);
997 check_sort_order (sort_model, GTK_SORT_ASCENDING, NULL);
999 monitor = signal_monitor_new (sort_model);
1001 /* Insert a new item */
1002 signal_monitor_append_signal (monitor, ROW_INSERTED, "4");
1003 gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), &new_iter, NULL,
1005 signal_monitor_assert_is_empty (monitor);
1006 check_sort_order (sort_model, GTK_SORT_ASCENDING, NULL);
1008 /* Sort the tree sort and append a new item */
1009 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model),
1010 0, GTK_SORT_ASCENDING);
1011 check_sort_order (model, GTK_SORT_ASCENDING, NULL);
1013 path = gtk_tree_path_new ();
1014 signal_monitor_append_signal (monitor, ROW_INSERTED, "0");
1015 signal_monitor_append_signal_reordered (monitor,
1018 signal_monitor_append_signal (monitor, ROW_CHANGED, "3");
1019 gtk_tree_store_append (GTK_TREE_STORE (model), &new_iter, NULL);
1020 gtk_tree_store_set (GTK_TREE_STORE (model), &new_iter, 0, 35, -1);
1021 check_sort_order (model, GTK_SORT_ASCENDING, NULL);
1022 check_sort_order (sort_model, GTK_SORT_ASCENDING, NULL);
1024 gtk_tree_path_free (path);
1025 signal_monitor_free (monitor);
1027 gtk_widget_destroy (tree_view);
1028 g_object_unref (sort_model);
1030 g_object_unref (ref_model);
1035 specific_bug_300089 (void)
1037 /* Test case for GNOME Bugzilla bug 300089. Written by
1040 GtkTreeModel *sort_model, *child_model;
1042 GtkTreeIter iter, iter2, sort_iter;
1044 g_test_bug ("300089");
1046 child_model = GTK_TREE_MODEL (gtk_tree_store_new (1, G_TYPE_STRING));
1048 gtk_tree_store_append (GTK_TREE_STORE (child_model), &iter, NULL);
1049 gtk_tree_store_set (GTK_TREE_STORE (child_model), &iter, 0, "A", -1);
1050 gtk_tree_store_append (GTK_TREE_STORE (child_model), &iter, NULL);
1051 gtk_tree_store_set (GTK_TREE_STORE (child_model), &iter, 0, "B", -1);
1053 gtk_tree_store_append (GTK_TREE_STORE (child_model), &iter2, &iter);
1054 gtk_tree_store_set (GTK_TREE_STORE (child_model), &iter2, 0, "D", -1);
1055 gtk_tree_store_append (GTK_TREE_STORE (child_model), &iter2, &iter);
1056 gtk_tree_store_set (GTK_TREE_STORE (child_model), &iter2, 0, "E", -1);
1058 gtk_tree_store_append (GTK_TREE_STORE (child_model), &iter, NULL);
1059 gtk_tree_store_set (GTK_TREE_STORE (child_model), &iter, 0, "C", -1);
1062 sort_model = GTK_TREE_MODEL (gtk_tree_model_sort_new_with_model (child_model));
1063 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
1064 0, GTK_SORT_ASCENDING);
1066 path = gtk_tree_path_new_from_indices (1, 1, -1);
1068 /* make sure a level is constructed */
1069 gtk_tree_model_get_iter (sort_model, &sort_iter, path);
1071 /* change the "E" row in a way that causes it to change position */
1072 gtk_tree_model_get_iter (child_model, &iter, path);
1073 gtk_tree_store_set (GTK_TREE_STORE (child_model), &iter, 0, "A", -1);
1077 specific_bug_364946 (void)
1079 /* This is a test case for GNOME Bugzilla bug 364946. It was written
1080 * by Andreas Koehler.
1082 GtkTreeStore *store;
1083 GtkTreeIter a, aa, aaa, aab, iter;
1084 GtkTreeModel *s_model;
1086 g_test_bug ("364946");
1088 store = gtk_tree_store_new (1, G_TYPE_STRING);
1090 gtk_tree_store_append (store, &a, NULL);
1091 gtk_tree_store_set (store, &a, 0, "0", -1);
1093 gtk_tree_store_append (store, &aa, &a);
1094 gtk_tree_store_set (store, &aa, 0, "0:0", -1);
1096 gtk_tree_store_append (store, &aaa, &aa);
1097 gtk_tree_store_set (store, &aaa, 0, "0:0:0", -1);
1099 gtk_tree_store_append (store, &aab, &aa);
1100 gtk_tree_store_set (store, &aab, 0, "0:0:1", -1);
1102 s_model = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (store));
1103 gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (s_model), 0,
1104 GTK_SORT_ASCENDING);
1106 gtk_tree_model_get_iter_from_string (s_model, &iter, "0:0:0");
1108 gtk_tree_store_set (store, &aaa, 0, "0:0:0", -1);
1109 gtk_tree_store_remove (store, &aaa);
1110 gtk_tree_store_remove (store, &aab);
1112 gtk_tree_model_sort_clear_cache (GTK_TREE_MODEL_SORT (s_model));
1118 register_sort_model_tests (void)
1120 g_test_add_func ("/TreeModelSort/ref-count/single-level",
1121 ref_count_single_level);
1122 g_test_add_func ("/TreeModelSort/ref-count/two-levels",
1123 ref_count_two_levels);
1124 g_test_add_func ("/TreeModelSort/ref-count/three-levels",
1125 ref_count_three_levels);
1126 g_test_add_func ("/TreeModelSort/ref-count/delete-row",
1127 ref_count_delete_row);
1128 g_test_add_func ("/TreeModelSort/ref-count/cleanup",
1130 g_test_add_func ("/TreeModelSort/ref-count/row-ref",
1132 g_test_add_func ("/TreeModelSort/ref-count/reorder/single-level",
1133 ref_count_reorder_single);
1134 g_test_add_func ("/TreeModelSort/ref-count/reorder/two-levels",
1135 ref_count_reorder_two);
1137 g_test_add_func ("/TreeModelSort/rows-reordered/single-level",
1138 rows_reordered_single_level);
1139 g_test_add_func ("/TreeModelSort/rows-reordered/two-levels",
1140 rows_reordered_two_levels);
1141 g_test_add_func ("/TreeModelSort/sorted-insert",
1144 g_test_add_func ("/TreeModelSort/specific/bug-300089",
1145 specific_bug_300089);
1146 g_test_add_func ("/TreeModelSort/specific/bug-364946",
1147 specific_bug_364946);