[pango/pango-1-46: 6/9] tests: Add tests for pango_font_describe




commit ea64ab44d0e89f9e0e656a360c5c14a0f13cd28d
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Jan 24 11:02:21 2021 -0500

    tests: Add tests for pango_font_describe
    
    Test that round-tripping through pango_font_describe
    works. This is currently broken for scalable bitmap
    fonts, such as color Emoji fonts.
    
    We skip the test on OS X where we are most likely
    missing the fonts.
    
    (cherry-picked from commit 49b1f80a834)

 tests/meson.build |  2 ++
 tests/test-font.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 72 insertions(+), 1 deletion(-)
---
diff --git a/tests/meson.build b/tests/meson.build
index 6e10e2b7..6f08c240 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -8,6 +8,8 @@ endif
 
 if host_system == 'windows'
   test_cflags += '-DHAVE_WIN32'
+elif host_system == 'darwin'
+  test_cflags += '-DHAVE_CARBON'
 endif
 
 test_env = environment()
diff --git a/tests/test-font.c b/tests/test-font.c
index 486504f9..88e3cdc9 100644
--- a/tests/test-font.c
+++ b/tests/test-font.c
@@ -240,7 +240,74 @@ test_enumerate (void)
   g_object_unref (font);
   pango_font_description_free (desc);
   g_free (faces);
-  g_free (families); 
+  g_free (families);
+  g_object_unref (context);
+}
+
+static void
+test_roundtrip_plain (void)
+{
+  PangoFontMap *fontmap;
+  PangoContext *context;
+  PangoFontDescription *desc, *desc2;
+  PangoFont *font;
+
+#ifdef HAVE_CARBON
+  /* We probably don't have the right fonts */
+  g_test_skip ("Skipping font-dependent tests on OS X");
+  return;
+#endif
+
+  fontmap = pango_cairo_font_map_get_default ();
+  context = pango_font_map_create_context (fontmap);
+
+  desc = pango_font_description_from_string ("Cantarell 11");
+
+  font = pango_context_load_font (context, desc);
+  desc2 = pango_font_describe (font);
+
+  g_assert (pango_font_description_equal (desc2, desc));
+
+  pango_font_description_free (desc2);
+  g_object_unref (font);
+  pango_font_description_free (desc);
+  g_object_unref (context);
+}
+
+static void
+test_roundtrip_emoji (void)
+{
+  PangoFontMap *fontmap;
+  PangoContext *context;
+  PangoFontDescription *desc, *desc2;
+  PangoFont *font;
+
+#ifdef HAVE_CARBON
+  /* We probably don't have the right fonts */
+  g_test_skip ("Skipping font-dependent tests on OS X");
+  return;
+#endif
+
+  fontmap = pango_cairo_font_map_get_default ();
+  context = pango_font_map_create_context (fontmap);
+
+  /* This is how pango_itemize creates the emoji font desc */
+  desc = pango_font_description_from_string ("Cantarell 11");
+  pango_font_description_set_family_static (desc, "emoji");
+
+  font = pango_context_load_font (context, desc);
+  desc2 = pango_font_describe (font);
+
+  /* We can't expect the family name to match, since we go in with
+   * a generic family
+   */
+  pango_font_description_unset_fields (desc, PANGO_FONT_MASK_FAMILY);
+  pango_font_description_unset_fields (desc2, PANGO_FONT_MASK_FAMILY);
+  g_assert (pango_font_description_equal (desc2, desc));
+
+  pango_font_description_free (desc2);
+  g_object_unref (font);
+  pango_font_description_free (desc);
   g_object_unref (context);
   g_object_unref (fontmap);
 }
@@ -261,6 +328,8 @@ main (int argc, char *argv[])
   g_test_add_func ("/pango/fontdescription/variation", test_variation);
   g_test_add_func ("/pango/font/extents", test_extents);
   g_test_add_func ("/pango/font/enumerate", test_enumerate);
+  g_test_add_func ("/pango/font/roundtrip/plain", test_roundtrip_plain);
+  g_test_add_func ("/pango/font/roundtrip/emoji", test_roundtrip_emoji);
 
   return g_test_run ();
 }


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