[gtk/prop-list] Add some tests for expression binding
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/prop-list] Add some tests for expression binding
- Date: Sat, 14 Dec 2019 20:37:37 +0000 (UTC)
commit 6d7007f6f463be76ede99a48e44e0a60a09e2fcf
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Dec 14 15:36:34 2019 -0500
Add some tests for expression binding
These unveil a crash in the handling of @this.
testsuite/gtk/expression.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
---
diff --git a/testsuite/gtk/expression.c b/testsuite/gtk/expression.c
index 663e0fcbaf..4d77e6d72d 100644
--- a/testsuite/gtk/expression.c
+++ b/testsuite/gtk/expression.c
@@ -414,6 +414,68 @@ test_constant_watch_this_destroyed (void)
g_assert_cmpint (counter, ==, 1);
}
+static void
+test_bind (void)
+{
+ GtkFilter *filter;
+ GtkFilter *filter2;
+ GtkExpression *expr;
+ GtkExpressionWatch *watch;
+ GValue value = G_VALUE_INIT;
+ gboolean res;
+
+ expr = gtk_property_expression_new (GTK_TYPE_STRING_FILTER, NULL, "search");
+
+ filter = gtk_string_filter_new ();
+ gtk_string_filter_set_search (GTK_STRING_FILTER (filter), "word");
+ g_assert_cmpstr (gtk_string_filter_get_search (GTK_STRING_FILTER (filter)), ==, "word");
+
+ filter2 = gtk_string_filter_new ();
+ gtk_string_filter_set_search (GTK_STRING_FILTER (filter2), "sausage");
+
+ watch = gtk_expression_bind (expr, filter, filter2, "search");
+ gtk_expression_watch_ref (watch);
+
+ gtk_string_filter_set_search (GTK_STRING_FILTER (filter2), "sausage");
+ /* this isn't watched */
+ g_assert_cmpstr (gtk_string_filter_get_search (GTK_STRING_FILTER (filter)), ==, "word");
+ /* even though it is taken into account for evaluation */
+ res = gtk_expression_watch_evaluate (watch, &value);
+ g_assert_true (res);
+ g_assert_cmpstr (g_value_get_string (&value), ==, "sausage");
+
+ g_object_unref (filter);
+ g_object_unref (filter2);
+ gtk_expression_watch_unref (watch);
+}
+
+static void
+test_nested_bind (void)
+{
+ GtkFilter *filter;
+ GtkFilter *filter2;
+ GtkExpression *expr;
+
+ filter2 = gtk_string_filter_new ();
+ gtk_string_filter_set_search (GTK_STRING_FILTER (filter2), "sausage");
+
+ expr = gtk_property_expression_new (GTK_TYPE_STRING_FILTER,
+ gtk_constant_expression_new (GTK_TYPE_STRING_FILTER, filter2),
+ "search");
+
+ filter = gtk_string_filter_new ();
+ gtk_string_filter_set_search (GTK_STRING_FILTER (filter), "word");
+ g_assert_cmpstr (gtk_string_filter_get_search (GTK_STRING_FILTER (filter)), ==, "word");
+
+ gtk_expression_bind (expr, filter, filter, "search");
+
+ gtk_string_filter_set_search (GTK_STRING_FILTER (filter2), "sausage");
+ g_assert_cmpstr (gtk_string_filter_get_search (GTK_STRING_FILTER (filter)), ==, "sausage");
+
+ g_object_unref (filter);
+ g_object_unref (filter2);
+}
+
int
main (int argc, char *argv[])
{
@@ -429,6 +491,8 @@ main (int argc, char *argv[])
g_test_add_func ("/expression/nested-this-destroyed", test_nested_this_destroyed);
g_test_add_func ("/expression/type-mismatch", test_type_mismatch);
g_test_add_func ("/expression/this", test_this);
+ g_test_add_func ("/expression/bind", test_bind);
+ g_test_add_func ("/expression/nested-bind", test_nested_bind);
return g_test_run ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]