diff options
Diffstat (limited to 'tests/testattributes.c')
-rw-r--r-- | tests/testattributes.c | 313 |
1 files changed, 92 insertions, 221 deletions
diff --git a/tests/testattributes.c b/tests/testattributes.c index 66d149cd..26277b56 100644 --- a/tests/testattributes.c +++ b/tests/testattributes.c @@ -92,6 +92,25 @@ test_attributes_equal (void) } static void +test_attributes_register (void) +{ + PangoAttrType type; + GEnumClass *class; + + type = pango_attr_type_register ("my-attribute"); + g_assert_cmpstr (pango_attr_type_get_name (type), ==, "my-attribute"); + + class = g_type_class_ref (PANGO_TYPE_ATTR_TYPE); + for (int i = 0; i < class->n_values; i++) + { + g_assert_cmpint (type, !=, class->values[i].value); + g_assert_null (pango_attr_type_get_name (class->values[i].value)); + } + + g_type_class_unref (class); +} + +static void assert_attributes (GSList *attrs, const char *expected) { @@ -133,7 +152,7 @@ assert_attr_iterator (PangoAttrIterator *iter, static void test_list (void) { - PangoAttrList *list; + PangoAttrList *list, *list2; PangoAttribute *attr; list = pango_attr_list_new (); @@ -145,6 +164,12 @@ test_list (void) attr = pango_attr_size_new (30); pango_attr_list_insert (list, attr); + list2 = attributes_from_string ("[0,-1]size=10\n" + "[0,-1]size=20\n" + "[0,-1]size=30\n"); + g_assert_true (pango_attr_list_equal (list, list2)); + pango_attr_list_unref (list2); + assert_attr_list (list, "[0,-1]size=10\n" "[0,-1]size=20\n" "[0,-1]size=30\n"); @@ -179,20 +204,15 @@ test_list_change (void) PangoAttrList *list; PangoAttribute *attr; - list = pango_attr_list_new (); + list = attributes_from_string ("[0,10]size=10\n" + "[0,30]weight=700\n" + "[20,30]size=20\n"); - attr = pango_attr_size_new (10); - attr->start_index = 0; + /* no-op */ + attr = pango_attr_variant_new (PANGO_VARIANT_SMALL_CAPS); + attr->start_index = 10; attr->end_index = 10; - pango_attr_list_insert (list, attr); - attr = pango_attr_size_new (20); - attr->start_index = 20; - attr->end_index = 30; - pango_attr_list_insert (list, attr); - attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD); - attr->start_index = 0; - attr->end_index = 30; - pango_attr_list_insert (list, attr); + pango_attr_list_change (list, attr); assert_attr_list (list, "[0,10]size=10\n" "[0,30]weight=700\n" @@ -244,25 +264,10 @@ test_list_splice (void) PangoAttrList *base; PangoAttrList *list; PangoAttrList *other; - PangoAttribute *attr; - - base = pango_attr_list_new (); - attr = pango_attr_size_new (10); - attr->start_index = 0; - attr->end_index = -1; - pango_attr_list_insert (base, attr); - attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD); - attr->start_index = 10; - attr->end_index = 15; - pango_attr_list_insert (base, attr); - attr = pango_attr_variant_new (PANGO_VARIANT_SMALL_CAPS); - attr->start_index = 20; - attr->end_index = 30; - pango_attr_list_insert (base, attr); - assert_attr_list (base, "[0,-1]size=10\n" - "[10,15]weight=700\n" - "[20,30]variant=1\n"); + base = attributes_from_string ("[0,-1]size=10\n" + "[10,15]weight=700\n" + "[20,30]variant=1\n"); /* splice in an empty list */ list = pango_attr_list_copy (base); @@ -278,15 +283,9 @@ test_list_splice (void) /* splice in some attributes */ list = pango_attr_list_copy (base); - other = pango_attr_list_new (); - attr = pango_attr_size_new (20); - attr->start_index = 0; - attr->end_index = 3; - pango_attr_list_insert (other, attr); - attr = pango_attr_stretch_new (PANGO_STRETCH_CONDENSED); - attr->start_index = 2; - attr->end_index = 4; - pango_attr_list_insert (other, attr); + + other = attributes_from_string ("[0,3]size=20\n" + "[2,4]stretch=2\n"); pango_attr_list_splice (list, other, 11, 5); @@ -344,23 +343,9 @@ test_list_splice3 (void) { PangoAttrList *list; PangoAttrList *other; - PangoAttribute *attr; - list = pango_attr_list_new (); - other = pango_attr_list_new (); - - attr = pango_attr_variant_new (PANGO_VARIANT_SMALL_CAPS); - attr->start_index = 10; - attr->end_index = 30; - pango_attr_list_insert (list, attr); - - attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD); - attr->start_index = PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING; - attr->end_index = PANGO_ATTR_INDEX_TO_TEXT_END; - pango_attr_list_insert (other, attr); - - assert_attr_list (list, "[10,30]variant=1\n"); - assert_attr_list (other, "[0,-1]weight=700\n"); + list = attributes_from_string ("[10,30]variant=1\n"); + other = attributes_from_string ("[0,-1]weight=700\n"); pango_attr_list_splice (list, other, 20, 5); @@ -391,22 +376,10 @@ test_list_filter (void) { PangoAttrList *list; PangoAttrList *out; - PangoAttribute *attr; - list = pango_attr_list_new (); - attr = pango_attr_size_new (10); - pango_attr_list_insert (list, attr); - attr = pango_attr_stretch_new (PANGO_STRETCH_CONDENSED); - attr->start_index = 10; - attr->end_index = 20; - pango_attr_list_insert (list, attr); - attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD); - attr->start_index = 20; - pango_attr_list_insert (list, attr); - - assert_attr_list (list, "[0,-1]size=10\n" - "[10,20]stretch=2\n" - "[20,-1]weight=700\n"); + list = attributes_from_string ("[0,-1]size=10\n" + "[10,20]stretch=2\n" + "[20,-1]weight=700\n"); out = pango_attr_list_filter (list, never_true, NULL); g_assert_null (out); @@ -541,6 +514,10 @@ test_iter_get_font (void) attr->start_index = 10; attr->end_index = 30; pango_attr_list_insert (list, attr); + attr = pango_attr_size_new_absolute (10 * PANGO_SCALE); + attr->start_index = 10; + attr->end_index = 20; + pango_attr_list_insert (list, attr); attr = pango_attr_language_new (pango_language_from_string ("ja-JP")); attr->start_index = 10; attr->end_index = 20; @@ -565,7 +542,7 @@ test_iter_get_font (void) pango_attr_iterator_next (iter); desc = pango_font_description_new (); pango_attr_iterator_get_font (iter, desc, &lang, &attrs); - desc2 = pango_font_description_from_string ("Times Condensed 10"); + desc2 = pango_font_description_from_string ("Times Condensed 10px"); g_assert_true (pango_font_description_equal (desc, desc2)); g_assert_nonnull (lang); g_assert_cmpstr (pango_language_to_string (lang), ==, "ja-jp"); @@ -651,35 +628,12 @@ static void test_list_update (void) { PangoAttrList *list; - PangoAttribute *attr; - list = pango_attr_list_new (); - attr = pango_attr_size_new (10 * PANGO_SCALE); - attr->start_index = 10; - attr->end_index = 11; - pango_attr_list_insert (list, attr); - attr = pango_attr_rise_new (100); - attr->start_index = 0; - attr->end_index = 200; - pango_attr_list_insert (list, attr); - attr = pango_attr_family_new ("Times"); - attr->start_index = 5; - attr->end_index = 15; - pango_attr_list_insert (list, attr); - attr = pango_attr_fallback_new (FALSE); - attr->start_index = 11; - attr->end_index = 100; - pango_attr_list_insert (list, attr); - attr = pango_attr_stretch_new (PANGO_STRETCH_CONDENSED); - attr->start_index = 30; - attr->end_index = 60; - pango_attr_list_insert (list, attr); - - assert_attr_list (list, "[0,200]rise=100\n" - "[5,15]family=Times\n" - "[10,11]size=10240\n" - "[11,100]fallback=0\n" - "[30,60]stretch=2\n"); + list = attributes_from_string ("[0,200]rise=100\n" + "[5,15]family=Times\n" + "[10,11]size=10240\n" + "[11,100]fallback=0\n" + "[30,60]stretch=2\n"); pango_attr_list_update (list, 8, 10, 20); @@ -705,6 +659,20 @@ test_list_update2 (void) pango_attr_list_unref (list); } +/* test overflow */ +static void +test_list_update3 (void) +{ + PangoAttrList *list; + + list = attributes_from_string ("[5,4294967285]family=Times\n"); + + pango_attr_list_update (list, 8, 10, 30); + + assert_attr_list (list, "[5,-1]family=Times\n"); + + pango_attr_list_unref (list); +} static void test_list_equal (void) { @@ -787,33 +755,11 @@ test_insert (void) PangoAttrList *list; PangoAttribute *attr; - list = pango_attr_list_new (); - attr = pango_attr_size_new (10 * PANGO_SCALE); - attr->start_index = 10; - attr->end_index = 11; - pango_attr_list_insert (list, attr); - attr = pango_attr_rise_new (100); - attr->start_index = 0; - attr->end_index = 200; - pango_attr_list_insert (list, attr); - attr = pango_attr_family_new ("Times"); - attr->start_index = 5; - attr->end_index = 15; - pango_attr_list_insert (list, attr); - attr = pango_attr_fallback_new (FALSE); - attr->start_index = 11; - attr->end_index = 100; - pango_attr_list_insert (list, attr); - attr = pango_attr_stretch_new (PANGO_STRETCH_CONDENSED); - attr->start_index = 30; - attr->end_index = 60; - pango_attr_list_insert (list, attr); - - assert_attr_list (list, "[0,200]rise=100\n" - "[5,15]family=Times\n" - "[10,11]size=10240\n" - "[11,100]fallback=0\n" - "[30,60]stretch=2\n"); + list = attributes_from_string ("[0,200]rise=100\n" + "[5,15]family=Times\n" + "[10,11]size=10240\n" + "[11,100]fallback=0\n" + "[30,60]stretch=2\n"); attr = pango_attr_family_new ("Times"); attr->start_index = 10; @@ -847,43 +793,13 @@ test_insert2 (void) PangoAttrList *list; PangoAttribute *attr; - list = pango_attr_list_new (); - attr = pango_attr_size_new (10 * PANGO_SCALE); - attr->start_index = 10; - attr->end_index = 11; - pango_attr_list_insert (list, attr); - attr = pango_attr_rise_new (100); - attr->start_index = 0; - attr->end_index = 200; - pango_attr_list_insert (list, attr); - attr = pango_attr_family_new ("Times"); - attr->start_index = 5; - attr->end_index = 15; - pango_attr_list_insert (list, attr); - attr = pango_attr_family_new ("Times"); - attr->start_index = 20; - attr->end_index = 30; - pango_attr_list_insert (list, attr); - attr = pango_attr_family_new ("Futura"); - attr->start_index = 30; - attr->end_index = 40; - pango_attr_list_insert (list, attr); - attr = pango_attr_fallback_new (FALSE); - attr->start_index = 11; - attr->end_index = 100; - pango_attr_list_insert (list, attr); - attr = pango_attr_stretch_new (PANGO_STRETCH_CONDENSED); - attr->start_index = 30; - attr->end_index = 60; - pango_attr_list_insert (list, attr); - - assert_attr_list (list, "[0,200]rise=100\n" - "[5,15]family=Times\n" - "[10,11]size=10240\n" - "[11,100]fallback=0\n" - "[20,30]family=Times\n" - "[30,40]family=Futura\n" - "[30,60]stretch=2\n"); + list = attributes_from_string ("[0,200]rise=100\n" + "[5,15]family=Times\n" + "[10,11]size=10240\n" + "[11,100]fallback=0\n" + "[20,30]family=Times\n" + "[30,40]family=Futura\n" + "[30,60]stretch=2\n"); attr = pango_attr_family_new ("Times"); attr->start_index = 10; @@ -914,53 +830,16 @@ test_merge (void) { PangoAttrList *list; PangoAttrList *list2; - PangoAttribute *attr; - list = pango_attr_list_new (); - attr = pango_attr_size_new (10 * PANGO_SCALE); - attr->start_index = 10; - attr->end_index = 11; - pango_attr_list_insert (list, attr); - attr = pango_attr_rise_new (100); - attr->start_index = 0; - attr->end_index = 200; - pango_attr_list_insert (list, attr); - attr = pango_attr_family_new ("Times"); - attr->start_index = 5; - attr->end_index = 15; - pango_attr_list_insert (list, attr); - attr = pango_attr_fallback_new (FALSE); - attr->start_index = 11; - attr->end_index = 100; - pango_attr_list_insert (list, attr); - attr = pango_attr_stretch_new (PANGO_STRETCH_CONDENSED); - attr->start_index = 30; - attr->end_index = 60; - pango_attr_list_insert (list, attr); + list = attributes_from_string ("[0,200]rise=100\n" + "[5,15]family=Times\n" + "[10,11]size=10240\n" + "[11,100]fallback=0\n" + "[30,60]stretch=2\n"); - assert_attr_list (list, "[0,200]rise=100\n" - "[5,15]family=Times\n" - "[10,11]size=10240\n" - "[11,100]fallback=0\n" - "[30,60]stretch=2\n"); - - list2 = pango_attr_list_new (); - attr = pango_attr_size_new (10 * PANGO_SCALE); - attr->start_index = 11; - attr->end_index = 13; - pango_attr_list_insert (list2, attr); - attr = pango_attr_size_new (11 * PANGO_SCALE); - attr->start_index = 13; - attr->end_index = 15; - pango_attr_list_insert (list2, attr); - attr = pango_attr_size_new (12 * PANGO_SCALE); - attr->start_index = 40; - attr->end_index = 50; - pango_attr_list_insert (list2, attr); - - assert_attr_list (list2, "[11,13]size=10240\n" - "[13,15]size=11264\n" - "[40,50]size=12288\n"); + list2 = attributes_from_string ("[11,13]size=10240\n" + "[13,15]size=11264\n" + "[40,50]size=12288\n"); pango_attr_list_filter (list2, attr_list_merge_filter, list); @@ -985,18 +864,8 @@ test_merge2 (void) PangoAttrList *list; PangoAttribute *attr; - list = pango_attr_list_new (); - attr = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE); - attr->start_index = 0; - attr->end_index = 10; - pango_attr_list_insert (list, attr); - attr = pango_attr_foreground_new (0, 0, 0xffff); - attr->start_index = 0; - attr->end_index = 10; - pango_attr_list_insert (list, attr); - - assert_attr_list (list, "[0,10]underline=1\n" - "[0,10]foreground=#00000000ffff\n"); + list = attributes_from_string ("[0,10]underline=1\n" + "[0,10]foreground=#00000000ffff\n"); attr = pango_attr_foreground_new (0xffff, 0, 0); attr->start_index = 2; @@ -1131,6 +1000,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/list/basic", test_list); g_test_add_func ("/attributes/list/change", test_list_change); g_test_add_func ("/attributes/list/splice", test_list_splice); @@ -1139,6 +1009,7 @@ main (int argc, char *argv[]) g_test_add_func ("/attributes/list/filter", test_list_filter); g_test_add_func ("/attributes/list/update", test_list_update); g_test_add_func ("/attributes/list/update2", test_list_update2); + g_test_add_func ("/attributes/list/update3", test_list_update3); g_test_add_func ("/attributes/list/equal", test_list_equal); g_test_add_func ("/attributes/list/insert", test_insert); g_test_add_func ("/attributes/list/insert2", test_insert2); |