fontconfig: Branch 'master'

[email protected] (Akira TAGOH)
Newsgroups gmane.comp.fonts.fontconfig
Message-ID <[email protected]>
 test/Makefile.am       |    4 ++
 test/test-name-parse.c |   90 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 94 insertions(+)

New commits:
commit fb7be6d60586302e89b7bbc894b91cb6cd33fbf3
Author: Akira TAGOH <[email protected]>
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;
+}
_______________________________________________
Fontconfig mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/fontconfig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.