summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-08-21 21:35:41 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-08-22 00:34:55 -0400
commitd61aa45efa0516794c6459db1213ca221c3a5497 (patch)
treed330b25331ed37033a25efe19f2a3ed7d653659b
parent097f86b299f4b793da8d3cdffc827a7ee780a8e3 (diff)
downloadpango-d61aa45efa0516794c6459db1213ca221c3a5497.tar.gz
tests: Add more attribute tests
Handle all attribute types when testing copying, and add tests for the binding helpers.
-rw-r--r--tests/test-common.c3
-rw-r--r--tests/testattributes.c107
2 files changed, 110 insertions, 0 deletions
diff --git a/tests/test-common.c b/tests/test-common.c
index 3df4015c..011b2eef 100644
--- a/tests/test-common.c
+++ b/tests/test-common.c
@@ -143,6 +143,7 @@ print_attribute (PangoAttribute *attr, GString *string)
case PANGO_ATTR_INSERT_HYPHENS:
case PANGO_ATTR_SHOW:
case PANGO_ATTR_TEXT_TRANSFORM:
+ case PANGO_ATTR_ABSOLUTE_LINE_HEIGHT:
g_string_append_printf (string, "%d", ((PangoAttrInt *)attr)->value);
break;
case PANGO_ATTR_FONT_DESC:
@@ -167,6 +168,7 @@ print_attribute (PangoAttribute *attr, GString *string)
g_string_append_printf (string, "shape");
break;
case PANGO_ATTR_SCALE:
+ case PANGO_ATTR_LINE_HEIGHT:
{
char val[20];
@@ -174,6 +176,7 @@ print_attribute (PangoAttribute *attr, GString *string)
g_string_append (string, val);
}
break;
+ case PANGO_ATTR_INVALID:
default:
g_assert_not_reached ();
break;
diff --git a/tests/testattributes.c b/tests/testattributes.c
index bd1a4028..662a6142 100644
--- a/tests/testattributes.c
+++ b/tests/testattributes.c
@@ -66,10 +66,15 @@ test_attributes_basic (void)
test_copy (pango_attr_shape_new (&rect, &rect));
test_copy (pango_attr_gravity_new (PANGO_GRAVITY_SOUTH));
test_copy (pango_attr_gravity_hint_new (PANGO_GRAVITY_HINT_STRONG));
+ test_copy (pango_attr_font_features_new ("csc=1"));
+ test_copy (pango_attr_foreground_alpha_new (8000));
+ test_copy (pango_attr_background_alpha_new (8000));
test_copy (pango_attr_allow_breaks_new (FALSE));
test_copy (pango_attr_show_new (PANGO_SHOW_SPACES));
test_copy (pango_attr_insert_hyphens_new (FALSE));
test_copy (pango_attr_text_transform_new (PANGO_TEXT_TRANSFORM_UPPERCASE));
+ test_copy (pango_attr_line_height_new (1.5));
+ test_copy (pango_attr_line_height_new_absolute (3000));
}
static void
@@ -111,6 +116,107 @@ test_attributes_register (void)
g_type_class_unref (class);
}
+#define g_assert_as(x, y) \
+ if (x == NULL) \
+ { \
+ GString *s = g_string_new (""); \
+ print_attribute (y, s); \
+ g_print ("failed to convert: %s\n", s->str); \
+ g_string_free (s, TRUE); \
+ }
+
+static void
+test_binding (PangoAttribute *attr)
+{
+ enum {
+ INVALID, INT, LANGUAGE, STRING, SIZE, FONT_DESC, COLOR, SHAPE, FLOAT, FONT_FEATURES,
+ } attr_base[] = {
+ INVALID, LANGUAGE, STRING, INT, INT, INT, INT, SIZE, FONT_DESC, COLOR,
+ COLOR, INT, INT, INT, SHAPE, FLOAT, INT, INT, COLOR, COLOR, SIZE,
+ INT, INT, FONT_FEATURES, INT, INT, INT, INT, INT, INT, COLOR, FLOAT,
+ INT, INT, INT, INT
+ };
+
+ switch (attr_base[attr->klass->type])
+ {
+ case INT:
+ g_assert_as (pango_attribute_as_int (attr), attr);
+ break;
+ case LANGUAGE:
+ g_assert_as (pango_attribute_as_language (attr), attr);
+ break;
+ case STRING:
+ g_assert_as (pango_attribute_as_string (attr), attr);
+ break;
+ case SIZE:
+ g_assert_as (pango_attribute_as_size (attr), attr);
+ break;
+ case FONT_DESC:
+ g_assert_as (pango_attribute_as_font_desc (attr), attr);
+ break;
+ case COLOR:
+ g_assert_as (pango_attribute_as_color (attr), attr);
+ break;
+ case SHAPE:
+ g_assert_as (pango_attribute_as_shape (attr), attr);
+ break;
+ case FLOAT:
+ g_assert_as (pango_attribute_as_float (attr), attr);
+ break;
+ case FONT_FEATURES:
+ g_assert_as (pango_attribute_as_font_features (attr), attr);
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+
+ pango_attribute_destroy (attr);
+}
+
+static void
+test_binding_helpers (void)
+{
+ PangoFontDescription *desc;
+ PangoRectangle rect = { 0, 0, 10, 10 };
+
+ test_binding (pango_attr_language_new (pango_language_from_string ("ja-JP")));
+ test_binding (pango_attr_family_new ("Times"));
+ test_binding (pango_attr_foreground_new (100, 200, 300));
+ test_binding (pango_attr_background_new (100, 200, 300));
+ test_binding (pango_attr_size_new (1024));
+ test_binding (pango_attr_size_new_absolute (1024));
+ test_binding (pango_attr_style_new (PANGO_STYLE_ITALIC));
+ test_binding (pango_attr_weight_new (PANGO_WEIGHT_ULTRALIGHT));
+ test_binding (pango_attr_variant_new (PANGO_VARIANT_SMALL_CAPS));
+ test_binding (pango_attr_stretch_new (PANGO_STRETCH_SEMI_EXPANDED));
+ desc = pango_font_description_from_string ("Computer Modern 12");
+ test_binding (pango_attr_font_desc_new (desc));
+ pango_font_description_free (desc);
+ test_binding (pango_attr_underline_new (PANGO_UNDERLINE_LOW));
+ test_binding (pango_attr_underline_new (PANGO_UNDERLINE_ERROR_LINE));
+ test_binding (pango_attr_underline_color_new (100, 200, 300));
+ test_binding (pango_attr_overline_new (PANGO_OVERLINE_SINGLE));
+ test_binding (pango_attr_overline_color_new (100, 200, 300));
+ test_binding (pango_attr_strikethrough_new (TRUE));
+ test_binding (pango_attr_strikethrough_color_new (100, 200, 300));
+ test_binding (pango_attr_rise_new (256));
+ test_binding (pango_attr_scale_new (2.56));
+ test_binding (pango_attr_fallback_new (FALSE));
+ test_binding (pango_attr_letter_spacing_new (1024));
+ test_binding (pango_attr_shape_new (&rect, &rect));
+ test_binding (pango_attr_gravity_new (PANGO_GRAVITY_SOUTH));
+ test_binding (pango_attr_gravity_hint_new (PANGO_GRAVITY_HINT_STRONG));
+ test_binding (pango_attr_font_features_new ("csc=1"));
+ test_binding (pango_attr_foreground_alpha_new (8000));
+ test_binding (pango_attr_background_alpha_new (8000));
+ test_binding (pango_attr_allow_breaks_new (FALSE));
+ test_binding (pango_attr_show_new (PANGO_SHOW_SPACES));
+ test_binding (pango_attr_insert_hyphens_new (FALSE));
+ test_binding (pango_attr_text_transform_new (PANGO_TEXT_TRANSFORM_UPPERCASE));
+ test_binding (pango_attr_line_height_new (1.5));
+ test_binding (pango_attr_line_height_new_absolute (3000));
+}
+
static void
assert_attributes (GSList *attrs,
const char *expected)
@@ -1211,6 +1317,7 @@ main (int argc, char *argv[])
g_test_add_func ("/attributes/basic", test_attributes_basic);
g_test_add_func ("/attributes/equal", test_attributes_equal);
g_test_add_func ("/attributes/register", test_attributes_register);
+ g_test_add_func ("/attributes/binding-helpers", test_binding_helpers);
g_test_add_func ("/attributes/list/basic", test_list);
g_test_add_func ("/attributes/list/change", test_list_change);
g_test_add_func ("/attributes/list/change2", test_list_change2);