[pango/serializer: 5/5] Add a serialization test




commit f63f06d3597291e6b6ea09a4bb7d2ddafc9bc869
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Nov 13 11:02:17 2021 -0500

    Add a serialization test

 tests/meson.build      |  3 +-
 tests/testserializer.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 89 insertions(+), 1 deletion(-)
---
diff --git a/tests/meson.build b/tests/meson.build
index 90bb94ba..a41cd563 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -52,7 +52,8 @@ if cairo_dep.found()
     [ 'testmisc', [ 'testmisc.c' ], [ libpangocairo_dep, libpangoft2_dep, glib_dep, harfbuzz_dep ] ],
     [ 'cxx-test', [ 'cxx-test.cpp' ], [ libpangocairo_dep, gobject_dep, harfbuzz_dep ] ],
     [ 'test-harfbuzz', [ 'test-harfbuzz.c' ], [ libpangocairo_dep, gobject_dep, harfbuzz_dep ] ],
-    [ 'test-break', [ 'test-break.c', 'test-common.c', 'validate-log-attrs.c' ], [libpangocairo_dep, 
glib_dep, harfbuzz_dep ] ]
+    [ 'test-break', [ 'test-break.c', 'test-common.c', 'validate-log-attrs.c' ], [libpangocairo_dep, 
glib_dep, harfbuzz_dep ] ],
+    [ 'testserializer', [ 'testserializer.c' ], [ libpangocairo_dep ] ],
   ]
 
   if pango_cairo_backends.contains('png')
diff --git a/tests/testserializer.c b/tests/testserializer.c
new file mode 100644
index 00000000..49aeda06
--- /dev/null
+++ b/tests/testserializer.c
@@ -0,0 +1,87 @@
+/* Pango
+ *
+ * Copyright (C) 2021 Matthias Clasen
+ *
+ * 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 "config.h"
+#include <glib.h>
+#include <pango/pangocairo.h>
+
+static void
+test_roundtrip (void)
+{
+  PangoContext *context;
+  PangoLayout *layout;
+  PangoLayout *layout2;
+  PangoFontDescription *desc;
+  GBytes *bytes;
+
+  context = pango_font_map_create_context (pango_cairo_font_map_get_default ());
+
+  layout = pango_layout_new (context);
+  pango_layout_set_text (layout, "Lets see if this goes through", -1);
+  desc = pango_font_description_from_string ("Sans 23");
+  pango_layout_set_font_description (layout, desc);
+  pango_font_description_free (desc);
+  pango_layout_set_alignment (layout, PANGO_ALIGN_RIGHT);
+  pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR);
+  pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
+  pango_layout_set_justify (layout, TRUE);
+  pango_layout_set_justify_last_line (layout, TRUE);
+  pango_layout_set_single_paragraph_mode (layout, FALSE);
+  pango_layout_set_auto_dir (layout, FALSE);
+  pango_layout_set_width (layout, 98000);
+  pango_layout_set_height (layout, 47000);
+  pango_layout_set_indent (layout, 2000);
+  pango_layout_set_spacing (layout, 10);
+
+  bytes = pango_layout_serialize (layout);
+  //g_print ("%s\n", (const char *)g_bytes_get_data (bytes, NULL));
+  layout2 = pango_layout_deserialize (context, bytes);
+
+  g_assert_true (PANGO_IS_LAYOUT (layout2));
+  g_assert_cmpstr (pango_layout_get_text (layout), ==, pango_layout_get_text (layout2));
+  g_assert_true (pango_font_description_equal (pango_layout_get_font_description (layout),
+                                               pango_layout_get_font_description (layout2)));
+
+  g_assert_cmpint (pango_layout_get_alignment (layout), ==, pango_layout_get_alignment (layout2));
+  g_assert_cmpint (pango_layout_get_wrap (layout), ==, pango_layout_get_wrap (layout2));
+  g_assert_cmpint (pango_layout_get_ellipsize (layout), ==, pango_layout_get_ellipsize (layout2));
+  g_assert_cmpint (pango_layout_get_justify (layout), ==, pango_layout_get_justify (layout2));
+  g_assert_cmpint (pango_layout_get_justify_last_line (layout), ==, pango_layout_get_justify_last_line 
(layout2));
+  g_assert_cmpint (pango_layout_get_single_paragraph_mode (layout), ==, 
pango_layout_get_single_paragraph_mode (layout2));
+  g_assert_cmpint (pango_layout_get_auto_dir (layout), ==, pango_layout_get_auto_dir (layout2));
+  g_assert_cmpint (pango_layout_get_width (layout), ==, pango_layout_get_width (layout2));
+  g_assert_cmpint (pango_layout_get_height (layout), ==, pango_layout_get_height (layout2));
+  g_assert_cmpint (pango_layout_get_indent (layout), ==, pango_layout_get_indent (layout2));
+  g_assert_cmpint (pango_layout_get_spacing (layout), ==, pango_layout_get_spacing (layout2));
+
+  g_object_unref (layout);
+  g_object_unref (layout2);
+  g_object_unref (context);
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/layout/roundtrip", test_roundtrip);
+
+  return g_test_run ();
+}


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