diff options
Diffstat (limited to 'Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c')
-rw-r--r-- | Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c | 236 |
1 files changed, 116 insertions, 120 deletions
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c index 2b3cc322c45..fcd040adbec 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c @@ -11,149 +11,145 @@ #define LY (HEIGHT/2) // Line Y #define HT 2 // Half of line-thickness - -gdImagePtr mkwhite(int x, int y) +static gdImagePtr +mkwhite(int x, int y) { - gdImagePtr im; + gdImagePtr im; im = gdImageCreateTrueColor(x, y); gdImageFilledRectangle(im, 0, 0, x-1, y-1, - gdImageColorExactAlpha(im, 255, 255, 255, 0)); + gdImageColorExactAlpha(im, 255, 255, 255, 0)); - gdTestAssert(im != NULL); + gdTestAssert(im != NULL); - gdImageSetInterpolationMethod(im, GD_BICUBIC); // FP interp'n + gdImageSetInterpolationMethod(im, GD_BICUBIC); // FP interp'n - return im; + return im; }/* mkwhite*/ +static gdImagePtr +mkcross(void) +{ + gdImagePtr im; + int fg, n; -gdImagePtr mkcross() { - gdImagePtr im; - int fg, n; - - im = mkwhite(WIDTH, HEIGHT); - fg = gdImageColorAllocate(im, 0, 0, 0); + im = mkwhite(WIDTH, HEIGHT); + fg = gdImageColorAllocate(im, 0, 0, 0); - for (n = -HT; n < HT; n++) { - gdImageLine(im, LX-n, 0, LX-n, HEIGHT-1, fg); - gdImageLine(im, 0, LY-n, WIDTH-1, LY-n, fg); - }/* for */ + for (n = -HT; n < HT; n++) { + gdImageLine(im, LX-n, 0, LX-n, HEIGHT-1, fg); + gdImageLine(im, 0, LY-n, WIDTH-1, LY-n, fg); + }/* for */ - return im; + return im; }/* mkcross*/ - - - -void -do_test() { - - gdTestAssertMsg(strchr("123",'2') != 0, "strchr() is not functional.\n"); - gdTestAssertMsg(strcasecmp("123abC","123Abc") == 0, "strcasecmp() is not functional.\n"); - - int n; - struct { - const char *nm; // Filename - unsigned maxdiff; // Maximum total pixel diff - int required; // 1 -> image type always supported, -1 -> skip it - int readonly; // 1 -> gd can only read this type - } names[] = { - {"img.png", 0, 0, 0}, - {"img.gif", 5, 1, 0}, // This seems to come from tc<->palette - {"img.GIF", 5, 1, 0}, // Test for case insensitivity - {"img.gd", 0, 1, 0}, - {"img.gd2", 0, 0, 0}, - {"img.jpg", 25, 0, 0}, - {"img.jpeg", 25, 0, 0}, - {"img.wbmp", 0, 1, 0}, - {"img.bmp", 0, 1, 0}, - {"img-ref.xpm", 0, 0, 1}, - {"img-ref.xbm", 0, 1, 1}, - {"img-ref.tga", 0, 1, 1}, - {"img.webp", 10, 1, 0}, - {"img.tiff", 0, 1, 0}, - - {NULL, 0} - }; - - for (n = 0; names[n].nm; n++) { - gdImagePtr orig, copy; - int status; - char *full_filename = NULL; - unsigned int pixels; - - /* Some image readers are buggy and crash the program so we - * skip them. Bug fixers should remove these from the list of - * skipped items as bugs are fixed. */ - if (names[n].required < 0) { - printf("Skipping test for '%s'. FIX THIS!\n", names[n].nm); - continue; - }/* if */ - - /* Skip this file if the current library build doesn't support - * it. (If it's one of the built-in types, *that* a different - * problem; we assert that here.) */ - if (!gdSupportsFileType(names[n].nm, 0)) { - gdTestAssertMsg(!names[n].required, "GD doesn't support required file type: %s\n", names[n].nm); - continue; - }/* if */ - - orig = mkcross(); - - /* Write the image unless writing is not supported. */ - if (!names[n].readonly) { - /* Prepend the test directory; this is expected to be run in - * the parent dir. */ - full_filename = gdTestTempFile(names[n].nm); - status = gdImageFile(orig, full_filename); - gdTestAssertMsg(status == GD_TRUE, "Failed to create %s\n", full_filename); - } else { - /* Prepend the test directory; this is expected to be run in - * the parent dir. */ - full_filename = gdTestFilePath2("gdimagefile", names[n].nm); - }/* if */ - - copy = gdImageCreateFromFile(full_filename); - gdTestAssertMsg(!!copy, "Failed to load %s\n", full_filename); - if (!copy) continue; - - pixels = gdMaxPixelDiff(orig, copy); - gdTestAssertMsg(pixels <= names[n].maxdiff, "%u pixels different on %s\n", pixels, full_filename); - - if (!names[n].readonly) { - status = remove(full_filename); - gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename); - }/* if */ - - free(full_filename); - gdImageDestroy(orig); - gdImageDestroy(copy); - }/* for */ +static void +do_test(void) +{ + gdTestAssertMsg(strchr("123",'2') != 0, "strchr() is not functional.\n"); + gdTestAssertMsg(strcasecmp("123abC","123Abc") == 0, "strcasecmp() is not functional.\n"); + + int n; + struct { + const char *nm; // Filename + unsigned maxdiff; // Maximum total pixel diff + int required; // 1 -> image type always supported, -1 -> skip it + int readonly; // 1 -> gd can only read this type + } names[] = { + {"img.png", 0, 0, 0}, + {"img.gif", 5, 1, 0}, // This seems to come from tc<->palette + {"img.GIF", 5, 1, 0}, // Test for case insensitivity + {"img.gd", 0, 1, 0}, + {"img.gd2", 0, 0, 0}, + {"img.jpg", 25, 0, 0}, + {"img.jpeg", 25, 0, 0}, + {"img.wbmp", 0, 1, 0}, + {"img.bmp", 0, 1, 0}, + {"img-ref.xpm", 0, 0, 1}, + {"img-ref.xbm", 0, 1, 1}, + {"img-ref.tga", 0, 1, 1}, + {"img.webp", 10, 1, 0}, + {"img.tiff", 0, 1, 0}, + + {NULL, 0} + }; + + for (n = 0; names[n].nm; n++) { + gdImagePtr orig, copy; + int status; + char *full_filename = NULL; + unsigned int pixels; + + /* Some image readers are buggy and crash the program so we + * skip them. Bug fixers should remove these from the list of + * skipped items as bugs are fixed. */ + if (names[n].required < 0) { + printf("Skipping test for '%s'. FIX THIS!\n", names[n].nm); + continue; + }/* if */ + + /* Skip this file if the current library build doesn't support + * it. (If it's one of the built-in types, *that* a different + * problem; we assert that here.) */ + if (!gdSupportsFileType(names[n].nm, 0)) { + gdTestAssertMsg(!names[n].required, "GD doesn't support required file type: %s\n", names[n].nm); + continue; + }/* if */ + + orig = mkcross(); + + /* Write the image unless writing is not supported. */ + if (!names[n].readonly) { + /* Prepend the test directory; this is expected to be run in + * the parent dir. */ + full_filename = gdTestTempFile(names[n].nm); + status = gdImageFile(orig, full_filename); + gdTestAssertMsg(status == GD_TRUE, "Failed to create %s\n", full_filename); + } else { + /* Prepend the test directory; this is expected to be run in + * the parent dir. */ + full_filename = gdTestFilePath2("gdimagefile", names[n].nm); + }/* if */ + + copy = gdImageCreateFromFile(full_filename); + gdTestAssertMsg(!!copy, "Failed to load %s\n", full_filename); + if (!copy) continue; + + pixels = gdMaxPixelDiff(orig, copy); + gdTestAssertMsg(pixels <= names[n].maxdiff, "%u pixels different on %s\n", pixels, full_filename); + + if (!names[n].readonly) { + status = remove(full_filename); + gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename); + }/* if */ + + free(full_filename); + gdImageDestroy(orig); + gdImageDestroy(copy); + }/* for */ }/* do_test*/ +static void +do_errortest(void) +{ + gdImagePtr im; -void -do_errortest() { - gdImagePtr im; - - im = mkcross(); + im = mkcross(); - gdTestAssert(!gdImageFile(im, "img.xpng")); - gdTestAssert(!gdImageFile(im, "bobo")); - gdTestAssert(!gdImageFile(im, "png")); - gdTestAssert(!gdImageFile(im, "")); + gdTestAssert(!gdImageFile(im, "img.xpng")); + gdTestAssert(!gdImageFile(im, "bobo")); + gdTestAssert(!gdImageFile(im, "png")); + gdTestAssert(!gdImageFile(im, "")); - gdImageDestroy(im); + gdImageDestroy(im); }/* do_errortest*/ - int main() { + do_test(); + do_errortest(); - do_test(); - do_errortest(); - - return gdNumFailures(); + return gdNumFailures(); } |