[pango] Split out some test functions



commit a2b0c3367d75b066a18914e7ab820c3e2229fc5d
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Mar 12 21:51:35 2015 -0400

    Split out some test functions
    
    These will be reused later.

 tests/Makefile.am   |    7 ++
 tests/test-common.c |  204 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/test-common.h |   22 ++++++
 tests/test-layout.c |  176 ++------------------------------------------
 4 files changed, 240 insertions(+), 169 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b048ea0..3edec0d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -64,6 +64,12 @@ TEST_PANGO_LIBS = ../pango/libpango-$(PANGO_API_VERSION).la
 TEST_PANGOFT2_LIBS = $(TEST_PANGO_LIBS) ../pango/libpangoft2-$(PANGO_API_VERSION).la
 TEST_PANGOCAIRO_LIBS = $(TEST_PANGO_LIBS) ../pango/libpangocairo-$(PANGO_API_VERSION).la
 
+test_layout_SOURCES = \
+       test-layout.c \
+       test-common.c \
+       test-common.h \
+       $(NULL)
+
 gen_all_unicode_LDADD = $(GLIB_LIBS)
 testboundaries_LDADD = $(TEST_PANGO_LIBS) $(GLIB_LIBS)
 testboundaries_ucd_LDADD = $(TEST_PANGO_LIBS) $(GLIB_LIBS)
@@ -76,6 +82,7 @@ dump_boundaries_LDADD = $(TEST_PANGO_LIBS) $(GLIB_LIBS)
 markup_parse_LDADD = $(TEST_PANGOCAIRO_LIBS) $(GLIB_LIBS)
 test_layout_LDADD = $(TEST_PANGOCAIRO_LIBS) $(GLIB_LIBS)
 test_font_LDADD = $(TEST_PANGOCAIRO_LIBS) $(GLIB_LIBS)
+testattributes_LDADD = $(TEST_PANGOCAIRO_LIBS) $(GLIB_LIBS)
 
 if HAVE_CXX
 check_PROGRAMS += cxx-test
