Add more css transition tests

Test font size transitions.
This commit is contained in:
Matthias Clasen 2021-02-03 11:57:34 -05:00
parent 4e2ec2d68d
commit 3c6e7569ff

View File

@ -23,7 +23,9 @@
#include <gtk/gtk.h>
#include "gtk/gtkcssvalueprivate.h"
#include "gtk/gtkcsscolorvalueprivate.h"
#include "gtk/gtkcssnumbervalueprivate.h"
#include "gtk/gtkcssstylepropertyprivate.h"
#include "gtk/gtkcssstaticstyleprivate.h"
static gboolean
color_is_near (const GdkRGBA *color1,
@ -52,24 +54,29 @@ value_is_near (int prop,
{
case GTK_CSS_PROPERTY_COLOR:
{
GtkCssValue *v1, *v2;
const GdkRGBA *c1, *c2;
gboolean res;
v1 = _gtk_css_value_compute (value1, prop, NULL, NULL, NULL);
v2 = _gtk_css_value_compute (value2, prop, NULL, NULL, NULL);
c1 = gtk_css_color_value_get_rgba (v1);
c2 = gtk_css_color_value_get_rgba (v2);
c1 = gtk_css_color_value_get_rgba (value1);
c2 = gtk_css_color_value_get_rgba (value2);
res = color_is_near (c1, c2);
gtk_css_value_unref (v1);
gtk_css_value_unref (v2);
return res;
}
break;
case GTK_CSS_PROPERTY_FONT_SIZE:
{
double n1, n2;
n1 = _gtk_css_number_value_get (value1, 100);
n2 = _gtk_css_number_value_get (value2, 100);
return fabs (n1 - n2) < FLT_EPSILON;
}
break;
default:
break;
}
@ -101,7 +108,7 @@ typedef struct {
const char *value1;
const char *value2;
double progress;
const char *expected;
const char *value3;
} ValueTransitionTest;
static ValueTransitionTest tests[] = {
@ -109,6 +116,8 @@ static ValueTransitionTest tests[] = {
{ GTK_CSS_PROPERTY_BOX_SHADOW, "none", "2px 2px 10px 4px rgb(200,200,200)", 0.5, "1px 1px 5px 2px rgba(200,200,200,0.5)" },
{ GTK_CSS_PROPERTY_BOX_SHADOW, "2px 2px 10px 4px rgb(200,200,200)", "none", 0.5, "1px 1px 5px 2px rgba(200,200,200,0.5)" },
{ GTK_CSS_PROPERTY_BOX_SHADOW, "2px 2px 10px 4px rgb(200,200,200), 0px 10px 8px 6px rgb(200,100,0)", "none", 0.5, "1px 1px 5px 2px rgba(200,200,200,0.5), 0px 5px 4px 3px rgba(200,100,0,0.5)" },
{ GTK_CSS_PROPERTY_FONT_SIZE, "12px", "16px", 0.25, "13px" },
{ GTK_CSS_PROPERTY_FONT_SIZE, "10px", "10pt", 0.5, "11.66666667px" },
};
static GtkCssValue *
@ -135,8 +144,16 @@ test_transition (gconstpointer data)
GtkStyleProperty *prop;
GtkCssValue *value1;
GtkCssValue *value2;
GtkCssValue *expected;
GtkCssValue *value3;
GtkCssValue *computed1;
GtkCssValue *computed2;
GtkCssValue *computed3;
GtkCssValue *result;
GtkStyleProvider *provider;
GtkCssStyle *style;
provider = GTK_STYLE_PROVIDER (gtk_settings_get_default ());
style = gtk_css_static_style_get_default ();
prop = (GtkStyleProperty *)_gtk_css_style_property_lookup_by_id (test->prop);
@ -144,16 +161,22 @@ test_transition (gconstpointer data)
g_assert_nonnull (value1);
value2 = value_from_string (prop, test->value2);
g_assert_nonnull (value1);
expected = value_from_string (prop, test->expected);
g_assert_nonnull (value1);
value3 = value_from_string (prop, test->value3);
g_assert_nonnull (value3);
result = _gtk_css_value_transition (value1, value2, test->prop, test->progress);
computed1 = _gtk_css_value_compute (value1, test->prop, provider, style, NULL);
computed2 = _gtk_css_value_compute (value2, test->prop, provider, style, NULL);
computed3 = _gtk_css_value_compute (value3, test->prop, provider, style, NULL);
result = _gtk_css_value_transition (computed1, computed2, test->prop, test->progress);
g_assert_nonnull (result);
assert_css_value (test->prop, result, expected);
assert_css_value (test->prop, result, computed3);
gtk_css_value_unref (value1);
gtk_css_value_unref (value2);
gtk_css_value_unref (expected);
gtk_css_value_unref (value3);
gtk_css_value_unref (computed1);
gtk_css_value_unref (computed2);
gtk_css_value_unref (computed3);
gtk_css_value_unref (result);
}