[pango] Add test for glyphitem-iter



commit acbd5a6d4d92715263b3e99113caa7ac7a002776
Author: Behdad Esfahbod <behdad behdad org>
Date:   Sat Aug 8 16:10:36 2015 +0200

    Add test for glyphitem-iter
    
    Fails right now.  Fix coming.

 tests/testiter.c |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)
---
diff --git a/tests/testiter.c b/tests/testiter.c
index 4e70ce4..1d8069b 100644
--- a/tests/testiter.c
+++ b/tests/testiter.c
@@ -233,6 +233,57 @@ test_layout_iter (void)
     }
 
   g_object_unref (layout);
+  g_object_unref (context);
+}
+
+static void
+test_glyphitem_iter (void)
+{
+  PangoFontMap *fontmap;
+  PangoContext *context;
+  PangoLayout  *layout;
+  PangoLayoutLine *line;
+  const char *text;
+  GSList *l;
+
+  fontmap = pango_cairo_font_map_get_default ();
+  context = pango_font_map_create_context (fontmap);
+
+  layout = pango_layout_new (context);
+  /* This shouldn't form any ligatures. */
+  pango_layout_set_text (layout, "test تست", -1);
+  text = pango_layout_get_text (layout);
+
+  line = pango_layout_get_line (layout, 0);
+  for (l = line->runs; l; l = l->next)
+  {
+    PangoGlyphItem *run = l->data;
+    int direction;
+
+    for (direction = 0; direction < 2; direction++)
+    {
+      PangoGlyphItemIter iter;
+      gboolean have_cluster;
+
+
+      for (have_cluster = direction ?
+            pango_glyph_item_iter_init_start (&iter, run, text) :
+            pango_glyph_item_iter_init_end (&iter, run, text);
+          have_cluster;
+          have_cluster = direction ?
+            pango_glyph_item_iter_next_cluster (&iter) :
+            pango_glyph_item_iter_prev_cluster (&iter))
+      {
+        verbose ("start index %d end index %d\n", iter.start_index, iter.end_index);
+        g_assert (iter.start_index < iter.end_index);
+        g_assert (iter.start_index + 2 >= iter.end_index);
+        g_assert (iter.start_char + 1 == iter.end_char);
+      }
+    }
+  }
+
+  g_object_unref (layout);
+  g_object_unref (context);
 }
 
 int
@@ -241,6 +292,7 @@ main (int argc, char *argv[])
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/layout/iter", test_layout_iter);
+  g_test_add_func ("/layout/iter", test_glyphitem_iter);
 
   return g_test_run ();
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]