[gtk/matthiasc/for-master] testsuite: Improve coverage for GtkExpression



commit 26150d84897d4ef41e855d6c38cf647156f6d6d6
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Oct 30 21:34:23 2020 -0400

    testsuite: Improve coverage for GtkExpression

 testsuite/gtk/expression.c | 70 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 69 insertions(+), 1 deletion(-)
---
diff --git a/testsuite/gtk/expression.c b/testsuite/gtk/expression.c
index a874e562a4..cea66f3ae9 100644
--- a/testsuite/gtk/expression.c
+++ b/testsuite/gtk/expression.c
@@ -61,6 +61,16 @@ test_property (void)
   g_object_unref (filter);
 }
 
+static void
+test_interface_property (void)
+{
+  GtkExpression *expr;
+
+  expr = gtk_property_expression_new (GTK_TYPE_ORIENTABLE, NULL, "orientation");
+  g_assert_cmpstr (gtk_property_expression_get_pspec (expr)->name, ==, "orientation");
+  gtk_expression_unref (expr);
+}
+
 static char *
 print_filter_info (GtkStringFilter         *filter,
                    const char              *search,
@@ -75,7 +85,7 @@ print_filter_info (GtkStringFilter         *filter,
 }
 
 static void
-test_closure (void)
+test_cclosure (void)
 {
   GValue value = G_VALUE_INIT;
   GtkExpression *expr, *pexpr[3];
@@ -127,11 +137,34 @@ test_closure (void)
   g_object_unref (filter);
 }
 
+static char *
+make_string (void)
+{
+  return g_strdup ("Hello");
+}
+
+static void
+test_closure (void)
+{
+  GValue value = G_VALUE_INIT;
+  GtkExpression *expr;
+  GClosure *closure;
+
+  closure = g_cclosure_new (G_CALLBACK (make_string), NULL, NULL);
+  expr = gtk_closure_expression_new (G_TYPE_STRING, closure, 0, NULL);
+  g_assert (gtk_expression_evaluate (expr, NULL, &value));
+  g_assert_cmpstr (g_value_get_string (&value), ==, "Hello");
+  g_value_unset (&value);
+
+  gtk_expression_unref (expr);
+}
+
 static void
 test_constant (void)
 {
   GtkExpression *expr;
   GValue value = G_VALUE_INIT;
+  const GValue *v;
   gboolean res;
 
   expr = gtk_constant_expression_new (G_TYPE_INT, 22);
@@ -142,6 +175,9 @@ test_constant (void)
   g_assert_true (res);
   g_assert_cmpint (g_value_get_int (&value), ==, 22);
 
+  v = gtk_constant_expression_get_value (expr);
+  g_assert_cmpint (g_value_get_int (v), ==, 22);
+
   gtk_expression_unref (expr);
 }
 
@@ -155,6 +191,7 @@ test_object (void)
   GObject *obj;
   GValue value = G_VALUE_INIT;
   gboolean res;
+  GObject *o;
 
   obj = G_OBJECT (gtk_string_filter_new (NULL));
 
@@ -167,6 +204,9 @@ test_object (void)
   g_assert_true (g_value_get_object (&value) == obj);
   g_value_unset (&value);
 
+  o = gtk_object_expression_get_object (expr);
+  g_assert_true (o == obj);
+
   g_clear_object (&obj);
   res = gtk_expression_evaluate (expr, NULL, &value);
   g_assert_false (res);
@@ -650,6 +690,9 @@ test_binds (void)
 
   expr2 = gtk_property_expression_new (GTK_TYPE_STRING_FILTER, gtk_expression_ref (filter2_expr), 
"ignore-case");
 
+  g_assert_true (gtk_property_expression_get_expression (expr2) == filter2_expr);
+  g_assert_cmpstr (gtk_property_expression_get_pspec (expr2)->name, ==, "ignore-case");
+
   gtk_expression_bind (gtk_expression_ref (expr), filter3, "search", NULL);
   gtk_expression_bind (gtk_expression_ref (expr2), filter3, "ignore-case", NULL);
 
@@ -704,6 +747,28 @@ test_bind_object (void)
   g_object_unref (model);
 }
 
+static void
+test_value (void)
+{
+  GValue value = G_VALUE_INIT;
+  GtkExpression *expr;
+
+  expr = gtk_constant_expression_new (G_TYPE_INT, 22);
+
+  g_value_init (&value, GTK_TYPE_EXPRESSION);
+  gtk_value_take_expression (&value, expr);
+  g_assert_true (G_VALUE_TYPE (&value) == GTK_TYPE_EXPRESSION);
+
+  expr = gtk_value_dup_expression (&value);
+  gtk_expression_unref (expr);
+
+  expr = gtk_constant_expression_new (G_TYPE_INT, 23);
+  gtk_value_set_expression (&value, expr);
+  gtk_expression_unref (expr);
+
+  g_value_unset (&value);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -711,6 +776,8 @@ main (int argc, char *argv[])
   setlocale (LC_ALL, "C");
 
   g_test_add_func ("/expression/property", test_property);
+  g_test_add_func ("/expression/interface-property", test_interface_property);
+  g_test_add_func ("/expression/cclosure", test_cclosure);
   g_test_add_func ("/expression/closure", test_closure);
   g_test_add_func ("/expression/constant", test_constant);
   g_test_add_func ("/expression/constant-watch-this-destroyed", test_constant_watch_this_destroyed);
@@ -726,6 +793,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/expression/double-bind", test_double_bind);
   g_test_add_func ("/expression/binds", test_binds);
   g_test_add_func ("/expression/bind-object", test_bind_object);
+  g_test_add_func ("/expression/value", test_value);
 
   return g_test_run ();
 }


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