[gtk/matthiasc/for-master: 10/10] bitset: Add more tests



commit 370fb5e5b0ee490ce51123727b3ab5c95849e985
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Jun 28 21:39:02 2020 -0400

    bitset: Add more tests
    
    Add some tests for rectangles, and for iters.

 testsuite/gtk/bitset.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 133 insertions(+), 5 deletions(-)
---
diff --git a/testsuite/gtk/bitset.c b/testsuite/gtk/bitset.c
index de7d4654eb..e5e641a17b 100644
--- a/testsuite/gtk/bitset.c
+++ b/testsuite/gtk/bitset.c
@@ -345,7 +345,7 @@ test_subtract (void)
           gtk_bitset_unref (testset);
           gtk_bitset_unref (jset);
         }
-      
+
       gtk_bitset_unref (iset);
     }
 }
@@ -404,11 +404,7 @@ test_shift_right (void)
           for (k = min; k <= max; k++)
             {
               if (k <= G_MAXUINT - j)
-                {
-                if (gtk_bitset_contains (iset, k) != gtk_bitset_contains (testset, k + j))
-                  g_print ("right-shift fail set %u shift %u test %u\n", i, j, k);
                 g_assert_cmpint (gtk_bitset_contains (iset, k), ==, gtk_bitset_contains (testset, k + j));
-                }
             }
 
           gtk_bitset_unref (testset);
@@ -418,6 +414,135 @@ test_shift_right (void)
     }
 }
 
+static void
+test_slice (void)
+{
+  GtkBitset *set;
+  guint i;
+
+  set = gtk_bitset_new_empty ();
+
+  gtk_bitset_add_range (set, 10, 30);
+
+  gtk_bitset_slice (set, 20, 10, 20);
+
+  for (i = 0; i < 60; i++)
+    g_assert_cmpint (gtk_bitset_contains (set, i), ==, (i >= 10 && i < 20) ||
+                                                       (i >= 40 && i < 50));
+
+  gtk_bitset_slice (set, 25, 10, 0);
+
+  for (i = 0; i < 60; i++)
+    g_assert_cmpint (gtk_bitset_contains (set, i), ==, (i >= 10 && i < 20) ||
+                                                       (i >= 30 && i < 40));
+
+  gtk_bitset_unref (set);
+}
+
+static void
+test_rectangle (void)
+{
+  GtkBitset *set;
+  GString *s;
+  guint i, j;
+
+  set = gtk_bitset_new_empty ();
+
+  gtk_bitset_add_rectangle    (set,  8, 5, 5, 7);
+  gtk_bitset_remove_rectangle (set, 16, 3, 3, 7);
+  gtk_bitset_add_rectangle    (set, 24, 1, 1, 7);
+
+  s = g_string_new ("");
+  for (i = 0; i < 7; i++)
+    {
+      for (j = 0; j < 7; j++)
+        g_string_append_printf (s, "%c ",
+                                gtk_bitset_contains (set, i * 7 + j) ? '*' : ' ');
+      g_string_append (s, "\n");
+    }
+  g_assert_cmpstr (s->str, ==,
+      "              \n"
+      "  * * * * *   \n"
+      "  *       *   \n"
+      "  *   *   *   \n"
+      "  *       *   \n"
+      "  * * * * *   \n"
+      "              \n");
+
+  g_string_free (s, TRUE);
+  gtk_bitset_unref (set);
+}
+
+static void
+test_iter (void)
+{
+  GtkBitset *set;
+  GtkBitsetIter iter;
+  gboolean ret;
+  guint value;
+
+  set = gtk_bitset_new_empty ();
+
+  ret = gtk_bitset_iter_init_first (&iter, set, &value);
+  g_assert_false (ret);
+
+  g_assert_false (gtk_bitset_iter_is_valid (&iter));
+  g_assert_cmpuint (gtk_bitset_iter_get_value (&iter), ==, 0);
+  g_assert_false (gtk_bitset_iter_previous (&iter, &value));
+  g_assert_false (gtk_bitset_iter_next (&iter, &value));
+
+  ret = gtk_bitset_iter_init_last (&iter, set, &value);
+  g_assert_false (ret);
+
+  g_assert_false (gtk_bitset_iter_is_valid (&iter));
+  g_assert_cmpuint (gtk_bitset_iter_get_value (&iter), ==, 0);
+  g_assert_false (gtk_bitset_iter_previous (&iter, &value));
+  g_assert_false (gtk_bitset_iter_next (&iter, &value));
+
+  ret = gtk_bitset_iter_init_at (&iter, set, 0, &value);
+
+  g_assert_false (gtk_bitset_iter_is_valid (&iter));
+  g_assert_cmpuint (gtk_bitset_iter_get_value (&iter), ==, 0);
+  g_assert_false (gtk_bitset_iter_previous (&iter, &value));
+  g_assert_false (gtk_bitset_iter_next (&iter, &value));
+
+  gtk_bitset_add_range_closed (set, 10, 20);
+
+  ret = gtk_bitset_iter_init_first (&iter, set, &value);
+  g_assert_true (ret);
+  g_assert_true (gtk_bitset_iter_is_valid (&iter));
+  g_assert_cmpuint (value, ==, 10);
+  g_assert_cmpuint (gtk_bitset_iter_get_value (&iter), ==, 10);
+
+  ret = gtk_bitset_iter_next (&iter, &value);
+  g_assert_true (ret);
+  g_assert_cmpuint (value, ==, 11);
+
+  ret = gtk_bitset_iter_next (&iter, NULL);
+  g_assert_true (ret);
+  g_assert_cmpuint (gtk_bitset_iter_get_value (&iter), ==, 12);
+
+  ret = gtk_bitset_iter_init_last (&iter, set, &value);
+  g_assert_true (ret);
+  g_assert_true (gtk_bitset_iter_is_valid (&iter));
+  g_assert_cmpuint (value, ==, 20);
+
+  ret = gtk_bitset_iter_init_at (&iter, set, 5, NULL);
+  g_assert_true (ret);
+  g_assert_true (gtk_bitset_iter_is_valid (&iter));
+  g_assert_cmpuint (gtk_bitset_iter_get_value (&iter), ==, 10);
+
+  ret = gtk_bitset_iter_previous (&iter, NULL);
+  g_assert_false (ret);
+
+  g_assert_false (gtk_bitset_iter_is_valid (&iter));
+
+  ret = gtk_bitset_iter_init_at (&iter, set, 100, NULL);
+  g_assert_false (ret);
+
+  gtk_bitset_unref (set);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -434,6 +559,9 @@ main (int argc, char *argv[])
   g_test_add_func ("/bitset/subtract", test_subtract);
   g_test_add_func ("/bitset/shift-left", test_shift_left);
   g_test_add_func ("/bitset/shift-right", test_shift_right);
+  g_test_add_func ("/bitset/slice", test_slice);
+  g_test_add_func ("/bitset/rectangle", test_rectangle);
+  g_test_add_func ("/bitset/iter", test_iter);
 
   return g_test_run ();
 }


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