[gtksourceview/wip/chergert/gsv-gtk4: 217/259] tests: make completion test more robust




commit 4de60ee43fea91114971dd426e9c33d4e90c27be
Author: Christian Hergert <chergert redhat com>
Date:   Tue Sep 1 14:02:56 2020 -0700

    tests: make completion test more robust

 tests/test-completion.c | 88 +++++++++++++++++++++++++++----------------------
 1 file changed, 48 insertions(+), 40 deletions(-)
---
diff --git a/tests/test-completion.c b/tests/test-completion.c
index db67a809..a5face65 100644
--- a/tests/test-completion.c
+++ b/tests/test-completion.c
@@ -72,14 +72,6 @@ test_proposal_new (void)
        return g_object_new (TEST_TYPE_PROPOSAL, NULL);
 }
 
-typedef struct _TestProvider TestProvider;
-typedef struct _TestProviderClass TestProviderClass;
-
-static GtkSourceCompletionWords *word_provider;
-static TestProvider *fixed_provider;
-static TestProvider *random_provider;
-static GMainLoop *main_loop;
-
 struct _TestProvider
 {
        GObject parent;
@@ -104,7 +96,14 @@ struct _TestProviderClass
 };
 
 static void test_provider_iface_init (GtkSourceCompletionProviderInterface *iface);
-GType test_provider_get_type (void);
+
+#define TEST_TYPE_PROVIDER (test_provider_get_type())
+G_DECLARE_FINAL_TYPE (TestProvider, test_provider, TEST, PROVIDER, GObject)
+
+static GtkSourceCompletionWords *word_provider;
+static TestProvider *fixed_provider;
+static TestProvider *random_provider;
+static GMainLoop *main_loop;
 
 G_DEFINE_TYPE_WITH_CODE (TestProvider,
                         test_provider,
@@ -194,46 +193,55 @@ test_provider_display (GtkSourceCompletionProvider *provider,
                        GtkSourceCompletionProposal *proposal,
                        GtkSourceCompletionCell     *cell)
 {
-       if (TEST_IS_PROPOSAL (proposal))
-       {
-               TestProposal *p = TEST_PROPOSAL (proposal);
-               GtkSourceCompletionColumn column;
+       TestProposal *p = (TestProposal *)proposal;
+       GtkSourceCompletionColumn column;
 
-               column = gtk_source_completion_cell_get_column (cell);
+       g_assert (TEST_IS_PROVIDER (provider));
+       g_assert (GTK_SOURCE_IS_COMPLETION_CONTEXT (context));
+       g_assert (TEST_IS_PROPOSAL (p));
+       g_assert (GTK_SOURCE_IS_COMPLETION_CELL (cell));
 
-               if (column == GTK_SOURCE_COMPLETION_COLUMN_TYPED_TEXT)
+       column = gtk_source_completion_cell_get_column (cell);
+
+       if (column == GTK_SOURCE_COMPLETION_COLUMN_TYPED_TEXT)
+       {
+               g_assert (p->markup || p->text || p->label);
+
+               if (p->markup)
+                       gtk_source_completion_cell_set_markup (cell, p->markup);
+               else if (p->label)
+                       gtk_source_completion_cell_set_text (cell, p->label);
+               else
+                       gtk_source_completion_cell_set_text (cell, p->text);
+       }
+       else if (column == GTK_SOURCE_COMPLETION_COLUMN_COMMENT ||
+                column == GTK_SOURCE_COMPLETION_COLUMN_DETAILS)
+       {
+               gchar *str = g_strdup (p->info);
+
+               if (str != NULL)
                {
-                       if (p->markup)
-                               gtk_source_completion_cell_set_markup (cell, p->markup);
-                       else if (p->label)
-                               gtk_source_completion_cell_set_text (cell, p->label);
-                       else
-                               gtk_source_completion_cell_set_text (cell, p->text);
+                       g_strstrip (str);
                }
-               else if (column == GTK_SOURCE_COMPLETION_COLUMN_COMMENT ||
-                        column == GTK_SOURCE_COMPLETION_COLUMN_DETAILS)
+
+               if (str != NULL)
                {
-                       if (p->info)
-                       {
-                               gchar *str = g_strstrip (g_strdup (p->info));
-                               gtk_source_completion_cell_set_text (cell, str);
-                               g_free (str);
-                       }
-                       else
-                       {
-                               gtk_source_completion_cell_set_text (cell, NULL);
-                       }
+                       gtk_source_completion_cell_set_text (cell, str);
                }
-               else if (column == GTK_SOURCE_COMPLETION_COLUMN_ICON)
+               else
                {
-                       if (p->icon_name)
-                               gtk_source_completion_cell_set_icon_name (cell, p->icon_name);
-                       else if (p->gicon)
-                               gtk_source_completion_cell_set_gicon (cell, p->gicon);
-                       else
-                               gtk_source_completion_cell_set_icon_name (cell, NULL);
+                       gtk_source_completion_cell_set_text (cell, NULL);
                }
        }
+       else if (column == GTK_SOURCE_COMPLETION_COLUMN_ICON)
+       {
+               if (p->icon_name)
+                       gtk_source_completion_cell_set_icon_name (cell, p->icon_name);
+               else if (p->gicon)
+                       gtk_source_completion_cell_set_gicon (cell, p->gicon);
+               else
+                       gtk_source_completion_cell_set_icon_name (cell, NULL);
+       }
 }
 
 static void


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