[Fontconfig] fontconfig: Branch 'master'

Akira TAGOH tagoh at kemper.freedesktop.org
Wed Mar 14 12:43:16 UTC 2018


 test/Makefile.am       |    4 ++
 test/test-name-parse.c |   90 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 94 insertions(+)

New commits:
commit fb7be6d60586302e89b7bbc894b91cb6cd33fbf3
Author: Akira TAGOH <akira at tagoh.org>
Date:   Wed Mar 14 21:42:11 2018 +0900

    Add a testcase for FcNameParse

diff --git a/test/Makefile.am b/test/Makefile.am
index 75e326c..88b7f27 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -55,6 +55,10 @@ check_PROGRAMS += test-bz96676
 test_bz96676_LDADD = $(top_builddir)/src/libfontconfig.la
 TESTS += test-bz96676
 
+check_PROGRAMS += test-name-parse
+test_name_parse_LDADD = $(top_builddir)/src/libfontconfig.la
+TESTS += test-name-parse
+
 EXTRA_DIST=run-test.sh $(TESTDATA) out.expected-long-family-names out.expected-no-long-family-names
 
 CLEANFILES=out fonts.conf
diff --git a/test/test-name-parse.c b/test/test-name-parse.c
new file mode 100644
index 0000000..0adb525
--- /dev/null
+++ b/test/test-name-parse.c
@@ -0,0 +1,90 @@
+#include <fontconfig/fontconfig.h>
+#include <stdio.h>
+
+int
+test (const FcChar8 *query, const FcPattern *expect)
+{
+    FcPattern *pat;
+    int c = 0;
+
+    c++;
+    pat = FcNameParse (query);
+    if (!pat)
+	goto bail;
+    c++;
+    if (!FcPatternEqual (pat, expect))
+	goto bail;
+    c = 0;
+bail:
+    FcPatternDestroy (pat);
+
+    return c;
+}
+
+#define BEGIN(x)	(x) = FcPatternCreate (); c++;
+#define END(x)		FcPatternDestroy (x); (x) = NULL
+int
+main (void)
+{
+    FcPattern *pat, *expect;
+    int c = 0, ret;
+
+    BEGIN (expect) {
+	FcPatternAddString (expect, FC_FAMILY, (const FcChar8 *)"sans-serif");
+	if ((ret = test ((const FcChar8 *)"sans\\-serif", expect)) != 0)
+	    goto bail;
+    } END (expect);
+    BEGIN (expect) {
+	FcPatternAddString (expect, FC_FAMILY, (const FcChar8 *)"Foo");
+	FcPatternAddInteger (expect, FC_SIZE, 10);
+	if ((ret = test ((const FcChar8 *)"Foo-10", expect)) != 0)
+	    goto bail;
+    } END (expect);
+    BEGIN (expect) {
+	FcPatternAddString (expect, FC_FAMILY, (const FcChar8 *)"Foo");
+	FcPatternAddString (expect, FC_FAMILY, (const FcChar8 *)"Bar");
+	FcPatternAddInteger (expect, FC_SIZE, 10);
+	if ((ret = test ((const FcChar8 *)"Foo,Bar-10", expect)) != 0)
+	    goto bail;
+    } END (expect);
+    BEGIN (expect) {
+	FcPatternAddString (expect, FC_FAMILY, (const FcChar8 *)"Foo");
+	FcPatternAddInteger (expect, FC_WEIGHT, FC_WEIGHT_MEDIUM);
+	if ((ret = test ((const FcChar8 *)"Foo:weight=medium", expect)) != 0)
+	    goto bail;
+    } END (expect);
+    BEGIN (expect) {
+	FcPatternAddString (expect, FC_FAMILY, (const FcChar8 *)"Foo");
+	FcPatternAddInteger (expect, FC_WEIGHT, FC_WEIGHT_MEDIUM);
+	if ((ret = test ((const FcChar8 *)"Foo:weight_medium", expect)) != 0)
+	    goto bail;
+    } END (expect);
+    BEGIN (expect) {
+	FcPatternAddInteger (expect, FC_WEIGHT, FC_WEIGHT_MEDIUM);
+	if ((ret = test ((const FcChar8 *)":medium", expect)) != 0)
+	    goto bail;
+    } END (expect);
+    BEGIN (expect) {
+	FcPatternAddInteger (expect, FC_WIDTH, FC_WIDTH_NORMAL);
+	if ((ret = test ((const FcChar8 *)":normal", expect)) != 0)
+	    goto bail;
+    } END (expect);
+    BEGIN (expect) {
+	FcPatternAddInteger (expect, FC_WIDTH, FC_WIDTH_NORMAL);
+	if ((ret = test ((const FcChar8 *)":normal", expect)) != 0)
+	    goto bail;
+    } END (expect);
+    BEGIN (expect) {
+	FcRange *r = FcRangeCreateDouble (FC_WEIGHT_MEDIUM, FC_WEIGHT_BOLD);
+	FcPatternAddRange (expect, FC_WEIGHT, r);
+	FcRangeDestroy (r);
+	if ((ret = test ((const FcChar8 *)":weight=[medium bold]", expect)) != 0)
+	    goto bail;
+    } END (expect);
+
+bail:
+    if (expect)
+	FcPatternDestroy (expect);
+
+    return ret == 0 ? 0 : (c - 1) * 2 + ret;
+}


More information about the Fontconfig mailing list