[gtk+] treemodelrefcount: make it possible to assert within check functions



commit 07d99d26b2c66473b7714ab01c0d83aac4e2aab4
Author: Kristian Rietveld <kris gtk org>
Date:   Sun Jul 10 17:35:49 2011 +0200

    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 b494540..974a896 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 5d45762..f32c8bd 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);
 }
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]