[gtk/matthiasc/for-master: 2/3] bitset: Add more tests
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/for-master: 2/3] bitset: Add more tests
- Date: Mon, 29 Jun 2020 02:40:00 +0000 (UTC)
commit c4e8218f497acfbe11cffbb61036c3bb73928fe8
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]