From 07d99d26b2c66473b7714ab01c0d83aac4e2aab4 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Sun, 10 Jul 2011 17:35:49 +0200 Subject: [PATCH] treemodelrefcount: make it possible to assert within check functions --- gtk/tests/gtktreemodelrefcount.c | 24 ++++++++++++++------ gtk/tests/gtktreemodelrefcount.h | 39 ++++++++++++-------------------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/gtk/tests/gtktreemodelrefcount.c b/gtk/tests/gtktreemodelrefcount.c index b4945402c2..974a896ad0 100644 --- a/gtk/tests/gtktreemodelrefcount.c +++ b/gtk/tests/gtktreemodelrefcount.c @@ -217,7 +217,8 @@ gtk_tree_model_ref_count_dump (GtkTreeModelRefCount *ref_model) static gboolean check_iter (GtkTreeModelRefCount *ref_model, GtkTreeIter *iter, - gint expected_ref_count) + gint expected_ref_count, + gboolean may_assert) { NodeInfo *info; @@ -227,9 +228,16 @@ check_iter (GtkTreeModelRefCount *ref_model, if (expected_ref_count == 0) return TRUE; else - return FALSE; + { + if (may_assert) + g_error ("Expected ref count %d, but node has never been referenced.\n", expected_ref_count); + return FALSE; + } } + if (may_assert) + g_assert_cmpint (expected_ref_count, ==, info->ref_count); + return expected_ref_count == info->ref_count; } @@ -237,7 +245,8 @@ gboolean gtk_tree_model_ref_count_check_level (GtkTreeModelRefCount *ref_model, GtkTreeIter *parent, gint expected_ref_count, - gboolean recurse) + gboolean recurse, + gboolean may_assert) { GtkTreeIter iter; @@ -247,7 +256,7 @@ gtk_tree_model_ref_count_check_level (GtkTreeModelRefCount *ref_model, do { - if (!check_iter (ref_model, &iter, expected_ref_count)) + if (!check_iter (ref_model, &iter, expected_ref_count, may_assert)) return FALSE; if (recurse && @@ -255,7 +264,7 @@ gtk_tree_model_ref_count_check_level (GtkTreeModelRefCount *ref_model, { if (!gtk_tree_model_ref_count_check_level (ref_model, &iter, expected_ref_count, - recurse)) + recurse, may_assert)) return FALSE; } } @@ -267,7 +276,8 @@ gtk_tree_model_ref_count_check_level (GtkTreeModelRefCount *ref_model, gboolean gtk_tree_model_ref_count_check_node (GtkTreeModelRefCount *ref_model, GtkTreeIter *iter, - gint expected_ref_count) + gint expected_ref_count, + gboolean may_assert) { - return check_iter (ref_model, iter, expected_ref_count); + return check_iter (ref_model, iter, expected_ref_count, may_assert); } diff --git a/gtk/tests/gtktreemodelrefcount.h b/gtk/tests/gtktreemodelrefcount.h index 5d457622b8..f32c8bd2b8 100644 --- a/gtk/tests/gtktreemodelrefcount.h +++ b/gtk/tests/gtktreemodelrefcount.h @@ -57,10 +57,12 @@ void gtk_tree_model_ref_count_dump (GtkTreeModelRefCount *ref_mo gboolean gtk_tree_model_ref_count_check_level (GtkTreeModelRefCount *ref_model, GtkTreeIter *parent, gint expected_ref_count, - gboolean recurse); + gboolean recurse, + gboolean may_assert); gboolean gtk_tree_model_ref_count_check_node (GtkTreeModelRefCount *ref_model, GtkTreeIter *iter, - gint expected_ref_count); + gint expected_ref_count, + gboolean may_assert); /* A couple of helpers for the tests. Since this model will never be used * outside of unit tests anyway, it is probably fine to have these here @@ -70,35 +72,27 @@ gboolean gtk_tree_model_ref_count_check_node (GtkTreeModelRefCount *ref_mo static inline void assert_entire_model_unreferenced (GtkTreeModelRefCount *ref_model) { - g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL, 0, - TRUE), - ==, TRUE); + gtk_tree_model_ref_count_check_level (ref_model, NULL, 0, TRUE, TRUE); } static inline void assert_root_level_unreferenced (GtkTreeModelRefCount *ref_model) { - g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL, 0, - FALSE), - ==, TRUE); + gtk_tree_model_ref_count_check_level (ref_model, NULL, 0, FALSE, TRUE); } static inline void assert_level_unreferenced (GtkTreeModelRefCount *ref_model, GtkTreeIter *iter) { - g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, iter, - 0, FALSE), - ==, TRUE); + gtk_tree_model_ref_count_check_level (ref_model, iter, 0, FALSE, TRUE); } static inline void assert_entire_model_referenced (GtkTreeModelRefCount *ref_model, gint ref_count) { - g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL, - ref_count, TRUE), - ==, TRUE); + gtk_tree_model_ref_count_check_level (ref_model, NULL, ref_count, TRUE, TRUE); } static inline void @@ -106,7 +100,8 @@ assert_not_entire_model_referenced (GtkTreeModelRefCount *ref_model, gint ref_count) { g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL, - ref_count, TRUE), + ref_count, + TRUE, FALSE), ==, FALSE); } @@ -114,9 +109,8 @@ static inline void assert_root_level_referenced (GtkTreeModelRefCount *ref_model, gint ref_count) { - g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, NULL, - ref_count, FALSE), - ==, TRUE); + gtk_tree_model_ref_count_check_level (ref_model, NULL, ref_count, + FALSE, TRUE); } static inline void @@ -124,9 +118,8 @@ assert_level_referenced (GtkTreeModelRefCount *ref_model, gint ref_count, GtkTreeIter *iter) { - g_assert_cmpint (gtk_tree_model_ref_count_check_level (ref_model, iter, - ref_count, FALSE), - ==, TRUE); + gtk_tree_model_ref_count_check_level (ref_model, iter, ref_count, + FALSE, TRUE); } static inline void @@ -134,9 +127,7 @@ assert_node_ref_count (GtkTreeModelRefCount *ref_model, GtkTreeIter *iter, gint ref_count) { - g_assert_cmpint (gtk_tree_model_ref_count_check_node (ref_model, iter, - ref_count), - ==, TRUE); + gtk_tree_model_ref_count_check_node (ref_model, iter, ref_count, TRUE); }