From 76c6f4164f133e056bd75378a4a2e912d153550e Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sun, 23 Jan 2022 10:43:37 -0700 Subject: [PATCH] [test] Add test-serialize --- src/Makefile.am | 5 +++++ src/meson.build | 1 + src/test-serialize.cc | 51 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 src/test-serialize.cc diff --git a/src/Makefile.am b/src/Makefile.am index c0c77055e..e8e5a16d0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -351,6 +351,7 @@ COMPILED_TESTS = \ test-ot-tag \ test-priority-queue \ test-set \ + test-serialize \ test-unicode-ranges \ test-vector \ test-bimap \ @@ -397,6 +398,10 @@ test_set_SOURCES = test-set.cc hb-static.cc test_set_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) test_set_LDADD = $(COMPILED_TESTS_LDADD) +test_serialize_SOURCES = test-serialize.cc hb-static.cc +test_serialize_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) +test_serialize_LDADD = $(COMPILED_TESTS_LDADD) + test_unicode_ranges_SOURCES = test-unicode-ranges.cc test_unicode_ranges_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS) test_unicode_ranges_LDADD = $(COMPILED_TESTS_LDADD) diff --git a/src/meson.build b/src/meson.build index 2bd32f9b8..d70dc8799 100644 --- a/src/meson.build +++ b/src/meson.build @@ -492,6 +492,7 @@ if get_option('tests').enabled() 'test-number': ['test-number.cc', 'hb-number.cc'], 'test-ot-tag': ['hb-ot-tag.cc'], 'test-set': ['test-set.cc', 'hb-static.cc'], + 'test-serialize': ['test-serialize.cc', 'hb-static.cc'], 'test-unicode-ranges': ['test-unicode-ranges.cc'], 'test-vector': ['test-vector.cc', 'hb-static.cc'], 'test-bimap': ['test-bimap.cc', 'hb-static.cc'], diff --git a/src/test-serialize.cc b/src/test-serialize.cc new file mode 100644 index 000000000..954d62dde --- /dev/null +++ b/src/test-serialize.cc @@ -0,0 +1,51 @@ +/* + * Copyright © 2022 Behdad Esfahbod + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + */ + +#include "hb.hh" +#include "hb-serialize.hh" +#include "hb-ot-layout-common.hh" + + +int +main (int argc, char **argv) +{ + char buf[16384]; + + hb_serialize_context_t s (buf, sizeof (buf)); + + hb_sorted_vector_t v{1, 2, 5}; + + HB_UNUSED auto c = s.start_serialize (); + + c->serialize (&s, hb_iter (v)); + + s.end_serialize (); + + hb_bytes_t bytes = s.copy_bytes (); + printf ("serialized %u bytes\n", bytes.length); + bytes.fini (); + + return 0; +}