diff options
author | Akira TAGOH <akira@tagoh.org> | 2018-03-14 21:42:11 +0900 |
---|---|---|
committer | Akira TAGOH <akira@tagoh.org> | 2018-03-14 21:42:11 +0900 |
commit | fb7be6d60586302e89b7bbc894b91cb6cd33fbf3 (patch) | |
tree | 9c8566f23c59d8a460539372624c32f7eb846abd /test | |
parent | 4699406a68321179b14fae7412f828e2f37a7033 (diff) |
Add a testcase for FcNameParse
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 4 | ||||
-rw-r--r-- | test/test-name-parse.c | 90 |
2 files changed, 94 insertions, 0 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index 75e326cf..88b7f27e 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 00000000..0adb525c --- /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; +} |