summaryrefslogtreecommitdiff
path: root/tests/testattributes.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testattributes.c')
-rw-r--r--tests/testattributes.c313
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);