From 5338eeee1f584f1443b42d0d427140997c4bc265 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Fri, 24 Nov 2017 21:58:39 -0800 Subject: [PATCH] tests: improve model filters --- tests/test-model-filter.c | 43 ++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/tests/test-model-filter.c b/tests/test-model-filter.c index 2860d141..4d42723e 100644 --- a/tests/test-model-filter.c +++ b/tests/test-model-filter.c @@ -60,6 +60,9 @@ test_basic (void) model = g_list_store_new (TEST_TYPE_ITEM); g_assert (model); + filter = sp_model_filter_new (G_LIST_MODEL (model)); + g_assert (filter); + for (i = 0; i < 1000; i++) { g_autoptr(TestItem) val = test_item_new (i); @@ -68,14 +71,20 @@ test_basic (void) } g_assert_cmpint (1000, ==, g_list_model_get_n_items (G_LIST_MODEL (model))); - - filter = sp_model_filter_new (G_LIST_MODEL (model)); - g_assert (filter); + g_assert_cmpint (1000, ==, g_list_model_get_n_items (G_LIST_MODEL (filter))); g_assert_cmpint (1000, ==, g_list_model_get_n_items (G_LIST_MODEL (filter))); sp_model_filter_set_filter_func (filter, filter_func1, NULL, NULL); g_assert_cmpint (500, ==, g_list_model_get_n_items (G_LIST_MODEL (filter))); + for (i = 0; i < 500; i++) + { + g_autoptr(TestItem) item = g_list_model_get_item (G_LIST_MODEL (filter), i); + + g_assert (TEST_IS_ITEM (item)); + g_assert (filter_func1 (G_OBJECT (item), NULL)); + } + for (i = 0; i < 1000; i += 2) g_list_store_remove (model, 998 - i); @@ -115,10 +124,10 @@ filter_keyword_cb (GObject *object, gpointer user_data) { SpProcessModelItem *item = SP_PROCESS_MODEL_ITEM (object); - const gchar *needle = user_data; const gchar *haystack = sp_process_model_item_get_command_line (item); + const gchar *needle = user_data; - return NULL != strstr (haystack, needle); + return strstr (haystack, needle) != NULL; } static void @@ -128,7 +137,7 @@ test_process (void) SpModelFilter *filter; static gchar *searches[] = { "a", "b", "foo", "bar", "gnome", "gnome-test", - "gsd", "gsd-", "libexec", "/", ":", + "libexec", "/", ":", "gsd-", }; filter = sp_model_filter_new (G_LIST_MODEL (model)); @@ -137,12 +146,22 @@ test_process (void) for (guint i = 0; i < G_N_ELEMENTS (searches); i++) { - sp_model_filter_set_filter_func (filter, - filter_keyword_cb, - g_strdup (searches[i]), - g_free); - sp_model_filter_invalidate (filter); - sp_process_model_reload (model); + const gchar *needle = searches[i]; + guint n_items; + + sp_model_filter_set_filter_func (filter, filter_keyword_cb, g_strdup (needle), g_free); + + n_items = g_list_model_get_n_items (G_LIST_MODEL (filter)); + + for (guint j = 0; j < n_items; j++) + { + g_autoptr(SpProcessModelItem) item = g_list_model_get_item (G_LIST_MODEL (filter), j); + + g_assert (SP_IS_PROCESS_MODEL_ITEM (item)); + g_assert (filter_keyword_cb (G_OBJECT (item), (gchar *)needle)); + + //g_print ("%s: %s\n", needle, sp_process_model_item_get_command_line (item)); + } } g_object_unref (filter);