diff options
Diffstat (limited to 'test/test-name-parse.c')
-rw-r--r-- | test/test-name-parse.c | 90 |
1 files changed, 90 insertions, 0 deletions
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; +} |