diff --git a/tests/test-common.c b/tests/test-common.c
new file mode 100644
index 0000000..8823411
--- /dev/null
+++ b/tests/test-common.c
@@ -0,0 +1,204 @@
+/* Pango
+ * test-common.c: Common test code
+ *
+ * Copyright (C) 2014 Red Hat, Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+#include <string.h>
+#include <unistd.h>
+#include <locale.h>
+
+#include <pango/pangocairo.h>
+
+char *
+diff_with_file (const char  *file,
+                char        *text,
+                gssize       len,
+                GError     **error)
+{
+  const char *command[] = { "diff", "-u", file, NULL, NULL };
+  char *diff, *tmpfile;
+  int fd;
+
+  diff = NULL;
+
+  if (len < 0)
+    len = strlen (text);
+
+  /* write the text buffer to a temporary file */
+  fd = g_file_open_tmp (NULL, &tmpfile, error);
+  if (fd < 0)
+    return NULL;
+
+  if (write (fd, text, len) != (int) len)
+    {
+      close (fd);
+      g_set_error (error,
+                   G_FILE_ERROR, G_FILE_ERROR_FAILED,
+                   "Could not write data to temporary file '%s'", tmpfile);
+      goto done;
+    }
+  close (fd);
+  command[3] = tmpfile;
+
+  /* run diff command */
+  g_spawn_sync (NULL,
+                (char **) command,
+                NULL,
+                G_SPAWN_SEARCH_PATH,
+                NULL, NULL,
+                &diff,
+                NULL, NULL,
+                error);
+
+done:
+  unlink (tmpfile);
+  g_free (tmpfile);
+
+  return diff;
+}
+
+void
+print_attribute (PangoAttribute *attr, GString *string)
+{
+  g_string_append_printf (string, "[%d %d] ", attr->start_index, attr->end_index);
+  switch (attr->klass->type)
+    {
+    case PANGO_ATTR_LANGUAGE:
+      g_string_append_printf (string,"language %s\n", pango_language_to_string (((PangoAttrLanguage 
*)attr)->value));
+      break;
+    case PANGO_ATTR_FAMILY:
+      g_string_append_printf (string,"family %s\n", ((PangoAttrString *)attr)->value);
+      break;
+    case PANGO_ATTR_STYLE:
+      g_string_append_printf (string,"style %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_WEIGHT:
+      g_string_append_printf (string,"weight %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_VARIANT:
+      g_string_append_printf (string,"variant %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_STRETCH:
+      g_string_append_printf (string,"stretch %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_SIZE:
+      g_string_append_printf (string,"size %d\n", ((PangoAttrSize *)attr)->size);
+      break;
+    case PANGO_ATTR_FONT_DESC:
+      g_string_append_printf (string,"font %s\n", pango_font_description_to_string (((PangoAttrFontDesc 
*)attr)->desc));
+      break;
+    case PANGO_ATTR_FOREGROUND:
+      g_string_append_printf (string,"foreground %s\n", pango_color_to_string (&((PangoAttrColor 
*)attr)->color));
+      break;
+    case PANGO_ATTR_BACKGROUND:
+      g_string_append_printf (string,"background %s\n", pango_color_to_string (&((PangoAttrColor 
*)attr)->color));
+      break;
+    case PANGO_ATTR_UNDERLINE:
+      g_string_append_printf (string,"underline %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_STRIKETHROUGH:
+      g_string_append_printf (string,"strikethrough %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_RISE:
+      g_string_append_printf (string,"rise %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_SHAPE:
+      g_string_append_printf (string,"shape\n");
+      break;
+    case PANGO_ATTR_SCALE:
+      g_string_append_printf (string,"scale %f\n", ((PangoAttrFloat *)attr)->value);
+      break;
+    case PANGO_ATTR_FALLBACK:
+      g_string_append_printf (string,"fallback %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_LETTER_SPACING:
+      g_string_append_printf (string,"letter-spacing %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_UNDERLINE_COLOR:
+      g_string_append_printf (string,"underline-color %s\n", pango_color_to_string (&((PangoAttrColor 
*)attr)->color));
+      break;
+    case PANGO_ATTR_STRIKETHROUGH_COLOR:
+      g_string_append_printf (string,"strikethrough-color %s\n", pango_color_to_string (&((PangoAttrColor 
*)attr)->color));
+      break;
+    case PANGO_ATTR_ABSOLUTE_SIZE:
+      g_string_append_printf (string,"absolute-size %d\n", ((PangoAttrSize *)attr)->size);
+      break;
+    case PANGO_ATTR_GRAVITY:
+      g_string_append_printf (string,"gravity %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    case PANGO_ATTR_GRAVITY_HINT:
+      g_string_append_printf (string,"gravity-hint %d\n", ((PangoAttrInt *)attr)->value);
+      break;
+    default:
+      g_assert_not_reached ();
+      break;
+    }
+}
+
+void
+print_attr_list (PangoAttrList *attrs, GString *string)
+{
+  PangoAttrIterator *iter;
+
+  iter = pango_attr_list_get_iterator (attrs);
+  do {
+    gint start, end;
+    GSList *list, *l;
+
+    pango_attr_iterator_range (iter, &start, &end);
+    g_string_append_printf (string, "range %d %d\n", start, end);
+    list = pango_attr_iterator_get_attrs (iter);
+    for (l = list; l; l = l->next)
+      {
+        PangoAttribute *attr = l->data;
+        print_attribute (attr, string);
+      }
+    g_slist_free_full (list, (GDestroyNotify)pango_attribute_destroy);
+  } while (pango_attr_iterator_next (iter));
+
+  pango_attr_iterator_destroy (iter);
+}
+
+void
+print_attributes (GSList *attrs, GString *string)
+{
+  GSList *l;
+
+  for (l = attrs; l; l = l->next)
+    {
+      PangoAttribute *attr = l->data;
+
+      g_string_append (string, "  ");
+      print_attribute (attr, string);
+    }
+}
+
+typedef struct
+{
+  guint ref_count;
+  GSList *attributes;
+  GSList *attributes_tail;
+} AL;
+
+GSList *
+attr_list_to_list (PangoAttrList *attrs)
+{
+  return ((AL*)attrs)->attributes;
+}
diff --git a/tests/test-common.h b/tests/test-common.h
new file mode 100644
index 0000000..ae81d3a
--- /dev/null
+++ b/tests/test-common.h
@@ -0,0 +1,22 @@
+#ifndef __TEST_COMMON_H__
+#define __TEST_COMMON_H__
+
+char * diff_with_file (const char  *file,
+                       char        *text,
+                       gssize       len,
+                       GError     **error);
+
+void print_attribute (PangoAttribute *attr,
+                      GString        *string);
+
+void print_attributes (GSList        *attrs,
+                       GString       *string);
+
+void print_attr_list (PangoAttrList  *attrs,
+                      GString        *string);
+
+GSList *attr_list_to_list (PangoAttrList *attrs);
+
+
+
+#endif
diff --git a/tests/test-layout.c b/tests/test-layout.c
index fffc963..62333c1 100644
--- a/tests/test-layout.c
+++ b/tests/test-layout.c
@@ -25,173 +25,11 @@
 #include <locale.h>
 
 #include <pango/pangocairo.h>
-
-static char *
-diff_with_file (const char  *file1,
-                char        *text,
-                gssize       len,
-                GError     **error)
-{
-  const char *command[] = { "diff", "-u", file1, NULL, NULL };
-  char *diff, *tmpfile;
-  int fd;
-
-  diff = NULL;
-
-  if (len < 0)
-    len = strlen (text);
-
-  /* write the text buffer to a temporary file */
-  fd = g_file_open_tmp (NULL, &tmpfile, error);
-  if (fd < 0)
-    return NULL;
-
-  if (write (fd, text, len) != (int) len)
-    {
-      close (fd);
-      g_set_error (error,
-                   G_FILE_ERROR, G_FILE_ERROR_FAILED,
-                   "Could not write data to temporary file '%s'", tmpfile);
-      goto done;
-    }
-  close (fd);
-  command[3] = tmpfile;
-
-  /* run diff command */
-  g_spawn_sync (NULL,
-                (char **) command,
-                NULL,
-                G_SPAWN_SEARCH_PATH,
-                NULL, NULL,
-                &diff,
-                NULL, NULL,
-                error);
-
-done:
-  unlink (tmpfile);
-  g_free (tmpfile);
-
-  return diff;
-}
+#include "test-common.h"
 
 
 static PangoContext *context;
 
-static void
-print_attr (PangoAttribute *attr, GString *string)
-{
-  g_string_append_printf (string, "[%d %d] ", attr->start_index, attr->end_index);
-  switch (attr->klass->type)
-    {
-    case PANGO_ATTR_LANGUAGE:
-      g_string_append_printf (string,"language %s\n", pango_language_to_string (((PangoAttrLanguage 
*)attr)->value));
-      break;
-    case PANGO_ATTR_FAMILY:
-      g_string_append_printf (string,"family %s\n", ((PangoAttrString *)attr)->value);
-      break;
-    case PANGO_ATTR_STYLE:
-      g_string_append_printf (string,"style %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_WEIGHT:
-      g_string_append_printf (string,"weight %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_VARIANT:
-      g_string_append_printf (string,"variant %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_STRETCH:
-      g_string_append_printf (string,"stretch %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_SIZE:
-      g_string_append_printf (string,"size %d\n", ((PangoAttrSize *)attr)->size);
-      break;
-    case PANGO_ATTR_FONT_DESC:
-      g_string_append_printf (string,"font %s\n", pango_font_description_to_string (((PangoAttrFontDesc 
*)attr)->desc));
-      break;
-    case PANGO_ATTR_FOREGROUND:
-      g_string_append_printf (string,"foreground %s\n", pango_color_to_string (&((PangoAttrColor 
*)attr)->color));
-      break;
-    case PANGO_ATTR_BACKGROUND:
-      g_string_append_printf (string,"background %s\n", pango_color_to_string (&((PangoAttrColor 
*)attr)->color));
-      break;
-    case PANGO_ATTR_UNDERLINE:
-      g_string_append_printf (string,"underline %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_STRIKETHROUGH:
-      g_string_append_printf (string,"strikethrough %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_RISE:
-      g_string_append_printf (string,"rise %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_SHAPE:
-      g_string_append_printf (string,"shape\n");
-      break;
-    case PANGO_ATTR_SCALE:
-      g_string_append_printf (string,"scale %f\n", ((PangoAttrFloat *)attr)->value);
-      break;
-    case PANGO_ATTR_FALLBACK:
-      g_string_append_printf (string,"fallback %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_LETTER_SPACING:
-      g_string_append_printf (string,"letter-spacing %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_UNDERLINE_COLOR:
-      g_string_append_printf (string,"underline-color %s\n", pango_color_to_string (&((PangoAttrColor 
*)attr)->color));
-      break;
-    case PANGO_ATTR_STRIKETHROUGH_COLOR:
-      g_string_append_printf (string,"strikethrough-color %s\n", pango_color_to_string (&((PangoAttrColor 
*)attr)->color));
-      break;
-    case PANGO_ATTR_ABSOLUTE_SIZE:
-      g_string_append_printf (string,"absolute-size %d\n", ((PangoAttrSize *)attr)->size);
-      break;
-    case PANGO_ATTR_GRAVITY:
-      g_string_append_printf (string,"gravity %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    case PANGO_ATTR_GRAVITY_HINT:
-      g_string_append_printf (string,"gravity-hint %d\n", ((PangoAttrInt *)attr)->value);
-      break;
-    default:
-      g_assert_not_reached ();
-      break;
-    }
-}
-
-static void
-dump_attrs (PangoAttrList *attrs, GString *string)
-{
-  PangoAttrIterator *iter;
-
-  iter = pango_attr_list_get_iterator (attrs);
-  do {
-    gint start, end;
-    GSList *list, *l;
-
-    pango_attr_iterator_range (iter, &start, &end);
-    g_string_append_printf (string, "range %d %d\n", start, end);
-    list = pango_attr_iterator_get_attrs (iter);
-    for (l = list; l; l = l->next)
-      {
-        PangoAttribute *attr = l->data;
-        print_attr (attr, string);
-      }
-    g_slist_free_full (list, (GDestroyNotify)pango_attribute_destroy);
-  } while (pango_attr_iterator_next (iter));
-
-  pango_attr_iterator_destroy (iter);
-}
-
-static void
-dump_extra_attrs (GSList *attrs, GString *string)
-{
-  GSList *l;
-
-  for (l = attrs; l; l = l->next)
-    {
-      PangoAttribute *attr = l->data;
-
-      g_string_append (string, "  ");
-      print_attr (attr, string);
-    }
-}
 
 static const gchar *
 enum_value_nick (GType type, gint value)
@@ -218,7 +56,7 @@ direction_name (PangoDirection dir)
 static const gchar *
 gravity_name (PangoGravity gravity)
 {
-  return enum_value_nick (PANGO_TYPE_GRAVITY, gravity);  
+  return enum_value_nick (PANGO_TYPE_GRAVITY, gravity);
 }
 
 static const gchar *
@@ -266,7 +104,7 @@ dump_lines (PangoLayout *layout, GString *string)
       if (has_more)
         {
           index2 = pango_layout_iter_get_index (iter);
-          char_str = g_strndup (text + index, index2 - index);          
+          char_str = g_strndup (text + index, index2 - index);
         }
       else
         {
@@ -274,7 +112,7 @@ dump_lines (PangoLayout *layout, GString *string)
         }
 
       g_string_append_printf (string, "i=%d, index=%d, paragraph-start=%d, dir=%s '%s'\n",
-                              i, index, line->is_paragraph_start, direction_name (line->resolved_dir), 
+                              i, index, line->is_paragraph_start, direction_name (line->resolved_dir),
                               char_str);
       g_free (char_str);
 
@@ -311,7 +149,7 @@ dump_runs (PangoLayout *layout, GString *string)
       if (has_more)
         {
           index2 = pango_layout_iter_get_index (iter);
-          char_str = g_strndup (text + index, index2 - index);          
+          char_str = g_strndup (text + index, index2 - index);
         }
       else
         {
@@ -330,7 +168,7 @@ dump_runs (PangoLayout *layout, GString *string)
                                   script_name (item->analysis.script),
                                   pango_language_to_string (item->analysis.language),
                                   char_str);
-          dump_extra_attrs (item->analysis.extra_attrs, string);
+          print_attributes (item->analysis.extra_attrs, string);
           g_free (font);
         }
       else
@@ -442,7 +280,7 @@ test_file (const gchar *filename, GString *string)
   if (width != 0)
     g_string_append_printf (string, "width: %d\n", pango_layout_get_width (layout));
   g_string_append (string, "\n---\n\n");
-   dump_attrs (pango_layout_get_attributes (layout), string);
+  print_attr_list (pango_layout_get_attributes (layout), string);
   g_string_append (string, "\n---\n\n");
   dump_lines (layout, string);
   g_string_append (string, "\n---\n\n");


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