diff options
Diffstat (limited to 'Build/source/libs/gd/libgd-src/tests')
238 files changed, 2600 insertions, 1176 deletions
diff --git a/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt index 5f8706fdb02..3c1402c57dc 100644 --- a/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt @@ -18,8 +18,8 @@ if (BUILD_TEST) include_directories (BEFORE ${GD_INCLUDE_DIR} "${GDTEST_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/tests/gdtest") SET(TESTS_DIRS - gdtest bmp + freetype gd gd2 gdimagearc @@ -30,47 +30,45 @@ if (BUILD_TEST) gdimagecolorresolve gdimagecolortransparent gdimagecopy + gdimagecopyresampled gdimagecopyrotated + gdimagecrop + gdimagefile gdimagefill + gdimagefilledarc gdimagefilledellipse gdimagefilledpolygon gdimagefilledrectangle gdimagefilltoborder + gdimagefilter gdimageline gdimageopenpolygon gdimagepixelate gdimagepolygon gdimagerectangle gdimagerotate + gdimagescale gdimagescatterex gdimagesetpixel + gdimagestringft + gdimagestringftex + gdimagetruecolortopalette + gdinterpolatedscale gdnewfilectx + gdtest gdtiled + gdtransformaffineboundingbox gif + jpeg + png tga + tiff wbmp + webp + xbm + xpm ) - IF(FREETYPE_FOUND) - LIST(APPEND TESTS_DIRS freetype gdimagestringft gdimagestringftex) - ENDIF(FREETYPE_FOUND) - - IF(JPEG_FOUND) - LIST(APPEND TESTS_DIRS jpeg) - ENDIF(JPEG_FOUND) - - IF(PNG_FOUND) - LIST(APPEND TESTS_DIRS png) - ENDIF(PNG_FOUND) - - IF(TIFF_FOUND) - LIST(APPEND TESTS_DIRS tiff) - ENDIF(TIFF_FOUND) - - IF(XPM_FOUND) - LIST(APPEND TESTS_DIRS xpm) - ENDIF(XPM_FOUND) - FOREACH(test_dir ${TESTS_DIRS}) add_subdirectory (${test_dir}) ENDFOREACH(test_dir) diff --git a/Build/source/libs/gd/libgd-src/tests/Makefile.am b/Build/source/libs/gd/libgd-src/tests/Makefile.am index 346bcd4c265..afdcd5d6a0a 100644 --- a/Build/source/libs/gd/libgd-src/tests/Makefile.am +++ b/Build/source/libs/gd/libgd-src/tests/Makefile.am @@ -1,368 +1,89 @@ -noinst_LIBRARIES = libgdtest.a
-
-libgdtest_a_SOURCES = \
- gdtest/gdtest.c \
- gdtest/gdtest.h \
- ../src/gdhelpers.c
-
-check_PROGRAMS = \
- gd2/gd2_empty_file \
- gdimagesetpixel/bug00186 \
- gdimagestringftex/gdimagestringftex_returnfontpathname \
- gdimageline/gdimageline_aa_outofrange \
- gdimagerectangle/bug00003 \
- gdimagerectangle/bug00106_gdimagerectangle \
- gd/gd_null \
- gd/gd_num_colors \
- tga/tga_null \
- gdimagepixelate/gdimagepixelate \
- gdimagecopy/bug00007 \
- gdnewfilectx/gdnewfilectx_null \
- gdimagefilledrectangle/bug00078 \
- gdimagefilledrectangle/bug00004 \
- gdimagefilledrectangle/bug00106_gdimagefilledrectangle \
- gdimagecolordeallocate/gdimagecolordeallocate \
- wbmp/wbmp_null \
- gdimagecolortransparent/gdimagecolortransparent \
- gif/bug00005_2 \
- gif/gif_null \
- gif/bug00181 \
- gif/bug00227 \
- bmp/bmp_null \
- gdinterpolatedscale/gdTrivialResize \
- gdinterpolatedscale/gdModesAndPalettes \
- gd/gd_versiontest \
- gdimagefilter/gdCopyBlurred \
- gdimagefile/gdnametest
-
-EXTRA_PROGRAMS = \
- gdimagestringft/gdimagestringft_bbox \
- gdtiled/bug00032 \
- gd2/gd2_im2im \
- gd2/gd2_null \
- gd2/gd2_read \
- gdimagearc/bug00079 \
- gdimageline/gdimageline_aa \
- gdimageline/bug00072 \
- gdimageline/bug00077 \
- gdimageline/bug00111 \
- gdimageline/gdimageline_bug5 \
- gdimageline/gdImageAALine_thickness \
- gdimageopenpolygon/gdimageopenpolygon2 \
- gdimageopenpolygon/gdimageopenpolygon1 \
- gdimageopenpolygon/gdimageopenpolygon0 \
- gdimageopenpolygon/gdimageopenpolygon3 \
- gd/gd_im2im \
- gdimagecopy/bug00081 \
- gdimagecopyrotated/bug00020 \
- gdimagepolygon/gdimagepolygon0 \
- gdimagepolygon/gdimagepolygon3 \
- gdimagepolygon/gdimagepolygon1 \
- gdimagepolygon/gdimagepolygon2 \
- gdimagecolorresolve/gdimagecolorresolve \
- gdimagefilledpolygon/gdimagefilledpolygon0 \
- gdimagefilledpolygon/gdimagefilledpolygon3 \
- gdimagefilledpolygon/gdimagefilledpolygon2 \
- gdimagefilledpolygon/gdimagefilledpolygon1 \
- gdimagefilledpolygon/bug00100 \
- gdimagecolorreplace/gdimagecolorreplace \
- gdimagefill/bug00002_2 \
- gdimagefill/bug00002_1 \
- gdimagefill/bug00002_4 \
- gdimagefill/bug00002_3 \
- gdimagecolorclosest/gdimagecolorclosest \
- gif/bug00005 \
- gif/gif_im2im \
- gif/bug00066 \
- gif/bug00006 \
- gif/bug00060 \
- gdimagecolorexact/gdimagecolorexact \
- gdimagefilledellipse/bug00191 \
- gdimagefilledellipse/bug00010 \
- xpm/bug00185 \
- xpm/color_name \
- xpm/bug00166 \
- jpeg/jpeg_empty_file \
- jpeg/jpeg_resolution \
- jpeg/jpeg_im2im \
- jpeg/jpeg_null \
- jpeg/jpeg_read \
- png/png_null \
- png/bug00033 \
- png/bug00193 \
- png/bug00011 \
- png/bug00088 \
- png/png_resolution \
- png/bug00086 \
- png/png_im2im \
- wbmp/wbmp_im2im \
- tiff/tiff_null \
- tiff/tiff_im2im \
- freetype/bug00132 \
- bmp/bmp_im2im \
- gdimagescatterex/bug00208_1 \
- gdimagescatterex/bug00208_2 \
- gdimagefilltoborder/bug00037 \
- gdimagerotate/php_bug_64898 \
- gdimagerotate/bug00067
-
-if HAVE_LIBXPM
-check_PROGRAMS += \
- xpm/bug00185 \
- xpm/color_name \
- xpm/bug00166
-endif
-
-if HAVE_LIBJPEG
-check_PROGRAMS += \
- jpeg/jpeg_empty_file \
- jpeg/jpeg_im2im \
- jpeg/jpeg_null
-if HAVE_LIBPNG
-check_PROGRAMS += \
- jpeg/jpeg_resolution \
- jpeg/jpeg_read
-endif
-endif
-
-if HAVE_LIBZ
-check_PROGRAMS += \
- gd2/gd2_null
-endif
-
-if HAVE_LIBPNG
-if HAVE_LIBZ
-check_PROGRAMS += \
- gd2/gd2_read \
- gd2/gd2_im2im \
- gdtiled/bug00032
-endif
-check_PROGRAMS += \
- gdimagestringft/gdimagestringft_bbox \
- gdimagearc/bug00079 \
- gdimageline/gdimageline_aa \
- gdimageline/bug00072 \
- gdimageline/bug00077 \
- gdimageline/bug00111 \
- gdimageline/gdimageline_bug5 \
- gdimageline/gdImageAALine_thickness \
- gdimageopenpolygon/gdimageopenpolygon2 \
- gdimageopenpolygon/gdimageopenpolygon1 \
- gdimageopenpolygon/gdimageopenpolygon0 \
- gdimageopenpolygon/gdimageopenpolygon3 \
- gd/gd_im2im \
- gdimagecopy/bug00081 \
- gdimagecopyrotated/bug00020 \
- gdimagepolygon/gdimagepolygon0 \
- gdimagepolygon/gdimagepolygon3 \
- gdimagepolygon/gdimagepolygon1 \
- gdimagepolygon/gdimagepolygon2 \
- gdimagecolorresolve/gdimagecolorresolve \
- gdimagefilledpolygon/gdimagefilledpolygon0 \
- gdimagefilledpolygon/gdimagefilledpolygon3 \
- gdimagefilledpolygon/gdimagefilledpolygon2 \
- gdimagefilledpolygon/gdimagefilledpolygon1 \
- gdimagefilledpolygon/bug00100 \
- gdimagecolorreplace/gdimagecolorreplace \
- gdimagefill/bug00002_2 \
- gdimagefill/bug00002_1 \
- gdimagefill/bug00002_4 \
- gdimagefill/bug00002_3 \
- gdimagecolorclosest/gdimagecolorclosest \
- gif/bug00005 \
- gif/gif_im2im \
- gif/bug00066 \
- gif/bug00006 \
- gif/bug00060 \
- gdimagecolorexact/gdimagecolorexact \
- gdimagefilledellipse/bug00191 \
- gdimagefilledellipse/bug00010 \
- png/png_null \
- png/bug00033 \
- png/bug00193 \
- png/bug00011 \
- png/bug00088 \
- png/png_resolution \
- png/bug00086 \
- png/png_im2im \
- wbmp/wbmp_im2im \
- bmp/bmp_im2im \
- gdimagescatterex/bug00208_1 \
- gdimagescatterex/bug00208_2 \
- gdimagefilltoborder/bug00037 \
- gdimagerotate/php_bug_64898 \
- gdimagerotate/bug00067
-endif
-
-if HAVE_LIBTIFF
-check_PROGRAMS += \
- tiff/tiff_null \
- tiff/tiff_im2im
-endif
-
-if HAVE_LIBFREETYPE
-check_PROGRAMS +=
- freetype/bug00132
-endif
-
-LDADD = libgdtest.a ../src/libgd.la
-AM_CPPFLAGS = -I$(top_srcdir)/src -I $(top_srcdir)/tests/gdtest
-
-TESTS = $(check_PROGRAMS)
-
-EXTRA_DIST = \
- gdtest/test_config.h.cmake \
- xpm/bug00166.xpm \
- xpm/bug00185.xpm \
- xpm/bug00185_damaged.xpm \
- xpm/color_name.xpm \
- gdtiled/bug00032_exp.png \
- jpeg/conv_test.jpeg \
- jpeg/conv_test_exp.png \
- jpeg/empty.jpeg \
- gd2/conv_test.gd2 \
- gd2/conv_gd2_exp.gd2 \
- gd2/empty.gd2 \
- gd2/conv_test_exp.png \
- gdimagearc/bug00079_exp.png \
- png/bug00088_2.png \
- png/bug00088_1_exp.png \
- png/bug00033.png \
- png/bug00088_2_exp.png \
- png/bug00088_1.png \
- png/emptyfile \
- gdimageline/gdimageline_aa_b_0_exp.png \
- gdimageline/gdimageline_aa_c_0_exp.png \
- gdimageline/gdimageline_aa_d_1_exp.png \
- gdimageline/gdimageline_aa_a_1_exp.png \
- gdimageline/gdimageline_aa_d_0_exp.png \
- gdimageline/bug00111_exp.png \
- gdimageline/gdimageline_aa_c_1_exp.png \
- gdimageline/gdimageline_aa_a_0_exp.png \
- gdimageline/gdimageline_aa_b_1_exp.png \
- gdimageline/bug00072_exp.png \
- gdimageline/bug00077_exp.png \
- gdimageopenpolygon/gdimageopenpolygon0.png \
- gdimageopenpolygon/gdimageopenpolygon1.png \
- gdimageopenpolygon/gdimageopenpolygon2.png \
- gdimageopenpolygon/gdimageopenpolygon3.png \
- gd/crafted_num_colors.gd \
- gdimagecopy/bug00081_exp.png \
- gdimagecopyrotated/bug00020_exp.png \
- gdimagepolygon/gdimagepolygon1.png \
- gdimagepolygon/gdimagepolygon3.png \
- gdimagepolygon/gdimagepolygon0.png \
- gdimagepolygon/gdimagepolygon2.png \
- gdimagefilledpolygon/gdimagefilledpolygon0.png \
- gdimagefilledpolygon/gdimagefilledpolygon1.png \
- gdimagefilledpolygon/gdimagefilledpolygon3.png \
- gdimagefilledpolygon/gdimagefilledpolygon2.png \
- gdimagefilledpolygon/bug00100.png \
- gdimagefill/bug00002_3_exp.png \
- gdimagefill/bug00002_2_exp.png \
- gdimagefill/bug00002_1_exp.png \
- gdimagefill/bug00002_4_exp.png \
- gif/bug00005_0.gif \
- gif/bug00005_1.gif \
- gif/bug00005_3.gif \
- gif/bug00005_2.gif \
- gif/bug00060.gif \
- gif/bug00066_exp.png \
- gif/bug00005_2_exp.png \
- gif/bug00066.gif \
- gdimagefilledellipse/bug00191.png \
- gdimagefilledellipse/bug00010_exp.png \
- gdimagescatterex/bug00208_2.png \
- gdimagescatterex/bug00208.png \
- gdimagescatterex/bug00208_1.png \
- freetype/bug00132_exp.png \
- freetype/DejaVuSans.ttf \
- gdimagestringft/CMakeLists.txt \
- gdtest/CMakeLists.txt \
- xpm/CMakeLists.txt \
- gdtiled/CMakeLists.txt \
- jpeg/CMakeLists.txt \
- gd2/CMakeLists.txt \
- gdimagesetpixel/CMakeLists.txt \
- gdimagearc/CMakeLists.txt \
- png/CMakeLists.txt \
- gdimagestringftex/CMakeLists.txt \
- gdimageline/CMakeLists.txt \
- gdimageopenpolygon/CMakeLists.txt \
- gdimagerectangle/CMakeLists.txt \
- gd/CMakeLists.txt \
- tga/CMakeLists.txt \
- gdimagepixelate/CMakeLists.txt \
- tiff/CMakeLists.txt \
- gdimagecopy/CMakeLists.txt \
- CMakeLists.txt \
- gdnewfilectx/CMakeLists.txt \
- gdimagefilledrectangle/CMakeLists.txt \
- gdimagecopyrotated/CMakeLists.txt \
- gdimagepolygon/CMakeLists.txt \
- gdimagecolordeallocate/CMakeLists.txt \
- wbmp/CMakeLists.txt \
- gdimagecolorresolve/CMakeLists.txt \
- gdimagefilledpolygon/CMakeLists.txt \
- gdimagecolorreplace/CMakeLists.txt \
- gdimagefill/CMakeLists.txt \
- gdimagecolorclosest/CMakeLists.txt \
- gdimagecolortransparent/CMakeLists.txt \
- gif/CMakeLists.txt \
- gdimagecolorexact/CMakeLists.txt \
- gdimagefilledellipse/CMakeLists.txt \
- bmp/CMakeLists.txt \
- gdimagescatterex/CMakeLists.txt \
- gdimagefilltoborder/CMakeLists.txt \
- freetype/CMakeLists.txt \
- gdimagerotate/php_bug_64898.png \
- gdimagerotate/php_bug_64898_exp.png \
- gdimagerotate/remirh128.jpg \
- gdimagerotate/bug00067_000_exp.png \
- gdimagerotate/bug00067_015_exp.png \
- gdimagerotate/bug00067_030_exp.png \
- gdimagerotate/bug00067_045_exp.png \
- gdimagerotate/bug00067_060_exp.png \
- gdimagerotate/bug00067_075_exp.png \
- gdimagerotate/bug00067_090_exp.png \
- gdimagerotate/bug00067_105_exp.png \
- gdimagerotate/bug00067_120_exp.png \
- gdimagerotate/bug00067_135_exp.png \
- gdimagerotate/bug00067_150_exp.png \
- gdimagerotate/bug00067_165_exp.png \
- gdimagerotate/bug00067_180_exp.png \
- gdimagefile/img-ref.tga \
- gdimagefile/img-ref.xbm \
- gdimagefile/img-ref.xpm \
- gdimageline/gdImageAALine_thickness_exp.png
-
-CLEANFILES = \
- a.png \
- bmp_im2im_dst.bmp \
- bmp_im2im_src.bmp \
- bug00132.c_35_diff.png \
- bug00132.c_35_out.png \
- bug00181.gif \
- bug00181a.gif \
- bug00227.gif \
- gd2_im2im_dst.gd2 \
- gd2_im2im_src.gd2 \
- gd_im2im_dst.gd \
- gd_im2im_src.gd \
- gdimageline_aa.c_38_diff.png \
- gdimageline_aa.c_38_out.png \
- gdimagestringft_bbox.png \
- gif_im2im_dst.gif \
- gif_im2im_src.gif \
- jpeg_im2im_dst.jpeg \
- jpeg_im2im_src.jpeg \
- jpeg_read.c_25_diff.png \
- jpeg_read.c_25_out.png \
- png_im2im_dst.png \
- png_im2im_src.png \
- tiff_im2im_dst.tiff \
- tiff_im2im_src.tiff \
- wbmp/wbmp_im2im_dst.wbmp \
- wbmp/wbmp_im2im_src.wbmp \
- wbmp_im2im_dst.wbmp \
- wbmp_im2im_src.wbmp
+check_LIBRARIES = libgdtest.a + +libgdtest_a_SOURCES = \ + gdtest/gdtest.c \ + gdtest/gdtest.h \ + gdhelpers.c + +# Setup vars that subdirs will increment. +libgd_test_programs = +libgd_helper_programs = +CLEANFILES = +EXTRA_DIST = +TESTS = + +include bmp/Makemodule.am +include freetype/Makemodule.am +include gd/Makemodule.am +include gd2/Makemodule.am +include gdimagearc/Makemodule.am +include gdimagecolorclosest/Makemodule.am +include gdimagecolordeallocate/Makemodule.am +include gdimagecolorexact/Makemodule.am +include gdimagecolorreplace/Makemodule.am +include gdimagecolorresolve/Makemodule.am +include gdimagecolortransparent/Makemodule.am +include gdimagecopy/Makemodule.am +include gdimagecopyresampled/Makemodule.am +include gdimagecopyrotated/Makemodule.am +include gdimagecrop/Makemodule.am +include gdimagefile/Makemodule.am +include gdimagefill/Makemodule.am +include gdimagefilledarc/Makemodule.am +include gdimagefilledellipse/Makemodule.am +include gdimagefilledpolygon/Makemodule.am +include gdimagefilledrectangle/Makemodule.am +include gdimagefilltoborder/Makemodule.am +include gdimagefilter/Makemodule.am +include gdimageline/Makemodule.am +include gdimageopenpolygon/Makemodule.am +include gdimagepixelate/Makemodule.am +include gdimagepolygon/Makemodule.am +include gdimagerectangle/Makemodule.am +include gdimagerotate/Makemodule.am +include gdimagescale/Makemodule.am +include gdimagescatterex/Makemodule.am +include gdimagesetpixel/Makemodule.am +include gdimagestringft/Makemodule.am +include gdimagestringftex/Makemodule.am +include gdimagetruecolortopalette/Makemodule.am +include gdinterpolatedscale/Makemodule.am +include gdnewfilectx/Makemodule.am +include gdtest/Makemodule.am +include gdtiled/Makemodule.am +include gdtransformaffineboundingbox/Makemodule.am +include gif/Makemodule.am +include jpeg/Makemodule.am +include png/Makemodule.am +include tga/Makemodule.am +include tiff/Makemodule.am +include wbmp/Makemodule.am +include webp/Makemodule.am +include xbm/Makemodule.am +include xpm/Makemodule.am + +LDADD = libgdtest.a ../src/libgd.la +AM_CPPFLAGS = -I$(top_srcdir)/src -I $(top_srcdir)/tests/gdtest + +check_PROGRAMS = $(libgd_test_programs) $(libgd_helper_programs) +TESTS += $(libgd_test_programs) + +EXTRA_DIST += \ + CMakeLists.txt + +# We don't keep any media files in the top dir ... just generated outputs. +CLEANFILES += \ + *.bmp \ + *.gd \ + *.gd2 \ + *.gif \ + *.jpeg \ + *.jpg \ + *.png \ + *.tga \ + *.tiff \ + *.ttf \ + *.wbmp \ + *.webp \ + *.xbm \ + *.xpm diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt index 751c303a756..9c7800e9a67 100644 --- a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt @@ -1,11 +1,6 @@ - SET(TESTS_FILES bmp_im2im bmp_null ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest ${GD_LIB}) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am new file mode 100644 index 00000000000..73be361bede --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am @@ -0,0 +1,10 @@ +libgd_test_programs += \ + bmp/bmp_null + +if HAVE_LIBPNG +libgd_test_programs += \ + bmp/bmp_im2im +endif + +EXTRA_DIST += \ + bmp/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c b/Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c index 2beb2db4206..692588c3ee4 100644 --- a/Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/bmp/bmp_im2im.c @@ -12,7 +12,7 @@ int main() src = gdImageCreate(100, 100); if (src == NULL) { - printf("could not create src\n"); + gdTestErrorMsg("could not create src\n"); return 1; } r = gdImageColorAllocate(src, 0xFF, 0, 0); @@ -23,39 +23,35 @@ int main() gdImageEllipse(src, 70, 25, 30, 20, b); #define OUTPUT_BMP(name) do { \ - FILE *fp; \ - \ - fp = fopen("bmp_im2im_" #name ".bmp", "wb"); \ - if (fp) { \ - gdImageBmp(name, fp, 1); \ - fclose(fp); \ - } \ + FILE *fp = gdTestTempFp(); \ + gdImageBmp(name, fp, 1); \ + fclose(fp); \ } while (0) OUTPUT_BMP(src); p = gdImageBmpPtr(src, &size, 1); if (p == NULL) { status = 1; - printf("p is null\n"); + gdTestErrorMsg("p is null\n"); goto door0; } if (size <= 0) { status = 1; - printf("size is non-positive\n"); + gdTestErrorMsg("size is non-positive\n"); goto door1; } dst = gdImageCreateFromBmpPtr(size, p); if (dst == NULL) { status = 1; - printf("could not create dst\n"); + gdTestErrorMsg("could not create dst\n"); goto door1; } OUTPUT_BMP(dst); gdTestImageDiff(src, dst, NULL, &result); if (result.pixels_changed > 0) { status = 1; - printf("pixels changed: %d\n", result.pixels_changed); + gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed); } gdImageDestroy(dst); door1: diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt index 201d19a5575..83bb18d754d 100644 --- a/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt @@ -1,9 +1,7 @@ +IF(FREETYPE_FOUND) SET(TESTS_FILES # bug00132 ) +ENDIF(FREETYPE_FOUND) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am new file mode 100644 index 00000000000..d2524931193 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am @@ -0,0 +1,9 @@ +if HAVE_LIBFREETYPE +libgd_test_programs += \ + freetype/bug00132 +endif + +EXTRA_DIST += \ + freetype/CMakeLists.txt \ + freetype/bug00132_exp.png \ + freetype/DejaVuSans.ttf diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c index 88cdfc695a3..2c3d6bc8103 100644 --- a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c +++ b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c @@ -1,5 +1,3 @@ -/* $Id$ */ - #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -10,31 +8,29 @@ int main() { gdImagePtr im; int error = 0; - char path[2048]; - const char *file_exp = "bug00132_exp.png"; + char *path; char *ret = NULL; im = gdImageCreateTrueColor(50, 30); if (!im) { - printf("can't get truecolor image\n"); + gdTestErrorMsg("can't get truecolor image\n"); return 1; } gdImageAlphaBlending(im, 0); gdImageFilledRectangle(im, 0, 0, 200, 200, gdTrueColorAlpha(0, 0, 0, 127)); - sprintf(path, "%s/freetype/DejaVuSans.ttf", GDTEST_TOP_DIR); - + path = gdTestFilePath("freetype/DejaVuSans.ttf"); ret = gdImageStringFT(im, NULL, - 0xFFFFFF, path, 14.0, 0.0, 10, 20, "ϑ θ"); + free(path); if (ret) { error = 1; - printf("%s\n", ret); + gdTestErrorMsg("%s\n", ret); } else { - sprintf(path, "%s/freetype/%s", GDTEST_TOP_DIR, file_exp); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("freetype/bug00132_exp.png", im)) { error = 1; - printf("Reference image and destination differ\n"); + gdTestErrorMsg("Reference image and destination differ\n"); } } gdImageDestroy(im); diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.png b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.png Binary files differindex c45495e618f..b2c32e02875 100644 --- a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt index c5327171ba0..1fc57932e6c 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt @@ -1,4 +1,3 @@ - SET(TESTS_FILES gd_im2im gd_null @@ -6,8 +5,4 @@ SET(TESTS_FILES gd_versiontest ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am new file mode 100644 index 00000000000..e4a741fb9dd --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am @@ -0,0 +1,13 @@ +libgd_test_programs += \ + gd/gd_null \ + gd/gd_num_colors \ + gd/gd_versiontest + +if HAVE_LIBPNG +libgd_test_programs += \ + gd/gd_im2im +endif + +EXTRA_DIST += \ + gd/crafted_num_colors.gd \ + gd/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c b/Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c index a7a2226e719..385e5030cf2 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/gd/gd_im2im.c @@ -12,7 +12,7 @@ int main() src = gdImageCreate(100, 100); if (src == NULL) { - printf("could not create src\n"); + gdTestErrorMsg("could not create src\n"); return 1; } r = gdImageColorAllocate(src, 0xFF, 0, 0); @@ -23,39 +23,35 @@ int main() gdImageEllipse(src, 70, 25, 30, 20, b); #define OUTPUT_GD(x) do { \ - FILE *fp; \ - \ - fp = fopen("gd_im2im_" #x ".gd", "wb"); \ - if (fp) { \ - gdImageGd(x, fp); \ - fclose(fp); \ - } \ + FILE *fp = gdTestTempFp(); \ + gdImageGd(x, fp); \ + fclose(fp); \ } while (0) OUTPUT_GD(src); p = gdImageGdPtr(src, &size); if (p == NULL) { status = 1; - printf("p is null\n"); + gdTestErrorMsg("p is null\n"); goto door0; } if (size <= 0) { status = 1; - printf("size is non-positive\n"); + gdTestErrorMsg("size is non-positive\n"); goto door1; } dst = gdImageCreateFromGdPtr(size, p); if (dst == NULL) { status = 1; - printf("could not create dst\n"); + gdTestErrorMsg("could not create dst\n"); goto door1; } OUTPUT_GD(dst); gdTestImageDiff(src, dst, NULL, &result); if (result.pixels_changed > 0) { status = 1; - printf("pixels changed: %d\n", result.pixels_changed); + gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed); } gdImageDestroy(dst); door1: diff --git a/Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c b/Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c index 7d919361925..db4b4846568 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c +++ b/Build/source/libs/gd/libgd-src/tests/gd/gd_num_colors.c @@ -5,15 +5,7 @@ int main() { gdImagePtr im; - char path[1024]; - FILE* fp; - - sprintf(path, "%s/gd/crafted_num_colors.gd", GDTEST_TOP_DIR); - - fp = fopen(path, "rb"); - if (!fp) { - return 1; - } + FILE *fp = gdTestFileOpen("gd/crafted_num_colors.gd"); im = gdImageCreateFromGd(fp); fclose(fp); if (im) { diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt index 68a064c0fbd..8aecacc7fd5 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt @@ -1,13 +1,8 @@ - SET(TESTS_FILES - gd2_read gd2_empty_file gd2_im2im gd2_null + php_bug_72339 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am new file mode 100644 index 00000000000..4c0199039eb --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am @@ -0,0 +1,25 @@ +libgd_test_programs += \ + gd2/gd2_empty_file \ + gd2/php_bug_72339 \ + gd2/gd2_read_corrupt + +if HAVE_LIBZ +libgd_test_programs += \ + gd2/gd2_null + +if HAVE_LIBPNG +libgd_test_programs += \ + gd2/gd2_im2im \ + gd2/gd2_read +endif +endif + +EXTRA_DIST += \ + gd2/CMakeLists.txt \ + gd2/conv_gd2_exp.gd2 \ + gd2/conv_test.gd2 \ + gd2/conv_test_exp.png \ + gd2/empty.gd2 \ + gd2/invalid_header.gd2 \ + gd2/invalid_neg_size.gd2 \ + gd2/php_bug_72339_exp.gd2 diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c index 289debc541e..9b1c5b2e1b5 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c +++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_empty_file.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -7,17 +6,7 @@ int main() { gdImagePtr im; - FILE *fp; - char path[1024]; - - sprintf(path, "%s/gd2/empty.gd2", GDTEST_TOP_DIR); - - fp = fopen(path, "rb"); - if (!fp) { - printf("failed, cannot open file (%s)\n", path); - return 1; - } - + FILE *fp = gdTestFileOpen("gd2/empty.gd2"); im = gdImageCreateFromGd2(fp); fclose(fp); diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c index 7745fa5973e..02a44206554 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_im2im.c @@ -12,7 +12,7 @@ int main() src = gdImageCreate(100, 100); if (src == NULL) { - printf("could not create src\n"); + gdTestErrorMsg("could not create src\n"); return 1; } r = gdImageColorAllocate(src, 0xFF, 0, 0); @@ -23,39 +23,35 @@ int main() gdImageEllipse(src, 70, 25, 30, 20, b); #define OUTPUT_GD2(x) do { \ - FILE *fp; \ - \ - fp = fopen("gd2_im2im_" #x ".gd2", "wb"); \ - if (fp) { \ - gdImageGd2(x, fp, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED); \ - fclose(fp); \ - } \ + FILE *fp = gdTestTempFp(); \ + gdImageGd2(x, fp, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED); \ + fclose(fp); \ } while (0) OUTPUT_GD2(src); p = gdImageGd2Ptr(src, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED, &size); if (p == NULL) { status = 1; - printf("p is null\n"); + gdTestErrorMsg("p is null\n"); goto door0; } if (size <= 0) { status = 1; - printf("size is non-positive\n"); + gdTestErrorMsg("size is non-positive\n"); goto door1; } dst = gdImageCreateFromGd2Ptr(size, p); if (dst == NULL) { status = 1; - printf("could not create dst\n"); + gdTestErrorMsg("could not create dst\n"); goto door1; } OUTPUT_GD2(dst); gdTestImageDiff(src, dst, NULL, &result); if (result.pixels_changed > 0) { status = 1; - printf("pixels changed: %d\n", result.pixels_changed); + gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed); } gdImageDestroy(dst); door1: diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c index 2e78e9a6d23..94fe069f6c6 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c +++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c @@ -1,38 +1,62 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> #include "gdtest.h" -int main() +int main(int argc, char *argv[]) { - int error; - gdImagePtr im; + int error, i = 0; + gdImagePtr im, exp; FILE *fp; - char path[1024]; - - sprintf(path, "%s/gd2/conv_test.gd2", GDTEST_TOP_DIR); - - fp = fopen(path, "rb"); - if (!fp) { - printf("failed, cannot open file\n"); - return 1; - } - - im = gdImageCreateFromGd2(fp); - fclose(fp); + char *path[] = { + "conv_test.gd2", + "invalid_neg_size.gd2", + "invalid_header.gd2", + NULL + }; + char *path_exp[] = { + "conv_test_exp.png", + NULL, + NULL, + NULL + }; + while (path[i] != NULL) { + fp = gdTestFileOpen2("gd2", path[i]); + if (!fp) { + gdTestErrorMsg("failed, cannot open file: %s\n", path[0]); + return 1; + } + im = gdImageCreateFromGd2(fp); + fclose(fp); - sprintf(path, "%s/gd2/conv_test_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { - error = 1; - gdImageDestroy(im); - } else { - if (im) { - gdImageDestroy(im); - error = 0; + if (path_exp[i] != NULL) { + fp = gdTestFileOpen2("gd2", path_exp[i]); + if (!fp) { + gdTestErrorMsg("failed, cannot open file: %s\n", path_exp[i]); + return 1; + } + exp = gdImageCreateFromPng(fp); + if (!gdAssertImageEquals(exp, im)) { + gdTestErrorMsg("image %s differs from expected result\n", path[i]); + gdImageDestroy(im); + error = 1; + } else { + error = 0; + } + if (exp) { + gdImageDestroy(exp); + } } else { - error = 1; + /* expected to fail */ + if (im) { + gdTestErrorMsg("image %s should have failed to be loaded\n", path[i]); + gdImageDestroy(im); + error = 1; + } else { + error = 0; + } } + i++; } return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read_corrupt.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read_corrupt.c new file mode 100644 index 00000000000..7afc30393f2 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read_corrupt.c @@ -0,0 +1,28 @@ +/* Just try to read the invalid gd2 image & not crash. */ +#include "gd.h" +#include <stdio.h> +#include <stdlib.h> +#include "gdtest.h" + +int main(int argc, char *argv[]) +{ + gdImagePtr im; + FILE *fp; + + fp = gdTestFileOpen2("gd2", "invalid_header.gd2"); + + if (!fp) { + gdTestErrorMsg("failed, cannot open file: %s\n", "invalid_header.gd2"); + return 1; + } + im = gdImageCreateFromGd2(fp); + fclose(fp); + + if (im != NULL) { + gdTestErrorMsg("image should have failed to be loaded\n"); + gdImageDestroy(im); + return 1; + } else { + return 0; + } +} diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/invalid_header.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/invalid_header.gd2 Binary files differnew file mode 100644 index 00000000000..45323da7f82 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd2/invalid_header.gd2 diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/invalid_neg_size.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/invalid_neg_size.gd2 Binary files differnew file mode 100644 index 00000000000..3075f15a81a --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd2/invalid_neg_size.gd2 diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c new file mode 100644 index 00000000000..e15383e8c75 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c @@ -0,0 +1,21 @@ +#include <stdio.h> +#include <stdlib.h> +#include "gd.h" + +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + FILE *fp; + + fp = gdTestFileOpen2("gd2", "php_bug_72339_exp.gd2"); + im = gdImageCreateFromGd2(fp); + if (im == NULL) { + return 0; + } else { + gdTestErrorMsg("Image should have failed to be loaded"); + return 1; + } + +} diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2 Binary files differnew file mode 100644 index 00000000000..39ed2270390 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339_exp.gd2 diff --git a/Build/source/libs/gd/libgd-src/tests/gdhelpers.c b/Build/source/libs/gd/libgd-src/tests/gdhelpers.c new file mode 100644 index 00000000000..9b06b681f10 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdhelpers.c @@ -0,0 +1,6 @@ +/* + * Dummy file to workaround an automake limitation: if we try to list the + * file directly, automake will clean up its internal state in both the src/ + * and tests/ subdirs, but only one will succeed. + */ +#include "../src/gdhelpers.c" diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt index 4725daea2cc..dcfdc54ca5e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES bug00079 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagearc/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagearc/Makemodule.am new file mode 100644 index 00000000000..7a109950a77 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagearc/Makemodule.am @@ -0,0 +1,8 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagearc/bug00079 +endif + +EXTRA_DIST += \ + gdimagearc/CMakeLists.txt \ + gdimagearc/bug00079_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c b/Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c index b2843a74873..b442d1121e6 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagearc/bug00079.c @@ -5,8 +5,6 @@ int main() { gdImagePtr im; int error = 0; - char path[1024]; - im = gdImageCreateTrueColor(300, 300); gdImageFilledRectangle(im, 0,0, 299,299, 0xFFFFFF); @@ -14,9 +12,7 @@ int main() gdImageSetAntiAliased(im, 0x000000); gdImageArc(im, 300, 300, 600,600, 0, 360, gdAntiAliased); - sprintf(path, "%s/gdimagearc/bug00079_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { - printf("%s failed\n", path); + if (!gdAssertImageEqualsToFile("gdimagearc/bug00079_exp.png", im)) { error = 1; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt index 30a47c0b800..4f846c0b228 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES gdimagecolorclosest ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am new file mode 100644 index 00000000000..f4da8beca66 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am @@ -0,0 +1,7 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagecolorclosest/gdimagecolorclosest +endif + +EXTRA_DIST += \ + gdimagecolorclosest/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt index 7958cd6cce4..383a30277b7 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES gdimagecolordeallocate ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/Makemodule.am new file mode 100644 index 00000000000..2114c98b1b2 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/Makemodule.am @@ -0,0 +1,5 @@ +libgd_test_programs += \ + gdimagecolordeallocate/gdimagecolordeallocate + +EXTRA_DIST += \ + gdimagecolordeallocate/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt index f62bc26bbe3..b627fa5682a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES gdimagecolorexact ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am new file mode 100644 index 00000000000..835b25ed62c --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am @@ -0,0 +1,7 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagecolorexact/gdimagecolorexact +endif + +EXTRA_DIST += \ + gdimagecolorexact/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt index 915d9d49873..4f7af18ecea 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES gdimagecolorreplace ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am new file mode 100644 index 00000000000..a8badb05c99 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am @@ -0,0 +1,7 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagecolorreplace/gdimagecolorreplace +endif + +EXTRA_DIST += \ + gdimagecolorreplace/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c index 9694bd4ae5a..dd3c17ee49d 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c @@ -46,16 +46,18 @@ static void run_tests(gdImagePtr im, int *error) #define CHECK_VALUE(n, expected) do { \ if (gdTestAssert((n) == (expected)) != 1) { \ - printf("%d is expected, but %d\n", expected, n); \ + gdTestErrorMsg("%d is expected, but %d\n", expected, n);\ *error = -1; \ } \ } while (0) -#define CHECK_PIXEL(x, y, expected) do { \ +#define CHECK_PIXEL(x, y, expected) \ + do { \ + int pix; \ gdImageSetClip(im, 0, 0, 4, 4); \ - c = gdImageGetPixel(im, (x), (y)); \ - if (gdTestAssert(c == (expected)) != 1) { \ - printf("%d is expected, but %d\n", expected, c); \ + pix = gdImageGetPixel(im, (x), (y)); \ + if (gdTestAssert(pix == (expected)) != 1) { \ + gdTestErrorMsg("%d is expected, but %d\n", expected, pix); \ *error = -1; \ } \ } while (0) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt index 4b918251655..a3e7bc21658 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES gdimagecolorresolve ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am new file mode 100644 index 00000000000..316484c2068 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am @@ -0,0 +1,7 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagecolorresolve/gdimagecolorresolve +endif + +EXTRA_DIST += \ + gdimagecolorresolve/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt index 5f580f7f174..ce838725a61 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES gdimagecolortransparent ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/Makemodule.am new file mode 100644 index 00000000000..ffefc96096c --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/Makemodule.am @@ -0,0 +1,5 @@ +libgd_test_programs += \ + gdimagecolortransparent/gdimagecolortransparent + +EXTRA_DIST += \ + gdimagecolortransparent/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt index 0b0ccdd77b5..024ad5a744a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt @@ -3,8 +3,4 @@ SET(TESTS_FILES bug00081 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/Makemodule.am new file mode 100644 index 00000000000..c4b28da47a7 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/Makemodule.am @@ -0,0 +1,11 @@ +libgd_test_programs += \ + gdimagecopy/bug00007 + +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagecopy/bug00081 +endif + +EXTRA_DIST += \ + gdimagecopy/CMakeLists.txt \ + gdimagecopy/bug00081_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c index 0e28f4ca409..747e5a260c2 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/bug00081.c @@ -1,5 +1,3 @@ -/* $Id$ */ - #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -9,12 +7,10 @@ int main() { gdImagePtr im, im2; int error = 0; - char path[2048]; - const char *file_exp = "bug00081_exp.png"; im = gdImageCreateTrueColor(5, 5); if (!im) { - printf("can't create the src truecolor image\n"); + gdTestErrorMsg("can't create the src truecolor image\n"); return 1; } @@ -24,17 +20,16 @@ int main() im2 = gdImageCreateTrueColor(20, 20); if (!im2) { - printf("can't create the dst truecolor image\n"); + gdTestErrorMsg("can't create the dst truecolor image\n"); gdImageDestroy(im); return 1; } gdImageCopy(im2, im, 2, 2 , 0, 0, gdImageSX(im), gdImageSY(im)); - sprintf(path, "%s/gdimagecopy/%s", GDTEST_TOP_DIR, file_exp); - if (!gdAssertImageEqualsToFile(path, im2)) { + if (!gdAssertImageEqualsToFile("gdimagecopy/bug00081_exp.png", im2)) { error = 1; - printf("Reference image and destination differ\n"); + gdTestErrorMsg("Reference image and destination differ\n"); } gdImageDestroy(im); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt new file mode 100644 index 00000000000..636c81184ba --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt @@ -0,0 +1,8 @@ +LIST(APPEND TESTS_FILES + basic + basic_alpha + exact_alpha + bug00201 +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am new file mode 100644 index 00000000000..5d0d714e8bb --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am @@ -0,0 +1,14 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagecopyresampled/basic \ + gdimagecopyresampled/basic_alpha \ + gdimagecopyresampled/exact_alpha \ + gdimagecopyresampled/bug00201 +endif + +EXTRA_DIST += \ + gdimagecopyresampled/CMakeLists.txt \ + gdimagecopyresampled/basic_exp.png \ + gdimagecopyresampled/basic_alpha_exp.png \ + gdimagecopyresampled/bug00201_src.png \ + gdimagecopyresampled/bug00201_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic.c new file mode 100644 index 00000000000..2847947e55b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic.c @@ -0,0 +1,37 @@ +/* Testing basic gdImageCopyResampled() functionality */ + +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im, copy; + int white, yellow, magenta, cyan; + + im = gdImageCreateTrueColor(400, 300); + + /* allocate some colors */ + white = gdImageColorAllocate(im, 255, 255, 255); + yellow = gdImageColorAllocate(im, 128, 0, 128); + magenta = gdImageColorAllocate(im, 128, 128, 0); + cyan = gdImageColorAllocate(im, 0, 128, 128); + + /* draw background */ + gdImageFilledRectangle(im, 0,0, 399,299, white); + + /* draw some basic shapes */ + gdImageFilledEllipse(im, 100,100, 150,100, yellow); + gdImageSetThickness(im, 5); + gdImageLine(im, 50,250, 350,50, magenta); + gdImageRectangle(im, 200,100, 350,250, cyan); + + /* create a diminished, resampled copy of the original image */ + copy = gdImageCreateTrueColor(200, 200); + gdImageCopyResampled(copy, im, 0,0, 0,0, 200,200, 400,300); + gdImageDestroy(im); + + gdAssertImageEqualsToFile("gdimagecopyresampled/basic_exp.png", copy); + + gdImageDestroy(copy); + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha.c new file mode 100644 index 00000000000..4daee685b6a --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha.c @@ -0,0 +1,40 @@ +/* Testing basic gdImageCopyResampled() functionality with alpha channel */ + +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im, copy; + int white, yellow, magenta, cyan; + + im = gdImageCreateTrueColor(400, 300); + gdImageAlphaBlending(im, 0); + + /* allocate some alpha colors */ + white = gdImageColorAllocateAlpha(im, 255, 255, 255, 31); + yellow = gdImageColorAllocateAlpha(im, 128, 0, 128, 63); + magenta = gdImageColorAllocateAlpha(im, 128, 128, 0, 95); + cyan = gdImageColorAllocateAlpha(im, 0, 128, 128, 127); + + /* draw background */ + gdImageFilledRectangle(im, 0,0, 399,299, white); + + /* draw some basic shapes */ + gdImageFilledEllipse(im, 100,100, 150,100, yellow); + gdImageSetThickness(im, 5); + gdImageLine(im, 50,250, 350,50, magenta); + gdImageRectangle(im, 200,100, 350,250, cyan); + + /* create a diminished, resampled copy of the original image */ + copy = gdImageCreateTrueColor(200, 200); + gdImageAlphaBlending(copy, 0); + gdImageSaveAlpha(copy, 1); + gdImageCopyResampled(copy, im, 0,0, 0,0, 200,200, 400,300); + gdImageDestroy(im); + + gdAssertImageEqualsToFile("gdimagecopyresampled/basic_alpha_exp.png", copy); + + gdImageDestroy(copy); + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha_exp.png Binary files differnew file mode 100644 index 00000000000..29dfc2713bf --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_alpha_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_exp.png Binary files differnew file mode 100644 index 00000000000..dccc2f981a2 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/basic_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c new file mode 100644 index 00000000000..053b6db3b72 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c @@ -0,0 +1,71 @@ +#include "gd.h" +#include "gdtest.h" + + +#define SRC_WIDTH 80 +#define SRC_HEIGHT 42 +#define DEST_WIDTH 200 +#define DEST_HEIGHT 200 + + +/* Create an image and fill it with true transparency */ +gdImagePtr blank_image(int width, int height) +{ + gdImagePtr img; + int c; + + img = gdImageCreateTrueColor(width, height); + gdImageAlphaBlending(img, 0); + c = gdImageColorAllocateAlpha(img, 255, 0, 255, 127); + gdImageFilledRectangle(img, 0, 0, width-1, height-1, c); + return img; +} + + +/* Merge layers on top of each other */ +gdImagePtr flatten(gdImagePtr *layers, int layer_count, int width, int height) +{ + gdImagePtr img; + int i; + + img = blank_image(width,height); + gdImageAlphaBlending(img, 1); + for (i = 0; i < layer_count; i++) { + gdImageCopy(img, layers[i], 0,0, 0,0, width,height); + } + gdImageSaveAlpha(img, 1); + return img; +} + + +int main() +{ + gdImagePtr layers[2], background, logo_source, logo, scaled_logo, img; + FILE *fp; + + background = blank_image(DEST_WIDTH,DEST_HEIGHT); + + fp = gdTestFileOpen2("gdimagecopyresampled", "bug00201_src.png"); + logo_source = gdImageCreateFromPng(fp); + fclose(fp); + + logo = blank_image(SRC_WIDTH,SRC_HEIGHT); + gdImageAlphaBlending(logo, 0); + gdImageCopy(logo, logo_source, 0,0, 0,0, SRC_WIDTH,SRC_HEIGHT); + gdImageDestroy(logo_source); + + scaled_logo = blank_image(DEST_WIDTH,DEST_HEIGHT); + gdImageAlphaBlending(scaled_logo, 0); + gdImageCopyResampled(scaled_logo, logo, 0,0, 0,0, 200,105, SRC_WIDTH,SRC_HEIGHT); + gdImageDestroy(logo); + + layers[0] = background; + layers[1] = scaled_logo; + img = flatten(layers, 2, DEST_WIDTH, DEST_HEIGHT); + gdImageDestroy(background); + gdImageDestroy(scaled_logo); + + gdAssertImageEqualsToFile("gdimagecopyresampled/bug00201_exp.png", img); + gdImageDestroy(img); + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_exp.png Binary files differnew file mode 100644 index 00000000000..9ffe1551743 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_src.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_src.png Binary files differnew file mode 100644 index 00000000000..86c0eaced32 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201_src.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/exact_alpha.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/exact_alpha.c new file mode 100644 index 00000000000..581ad017534 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/exact_alpha.c @@ -0,0 +1,67 @@ +/* Test for exact colors of gdImageCopyResampled */ + +#include "gd.h" +#include "gdtest.h" + + +#define EXP_RED 66 +#define EXP_GREEN 66 +#define EXP_BLUE 133 +#define EXP_ALPHA 32 + + +int main() +{ + gdImagePtr im, copy; + int solid, transparent, color; + int red, green, blue, alpha; + int i, j; + + /* create the source image */ + im = gdImageCreateTrueColor(10, 10); + gdImageAlphaBlending(im, 0); + solid = gdImageColorAllocate(im, 0, 100, 150); + transparent = gdImageColorAllocateAlpha(im, 200, 0, 100, 64); + + /* draw a checker pattern */ + for (i = 0; i < gdImageSX(im); i++) { + for (j = 0; j < gdImageSY(im); j++) { + gdImageSetPixel(im, i, j, (i%2 != j%2 ? solid : transparent)); + } + } + + /* create the destination image */ + copy = gdImageCreateTrueColor(5, 5); + gdImageAlphaBlending(copy, 0); + gdImageSaveAlpha(copy, 1); + gdImageCopyResampled(copy, im, 0,0, 0,0, 5,5, 10, 10); + + /* assert all pixels have the same color */ + color = gdImageTrueColorPixel(copy, 3, 3); + for (i = 0; i < gdImageSX(copy); i++) { + for (j = 0; j < gdImageSY(copy); j++) { + gdTestAssert(gdImageTrueColorPixel(copy, i, j) == color); + } + } + + /* assign actual component values */ + red = gdTrueColorGetRed(color); + green = gdTrueColorGetGreen(color); + blue = gdTrueColorGetBlue(color); + alpha = gdTrueColorGetAlpha(color); + + /* test for expected component values */ + gdTestAssertMsg(red >= EXP_RED - 1 && red <= EXP_RED + 1, + "red: expected roughly %d, got %d\n", EXP_RED, red); + gdTestAssertMsg(green >= EXP_GREEN - 1 && green <= EXP_GREEN + 1, + "green: expected roughly %d, got %d\n", EXP_GREEN, green); + gdTestAssertMsg(blue >= EXP_BLUE - 1 && blue <= EXP_BLUE + 1, + "blue: expected roughly %d, got %d\n", EXP_BLUE, blue); + gdTestAssertMsg(alpha >= EXP_ALPHA - 1 && alpha <= EXP_ALPHA + 1, + "alpha: expected roughly %d, got %d\n", EXP_ALPHA, alpha); + + gdImageDestroy(copy); + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt index 7f75aa7c572..e2d8249f91d 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt @@ -1,10 +1,5 @@ - SET(TESTS_FILES bug00020 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/Makemodule.am new file mode 100644 index 00000000000..5ed232c5237 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/Makemodule.am @@ -0,0 +1,8 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagecopyrotated/bug00020 +endif + +EXTRA_DIST += \ + gdimagecopyrotated/CMakeLists.txt \ + gdimagecopyrotated/bug00020_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c index f1c2467fc47..fe8dfdf451d 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/bug00020.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include "gdtest.h" @@ -8,9 +7,7 @@ int main() { gdImagePtr im, im2; int error = 0; - char path[1024]; - - sprintf(path, "%s/gdimagecopyrotated/bug00020_exp.png", GDTEST_TOP_DIR); + char *path; im = gdImageCreateTrueColor(width, width); gdImageFilledRectangle(im, 0,0, width, width, 0xFF0000); @@ -21,12 +18,13 @@ int main() im2 = gdImageCreateTrueColor(width, width); gdImageCopyRotated(im2, im, width / 2, width / 2, 0,0, width, width, 60); - + path = gdTestFilePath2("gdimagecopyrotated", "bug00020_exp.png"); if (!gdAssertImageEqualsToFile(path, im2)) { error = 1; } gdImageDestroy(im2); gdImageDestroy(im); + free(path); return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt new file mode 100644 index 00000000000..f7e4c7ef475 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt @@ -0,0 +1,5 @@ +SET(TESTS_FILES + php_bug_72494 +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am new file mode 100644 index 00000000000..210888b5a70 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am @@ -0,0 +1,5 @@ +libgd_test_programs += \ + gdimagecrop/php_bug_72494 + +EXTRA_DIST += \ + gdimagecrop/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/php_bug_72494.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/php_bug_72494.c new file mode 100644 index 00000000000..3bd19be788b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/php_bug_72494.c @@ -0,0 +1,22 @@ +#include <stdio.h> +#include <stdlib.h> +#include "gd.h" + +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + + im = gdImageCreate(50, 50); + + if (!im) { + gdTestErrorMsg("gdImageCreate failed.\n"); + return 1; + } + + gdImageCropThreshold(im, 1337, 0); + gdImageDestroy(im); + /* this bug tests a crash, it never reaches this point if the bug exists*/ + return 0; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt new file mode 100644 index 00000000000..4fee5c33f6b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt @@ -0,0 +1,5 @@ +SET(TESTS_FILES + gdnametest +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am new file mode 100644 index 00000000000..b537cbc0a3f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am @@ -0,0 +1,8 @@ +libgd_test_programs += \ + gdimagefile/gdnametest + +EXTRA_DIST += \ + gdimagefile/CMakeLists.txt \ + gdimagefile/img-ref.tga \ + gdimagefile/img-ref.xbm \ + gdimagefile/img-ref.xpm 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 dd8f0196a59..40dbc30b9e3 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c @@ -1,9 +1,10 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "gd.h" #include "gdtest.h" -#include "../test_config.h" +#include "test_config.h" #define WIDTH 60 #define HEIGHT 50 @@ -83,7 +84,7 @@ do_test() { for (n = 0; names[n].nm; n++) { gdImagePtr orig, copy; int status; - char full_filename[255]; + char *full_filename = NULL; /* Some image readers are buggy and crash the program so we * skip them. Bug fixers should remove these from the list of @@ -103,33 +104,23 @@ do_test() { orig = mkcross(); - - #ifdef GDTEST_TOP_DIR - - snprintf(full_filename, sizeof(full_filename), GDTEST_TOP_DIR"/gdimagefile/%s", - names[n].nm); - - #else - /* Prepend the test directory; this is expected to be run in - * the parent dir. */ - snprintf(full_filename, sizeof(full_filename), "gdimagefile/%s", - names[n].nm); - #endif - - /* 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; - /* Debug printf. */ - //printf("%s -> %d\n", full_filename, gdMaxPixelDiff(orig, copy)); - gdTestAssertMsg(gdMaxPixelDiff(orig, copy) <= names[n].maxdiff,"Pixels different on %s\n", full_filename, full_filename); if (!names[n].readonly) { @@ -137,6 +128,7 @@ do_test() { gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename); }/* if */ + free(full_filename); gdImageDestroy(orig); gdImageDestroy(copy); }/* for */ @@ -159,7 +151,7 @@ do_errortest() { }/* do_errortest*/ -int main(int argc, char **argv) +int main() { do_test(); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt index ef85f1cf7ef..6b09c1bf5cc 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt @@ -1,12 +1,9 @@ - SET(TESTS_FILES bug00002_1 bug00002_2 bug00002_3 bug00002_4 + bug00104_1 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefill/Makemodule.am new file mode 100644 index 00000000000..6a12c0684ee --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/Makemodule.am @@ -0,0 +1,16 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagefill/bug00002_1 \ + gdimagefill/bug00002_2 \ + gdimagefill/bug00002_3 \ + gdimagefill/bug00002_4 \ + gdimagefill/bug00104_1 +endif + +EXTRA_DIST += \ + gdimagefill/CMakeLists.txt \ + gdimagefill/bug00002_1_exp.png \ + gdimagefill/bug00002_2_exp.png \ + gdimagefill/bug00002_3_exp.png \ + gdimagefill/bug00002_4_exp.png \ + gdimagefill/bug00104_1_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c index 2a440f20ede..752178a4805 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c @@ -2,13 +2,12 @@ #include <stdio.h> #include "gdtest.h" -#define TMP_FN "bug00002_1.png" - int main() { gdImagePtr im; FILE *fp; - char path[1024]; + char *file; + int error = 0; im = gdImageCreateTrueColor(100, 100); @@ -20,9 +19,10 @@ int main() gdImageFill(im, 0, 0, 0xffffff); gdImageFill(im, 0, 0, 0xffffff); - fp = fopen(TMP_FN, "wb"); + file = gdTestTempFile("bug00002_1.png"); + fp = fopen(file, "wb"); if (fp == NULL) { - gdTestErrorMsg("Cannot create image from <%s>\n", TMP_FN); + gdTestErrorMsg("Cannot create image from <%s>\n", file); gdImageDestroy(im); return 1; } @@ -30,19 +30,11 @@ int main() gdImagePng(im,fp); fclose(fp); - sprintf(path, "%s/gdimagefill/bug00002_1_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { - gdImageDestroy(im); - return 1; - } + if (!gdAssertImageEqualsToFile("gdimagefill/bug00002_1_exp.png", im)) + error = 1; gdImageDestroy(im); - if (remove(TMP_FN) == -1) { - gdTestErrorMsg("Cannot remove temporary file: <%s>\n", TMP_FN); - return 1; - } - - return 0; + return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c index 06cf8311195..982ae8f64d4 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c @@ -7,7 +7,6 @@ int main() gdImagePtr im, tile; int im_black, tile_black; int x,y, error = 0; - char path[1024]; /* fputs("flag 0\n", stdout); */ im = gdImageCreate(150, 150); @@ -38,13 +37,13 @@ int main() /* fputs("flag 2\n", stdout); */ - sprintf(path, "%s/gdimagefill/bug00002_2_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdimagefill/bug00002_2_exp.png", im)) { error = 1; } /* Destroy it */ gdImageDestroy(im); + gdImageDestroy(tile); return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c index 454d5be3612..b11fbc91ccb 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include "gdtest.h" @@ -8,7 +7,6 @@ int main() gdImagePtr im, tile; int im_black, tile_white, tile_black; int x,y, error = 0; - char path[1024]; /* fputs("flag 0\n", stdout); */ im = gdImageCreate(150, 150); @@ -44,13 +42,13 @@ int main() gdImageFill(im, 0, 0, 0xffffff); /* fputs("flag 3\n", stdout); */ - sprintf(path, "%s/gdimagefill/bug00002_3_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdimagefill/bug00002_3_exp.png", im)) { error = 1; } /* Destroy it */ gdImageDestroy(im); + gdImageDestroy(tile); return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c index 4b11d84bdc9..e12cb90e094 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_4.c @@ -7,7 +7,6 @@ int main() { gdImagePtr im; int red, blue, white, black, error = 0; - char path[1024]; im = gdImageCreate(50,100); red = gdImageColorAllocate(im, 255, 0, 0); @@ -29,8 +28,7 @@ int main() gdImageFill(im, 100,69, red); gdImageFill(im, 100,21, white); - sprintf(path, "%s/gdimagefill/bug00002_4_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdimagefill/bug00002_4_exp.png", im)) { error = 1; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c new file mode 100644 index 00000000000..13247cab4e0 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c @@ -0,0 +1,34 @@ +/* test case for outside of buffer reads/write bug in _gdImageFillTiled */ +#include "gd.h" +#include <stdio.h> +#include "gdtest.h" + +int main() +{ + gdImagePtr im, tile; + int tile_red, tile_blue; + int error = 0; + + im = gdImageCreate(200, 150); + + tile = gdImageCreateTrueColor(2, 2); + + tile_red = gdImageColorAllocate(tile, 255, 0, 0); + tile_blue = gdImageColorAllocate(tile, 0, 0, 255); + + gdImageSetPixel(tile, 0, 0, tile_red); + gdImageSetPixel(tile, 1, 1, tile_red); + gdImageSetPixel(tile, 1, 0, tile_blue); + gdImageSetPixel(tile, 0, 1, tile_blue); + + gdImageSetTile(im, tile); + gdImageFill(im, 11, 12, gdTiled); + + if (!gdAssertImageEqualsToFile("gdimagefill/bug00104_1_exp.png", im)) { + error = 1; + } + + gdImageDestroy(im); + gdImageDestroy(tile); + return error; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1_exp.png Binary files differnew file mode 100644 index 00000000000..7b10a4f0cd0 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt new file mode 100644 index 00000000000..1a0a2042e2d --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt @@ -0,0 +1,5 @@ +LIST(APPEND TESTS_FILES + php_bug43828 +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am new file mode 100644 index 00000000000..4af6963f86c --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am @@ -0,0 +1,8 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagefilledarc/php_bug43828 +endif + +EXTRA_DIST += \ + gdimagefilledarc/CMakeLists.txt \ + gdimagefilledarc/php_bug43828_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828.c new file mode 100644 index 00000000000..eb690c8e0f8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828.c @@ -0,0 +1,21 @@ +/* See <https://bugs.php.net/bug.php?id=43828>. */ + +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + int transparent, color; + + im = gdImageCreateTrueColor(100, 100); + transparent = gdImageColorAllocateAlpha(im, 255, 255, 255, 80); + gdImageFilledRectangle(im, 0,0, 99,99, transparent); + color = gdImageColorAllocateAlpha(im, 0, 255, 0, 100); + gdImageFilledArc(im, 49,49, 99,99, 0,360, color, gdPie); + + gdAssertImageEqualsToFile("gdimagefilledarc/php_bug43828_exp.png", im); + + gdImageDestroy(im); + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828_exp.png Binary files differnew file mode 100644 index 00000000000..4f8ff6855c5 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/php_bug43828_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt index fb1ed6ca1ac..bafe7dd5ac1 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt @@ -1,11 +1,7 @@ - SET(TESTS_FILES bug00010 bug00191 + github_bug_00238 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am new file mode 100644 index 00000000000..6a5185a10c1 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am @@ -0,0 +1,12 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagefilledellipse/bug00010 \ + gdimagefilledellipse/bug00191 \ + gdimagefilledellipse/github_bug_00238 +endif + +EXTRA_DIST += \ + gdimagefilledellipse/CMakeLists.txt \ + gdimagefilledellipse/bug00010_exp.png \ + gdimagefilledellipse/bug00191.png \ + gdimagefilledellipse/github_bug_00238_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c index df0c66dbc64..65c744491ae 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00010.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include "gdtest.h" @@ -6,13 +5,11 @@ int main() { gdImagePtr im; int error = 0; - char path[1024]; im = gdImageCreateTrueColor(100,100); gdImageFilledEllipse(im, 50,50, 70, 90, 0x50FFFFFF); - sprintf(path, "%s/gdimagefilledellipse/bug00010_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdimagefilledellipse/bug00010_exp.png", im)) { error = 1; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c index 7db64151726..28e3d6cc50e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00191.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include "gdtest.h" @@ -6,14 +5,12 @@ int main() { gdImagePtr im; int error = 0; - char path[1024]; im = gdImageCreate(100, 100); (void)gdImageColorAllocate(im, 255, 255, 255); gdImageSetThickness(im, 20); gdImageFilledEllipse(im, 30, 50, 20, 20, gdImageColorAllocate(im, 0, 0, 0)); - sprintf(path, "%s/gdimagefilledellipse/bug00191.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdimagefilledellipse/bug00191.png", im)) { error = 1; } gdImageDestroy(im); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c new file mode 100644 index 00000000000..499923fedd3 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c @@ -0,0 +1,33 @@ +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + int error = 0; + + im = gdImageCreateTrueColor(141,200); + if (im == NULL) { + gdTestErrorMsg("image creation failed.\n"); + goto exit; + } + + gdImageAlphaBlending(im, gdEffectNormal); + gdImageFilledRectangle(im, 0, 0, 140, 199, gdTrueColorAlpha(0,0,0,127)); + + gdImageAlphaBlending(im, gdEffectAlphaBlend); + gdImageFilledEllipse(im, 70, 70, 45, 60, gdTrueColorAlpha(255,0,0,40)); + gdImageFilledEllipse(im, 90, 90, 60, 30, gdTrueColorAlpha(255,0,0,40)); + gdImageSaveAlpha(im, 1); + + if (!gdAssertImageEqualsToFile("gdimagefilledellipse/github_bug_00238_exp.png", im)) { + error = 1; + } + + if (im != NULL) { + gdImageDestroy(im); + } + +exit: + return error; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238_exp.png Binary files differnew file mode 100644 index 00000000000..4f78540305f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt index 2ca4bf51f99..1a2d3305f5e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt @@ -4,10 +4,7 @@ SET(TESTS_FILES gdimagefilledpolygon2 gdimagefilledpolygon3 bug00100 + php_bug_64641 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am new file mode 100644 index 00000000000..7a2f6812bbf --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/Makemodule.am @@ -0,0 +1,18 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagefilledpolygon/bug00100 \ + gdimagefilledpolygon/gdimagefilledpolygon0 \ + gdimagefilledpolygon/gdimagefilledpolygon1 \ + gdimagefilledpolygon/gdimagefilledpolygon2 \ + gdimagefilledpolygon/gdimagefilledpolygon3 \ + gdimagefilledpolygon/php_bug_64641 +endif + +EXTRA_DIST += \ + gdimagefilledpolygon/CMakeLists.txt \ + gdimagefilledpolygon/bug00100.png \ + gdimagefilledpolygon/gdimagefilledpolygon0.png \ + gdimagefilledpolygon/gdimagefilledpolygon1.png \ + gdimagefilledpolygon/gdimagefilledpolygon2.png \ + gdimagefilledpolygon/gdimagefilledpolygon3.png \ + gdimagefilledpolygon/php_bug_64641.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c index ae2e084fe41..d020749e55f 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c @@ -150,7 +150,7 @@ main(void) pointy[4].y = bot; gdImageFilledPolygon(im, pointy, 5, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/bug00100.png", im); + r = gdAssertImageEqualsToFile("gdimagefilledpolygon/bug00100.png", im); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); return EXIT_SUCCESS; diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c index 5ca877c630c..b7e9299209e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon0.c @@ -15,7 +15,7 @@ main(void) gdImageFilledRectangle(im, 0, 0, 99, 99, white); gdImageFilledPolygon(im, NULL, 0, black); /* no effect */ gdImageFilledPolygon(im, NULL, -1, black); /* no effect */ - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/gdimagefilledpolygon0.png", im); + r = gdAssertImageEqualsToFile("gdimagefilledpolygon/gdimagefilledpolygon0.png", im); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); return EXIT_SUCCESS; diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c index 950035e2b4b..58052a0af2a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon1.c @@ -23,7 +23,7 @@ main(void) points[0].x = 10; points[0].y = 10; gdImageFilledPolygon(im, points, 1, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/gdimagefilledpolygon1.png", im); + r = gdAssertImageEqualsToFile("gdimagefilledpolygon/gdimagefilledpolygon1.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c index 628665a1919..95d85566ca1 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon2.c @@ -25,7 +25,7 @@ main(void) points[1].x = 50; points[1].y = 70; gdImageFilledPolygon(im, points, 2, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/gdimagefilledpolygon2.png", im); + r = gdAssertImageEqualsToFile("gdimagefilledpolygon/gdimagefilledpolygon2.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c index 0db5c8519e1..0c9ed3e65a3 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/gdimagefilledpolygon3.c @@ -27,7 +27,7 @@ main(void) points[2].x = 90; points[2].y = 30; gdImageFilledPolygon(im, points, 3, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/gdimagefilledpolygon3.png", im); + r = gdAssertImageEqualsToFile("gdimagefilledpolygon/gdimagefilledpolygon3.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.c new file mode 100644 index 00000000000..baf89134340 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.c @@ -0,0 +1,47 @@ +/* + Test drawing of 1-dimensional filled polygons + + We're drawing a vertical and a horizontal 1-dimensional filled polygon, + which is supposed to result in a vertical and a horizontal line. + + See also <https://bugs.php.net/64641>. +*/ + +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + gdPointPtr points; + + im = gdImageCreateTrueColor(640, 480); + + points = (gdPointPtr)calloc(3, sizeof(gdPoint)); + gdTestAssert(points != NULL); + + /* vertical line */ + points[0].x = 100; + points[0].y = 100; + points[1].x = 100; + points[1].y = 200; + points[2].x = 100; + points[2].y = 300; + gdImageFilledPolygon(im, points, 3, 0xFFFF00); + + /* horizontal line */ + points[0].x = 300; + points[0].y = 200; + points[1].x = 400; + points[1].y = 200; + points[2].x = 500; + points[2].y = 200; + gdImageFilledPolygon(im, points, 3, 0xFFFF00); + + gdAssertImageEqualsToFile("gdimagefilledpolygon/php_bug_64641.png", im); + + free(points); + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.png Binary files differnew file mode 100644 index 00000000000..62fb6212981 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/php_bug_64641.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt index 73920709bb5..2b26022ca70 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt @@ -4,8 +4,4 @@ SET(TESTS_FILES bug00106_gdimagefilledrectangle ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/Makemodule.am new file mode 100644 index 00000000000..2a06d59a56c --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/Makemodule.am @@ -0,0 +1,7 @@ +libgd_test_programs += \ + gdimagefilledrectangle/bug00004 \ + gdimagefilledrectangle/bug00078 \ + gdimagefilledrectangle/bug00106_gdimagefilledrectangle + +EXTRA_DIST += \ + gdimagefilledrectangle/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt index e24a69a1452..f03529a6082 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt @@ -1,9 +1,6 @@ - SET(TESTS_FILES bug00037 + github_bug_215 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am new file mode 100644 index 00000000000..fc7ed3d05d6 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am @@ -0,0 +1,8 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagefilltoborder/bug00037 \ + gdimagefilltoborder/github_bug_215 +endif + +EXTRA_DIST += \ + gdimagefilltoborder/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c index 646adbd0f79..ab7e1b805bf 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c @@ -22,7 +22,7 @@ int main() if (gdTestAssert(color==0x1000000)) { return 0; } else { - printf("c: %X, expected %X\n", color, 0x1000000); + gdTestErrorMsg("c: %X, expected %X\n", color, 0x1000000); return -1; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/github_bug_215.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/github_bug_215.c new file mode 100644 index 00000000000..bf0900c970c --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/github_bug_215.c @@ -0,0 +1,19 @@ +#include <stdio.h> +#include "gd.h" +#include "gdtest.h" + +int main() { + gdImagePtr im; + int color, border; + im = gdImageCreate(50, 50); + gdImageColorAllocate(im, 255, 0, 0); + color = gdImageColorAllocate(im, 255, 0, 0); + border = gdImageColorAllocate(im, 255, 0, 0); + gdImageFillToBorder(im, 0, 0, border + 10, color); + gdImageFillToBorder(im, 0, 0, -border, color); + gdImageFillToBorder(im, 0, 0, border, color + 10); + gdImageFillToBorder(im, 0, 0, border, -color); + gdImageFillToBorder(im, 0, 0, border + 10, color + 10); + gdImageDestroy(im); + return 0; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt new file mode 100644 index 00000000000..a1b6642984e --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt @@ -0,0 +1,5 @@ +SET(TESTS_FILES + gdCopyBlurred +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/Makemodule.am new file mode 100644 index 00000000000..3af66b45d64 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/Makemodule.am @@ -0,0 +1,5 @@ +libgd_test_programs += \ + gdimagefilter/gdCopyBlurred + +EXTRA_DIST += \ + gdimagefilter/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c index 69ca06133bc..dee2f1f8d52 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c @@ -23,7 +23,7 @@ save(gdImagePtr im, const char *filename) { gdImagePng(im, out); fclose(out); #else - im, filename; + (void)im, (void)filename; #endif }/* save*/ @@ -87,8 +87,7 @@ void blurblank(gdImagePtr im, int radius, double sigma) { void do_test() { - gdImagePtr im, imref, tmp; - gdImagePtr same, same2; + gdImagePtr im, imref; im = mkwhite(WIDTH, HEIGHT); imref = mkwhite(WIDTH, HEIGHT); @@ -110,6 +109,9 @@ void do_test() blurblank(im, 4, 0.0); blurblank(im, 8, 0.0); blurblank(im, 16, 0.0); + + gdImageDestroy(im); + gdImageDestroy(imref); }/* do_test*/ /* Ensure that RGB values are equal, then return r (which is therefore @@ -185,10 +187,11 @@ void do_crosstest() gdTestAssert(getwhite(blurred, 1, LY + 1) < getwhite(blurred, 1, LY + 3)); gdTestAssert(getwhite(blurred, 1, LY + 3) < getwhite(blurred, 1, HEIGHT-1)); gdImageDestroy(blurred); + gdImageDestroy(im); }/* do_crosstest*/ -int main(int argc, char **argv) +int main() { do_test(); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt index 78f11d424fb..61982517ede 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt @@ -6,8 +6,4 @@ SET(TESTS_FILES bug00111 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS(m) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am new file mode 100644 index 00000000000..3b541a16a9a --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am @@ -0,0 +1,29 @@ +libgd_test_programs += \ + gdimageline/gdimageline_aa_outofrange + +if HAVE_LIBPNG +libgd_test_programs += \ + gdimageline/bug00072 \ + gdimageline/bug00077 \ + gdimageline/bug00111 \ + gdimageline/gdimageline_aa \ + gdimageline/gdimageline_bug5 \ + gdimageline/gdImageAALine_thickness \ + gdimageline/github_bug_167 +endif + +EXTRA_DIST += \ + gdimageline/CMakeLists.txt \ + gdimageline/bug00072_exp.png \ + gdimageline/bug00077_exp.png \ + gdimageline/bug00111_exp.png \ + gdimageline/gdimageline_aa_a_1_exp.png \ + gdimageline/gdimageline_aa_b_0_exp.png \ + gdimageline/gdimageline_aa_c_0_exp.png \ + gdimageline/gdimageline_aa_d_0_exp.png \ + gdimageline/gdimageline_aa_d_1_exp.png \ + gdimageline/gdimageline_aa_c_1_exp.png \ + gdimageline/gdimageline_aa_a_0_exp.png \ + gdimageline/gdimageline_aa_b_1_exp.png \ + gdimageline/gdImageAALine_thickness_exp.png \ + gdimageline/github_bug_167_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c index c3a3137e539..72e9fca5020 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00072.c @@ -4,12 +4,8 @@ int main() { gdImagePtr im; - const char *exp = "bug00072_exp.png"; int error = 0; - char path[1024]; - - im = gdImageCreateTrueColor(11, 11); gdImageFilledRectangle(im, 0, 0, 10, 10, 0xFFFFFF); gdImageSetThickness(im, 3); @@ -24,8 +20,7 @@ int main() gdImageLine(im, 0, 5, 11, 5, 0xFF0000); gdImageLine(im, 0, 0, 11, 11, 0xFF0000); - sprintf(path, "%s/gdimageline/%s", GDTEST_TOP_DIR, exp); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdimageline/bug00072_exp.png", im)) { error = 1; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c index d69e88177f2..7c52bbe1a01 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00077.c @@ -4,12 +4,8 @@ int main() { gdImagePtr im; - const char *exp = "bug00077_exp.png"; int error = 0; - char path[1024]; - - im = gdImageCreateTrueColor(11, 11); gdImageFilledRectangle(im, 0, 0, 10, 10, 0xFFFFFF); gdImageSetThickness(im, 1); @@ -19,9 +15,7 @@ int main() gdImageLine(im, 10, 5, 0, 5, 0x0); gdImageLine(im, 10, 10, 0, 10, 0x0); - sprintf(path, "%s/gdimageline/%s", GDTEST_TOP_DIR, exp); - - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdimageline/bug00077_exp.png", im)) { error = 1; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c index 4277534874d..9b24113535a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00111.c @@ -1,5 +1,3 @@ -/* $Id$ */ - #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -9,12 +7,10 @@ int main() { gdImagePtr im; int error = 0; - char path[2048]; - const char *file_exp = "bug00111_exp.png"; im = gdImageCreateTrueColor(10, 10); if (!im) { - printf("can't get truecolor image\n"); + gdTestErrorMsg("can't get truecolor image\n"); return 1; } @@ -23,10 +19,9 @@ int main() gdImageLine(im, 0, 0, 0, 0, 0xFFFFFF); - sprintf(path, "%s/gdimageline/%s", GDTEST_TOP_DIR, file_exp); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdimageline/bug00111_exp.png", im)) { error = 1; - printf("Reference image and destination differ\n"); + gdTestErrorMsg("Reference image and destination differ\n"); } gdImageDestroy(im); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c index 954e055b6fb..1d3a564ed0b 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdImageAALine_thickness.c @@ -2,11 +2,10 @@ #include "gd.h" #include "gdtest.h" -int main(int argc, char **argv) +int main() { gdImagePtr im; - char path[2048]; - const char *file_exp = "gdimageline/gdImageAALine_thickness_exp.png"; + int error = 0; im = gdImageCreateTrueColor(100, 100); gdImageFilledRectangle(im, 0, 0, 99, 99, @@ -16,15 +15,10 @@ int main(int argc, char **argv) gdImageSetAntiAliased(im, gdImageColorExactAlpha(im, 0, 0, 0, 0)); gdImageLine(im, 0,0, 99, 99, gdAntiAliased); - sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_exp); - - if (!gdAssertImageEqualsToFile(path, im)) { - printf("comparing rotated image to %s failed.\n", path); - gdImageDestroy(im); - return 1; - } + if (!gdAssertImageEqualsToFile("gdimageline/gdImageAALine_thickness_exp.png", im)) + error = 1; gdImageDestroy(im); - return 0; + return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c index b0bea3a4d5c..f16bfb9ccbb 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa.c @@ -3,10 +3,6 @@ #include "gd.h" #include "gdtest.h" -#ifdef _MSC_VER -# define snprintf _snprintf -#endif - int gen_image(const char* filename, int idx, int reverse_x, int width, int height, int bgd) { double gradient = height / (width*2.0); @@ -49,28 +45,19 @@ int gen_image(const char* filename, int idx, int reverse_x, int width, int heigh int main() { int error = 0; - char path[1024]; - snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_a_0_exp.png", GDTEST_TOP_DIR); - error |= gen_image(path,0,1,10,100, 1); + error |= gen_image("gdimageline/gdimageline_aa_a_0_exp.png", 0, 1, 10, 100, 1); - snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_a_1_exp.png", GDTEST_TOP_DIR); - error |= gen_image(path,1,1,10,100, 2); + error |= gen_image("gdimageline/gdimageline_aa_a_1_exp.png", 1, 1, 10, 100, 2); - snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_b_0_exp.png", GDTEST_TOP_DIR); - error |= gen_image(path,2,-1,10,100, 1); - snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_b_1_exp.png", GDTEST_TOP_DIR); - error |= gen_image(path,1,-1,10,100, 2); + error |= gen_image("gdimageline/gdimageline_aa_b_0_exp.png", 2, -1, 10, 100, 1); + error |= gen_image("gdimageline/gdimageline_aa_b_1_exp.png", 1, -1, 10, 100, 2); - snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_c_0_exp.png", GDTEST_TOP_DIR); - error |= gen_image(path,0,1,100,10, 1); - snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_c_1_exp.png", GDTEST_TOP_DIR); - error |= gen_image(path,1,1,100,10, 2); + error |= gen_image("gdimageline/gdimageline_aa_c_0_exp.png", 0, 1, 100, 10, 1); + error |= gen_image("gdimageline/gdimageline_aa_c_1_exp.png", 1, 1, 100, 10, 2); - snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_d_0_exp.png", GDTEST_TOP_DIR); - error |= gen_image(path,2,-1,100,10, 1); - snprintf(path, sizeof(path)-1, "%s/gdimageline/gdimageline_aa_d_1_exp.png", GDTEST_TOP_DIR); - error |= gen_image(path,1,-1,100,10, 2); + error |= gen_image("gdimageline/gdimageline_aa_d_0_exp.png", 2, -1, 100, 10, 1); + error |= gen_image("gdimageline/gdimageline_aa_d_1_exp.png", 1, -1, 100, 10, 2); return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c index 5c1ed05ab03..35f5f5f6cfe 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/gdimageline_aa_outofrange.c @@ -15,5 +15,6 @@ int main() gdImageLine(im, 1,1, 50, 50, gdAntiAliased); /* Test for segfaults, if we reach this point, the test worked */ + gdImageDestroy(im); return 0; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167.c new file mode 100644 index 00000000000..e0657a81613 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167.c @@ -0,0 +1,75 @@ +/* + Testing thick styled horizontal, vertical and diagonal lines. + + We're drawing four triangles with basically the same pattern style. Each + triangle has exactly the same shape (right isosceles, with the hypotenuse + being diagonal) and size. The triangles are arranged from lower left to + upper right with increasing line thickness. + + To have the same pattern style, it has to be adapted according to the + thickness (i.e. the pixels have to be repeated thickness times), which + happens in setStyleAndThickness(). + + See also <https://github.com/libgd/libgd/issues/167>. +*/ + +#include "gd.h" +#include "gdtest.h" + +static void setStyleAndThickness(gdImagePtr im, int color, int thickness) +{ + int style[192], i = 0; + + while (i < 16 * thickness) { + style[i++] = color; + } + while (i < 20 * thickness) { + style[i++] = gdTransparent; + } + while (i < 28 * thickness) { + style[i++] = color; + } + while (i < 32 * thickness) { + style[i++] = gdTransparent; + } + gdImageSetStyle(im, style, 32 * thickness); + gdImageSetThickness(im, thickness); +} + +int main() +{ + gdImagePtr im; + int error = 0, black; + + im = gdImageCreate(800, 800); + gdImageColorAllocate(im, 255, 255, 255); + black = gdImageColorAllocate(im, 0, 0, 0); + + setStyleAndThickness(im, black, 1); + gdImageLine(im, 50, 250, 550, 250, gdStyled); + gdImageLine(im, 550, 250, 550, 750, gdStyled); + gdImageLine(im, 550, 750, 50, 250, gdStyled); + + setStyleAndThickness(im, black, 2); + gdImageLine(im, 100, 200, 600, 200, gdStyled); + gdImageLine(im, 600, 200, 600, 700, gdStyled); + gdImageLine(im, 600, 700, 100, 200, gdStyled); + + setStyleAndThickness(im, black, 4); + gdImageLine(im, 150, 150, 650, 150, gdStyled); + gdImageLine(im, 650, 150, 650, 650, gdStyled); + gdImageLine(im, 650, 650, 150, 150, gdStyled); + + setStyleAndThickness(im, black, 6); + gdImageLine(im, 200, 100, 700, 100, gdStyled); + gdImageLine(im, 700, 100, 700, 600, gdStyled); + gdImageLine(im, 700, 600, 200, 100, gdStyled); + + if (!gdAssertImageEqualsToFile("gdimageline/github_bug_167_exp.png", im)) { + error = 1; + } + + gdImageDestroy(im); + + return error; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167_exp.png Binary files differnew file mode 100644 index 00000000000..774270f63db --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/github_bug_167_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt index 4e54fffb143..6ec1a0f15f4 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt @@ -5,8 +5,4 @@ SET(TESTS_FILES gdimageopenpolygon3 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/Makemodule.am new file mode 100644 index 00000000000..1941af510e7 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/Makemodule.am @@ -0,0 +1,14 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimageopenpolygon/gdimageopenpolygon0 \ + gdimageopenpolygon/gdimageopenpolygon1 \ + gdimageopenpolygon/gdimageopenpolygon2 \ + gdimageopenpolygon/gdimageopenpolygon3 +endif + +EXTRA_DIST += \ + gdimageopenpolygon/CMakeLists.txt \ + gdimageopenpolygon/gdimageopenpolygon0.png \ + gdimageopenpolygon/gdimageopenpolygon1.png \ + gdimageopenpolygon/gdimageopenpolygon2.png \ + gdimageopenpolygon/gdimageopenpolygon3.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c index d9bf1bd962a..7243222b9b8 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon0.c @@ -15,7 +15,7 @@ main(void) gdImageFilledRectangle(im, 0, 0, 99, 99, white); gdImageOpenPolygon(im, NULL, 0, black); /* no effect */ gdImageOpenPolygon(im, NULL, -1, black); /* no effect */ - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimageopenpolygon/gdimageopenpolygon0.png", im); + r = gdAssertImageEqualsToFile("gdimageopenpolygon/gdimageopenpolygon0.png", im); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); return EXIT_SUCCESS; diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c index 07ee29dff49..616c34e92e9 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon1.c @@ -23,7 +23,7 @@ main(void) points[0].x = 10; points[0].y = 10; gdImageOpenPolygon(im, points, 1, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimageopenpolygon/gdimageopenpolygon1.png", im); + r = gdAssertImageEqualsToFile("gdimageopenpolygon/gdimageopenpolygon1.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c index ab097d83cad..07d1f01d82a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon2.c @@ -25,7 +25,7 @@ main(void) points[1].x = 50; points[1].y = 70; gdImageOpenPolygon(im, points, 2, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimageopenpolygon/gdimageopenpolygon2.png", im); + r = gdAssertImageEqualsToFile("gdimageopenpolygon/gdimageopenpolygon2.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c index 027bfacd20b..52166604a4f 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/gdimageopenpolygon3.c @@ -27,7 +27,7 @@ main(void) points[2].x = 90; points[2].y = 30; gdImageOpenPolygon(im, points, 3, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimageopenpolygon/gdimageopenpolygon3.png", im); + r = gdAssertImageEqualsToFile("gdimageopenpolygon/gdimageopenpolygon3.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt index 2d10b21ed94..eadd82a4670 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES gdimagepixelate ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/Makemodule.am new file mode 100644 index 00000000000..d04c2992724 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/Makemodule.am @@ -0,0 +1,5 @@ +libgd_test_programs += \ + gdimagepixelate/gdimagepixelate + +EXTRA_DIST += \ + gdimagepixelate/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c index 2a0a4692269..047ac8f446e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c @@ -36,15 +36,15 @@ static const int expected_average[][3] = { int g = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>> 8)&0xFF; \ int b = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE] )&0xFF; \ if (r != gdImageRed(im, p)) { \ - printf("Red %x is expected, but %x\n", r, gdImageRed(im, p)); \ + gdTestErrorMsg("Red %x is expected, but %x\n", r, gdImageRed(im, p)); \ return 0; \ } \ if (g != gdImageGreen(im, p)) { \ - printf("Green %x is expected, but %x\n", g, gdImageGreen(im, p)); \ + gdTestErrorMsg("Green %x is expected, but %x\n", g, gdImageGreen(im, p)); \ return 0; \ } \ if (b != gdImageBlue(im, p)) { \ - printf("Blue %x is expected, but %x\n", b, gdImageBlue(im, p)); \ + gdTestErrorMsg("Blue %x is expected, but %x\n", b, gdImageBlue(im, p)); \ return 0; \ } \ } \ diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt index 679e93986be..e965b73fdd2 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt @@ -5,8 +5,4 @@ SET(TESTS_FILES gdimagepolygon3 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/Makemodule.am new file mode 100644 index 00000000000..ed465fc8bfa --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/Makemodule.am @@ -0,0 +1,14 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagepolygon/gdimagepolygon0 \ + gdimagepolygon/gdimagepolygon1 \ + gdimagepolygon/gdimagepolygon2 \ + gdimagepolygon/gdimagepolygon3 +endif + +EXTRA_DIST += \ + gdimagepolygon/CMakeLists.txt \ + gdimagepolygon/gdimagepolygon0.png \ + gdimagepolygon/gdimagepolygon1.png \ + gdimagepolygon/gdimagepolygon2.png \ + gdimagepolygon/gdimagepolygon3.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c index 20fa423c056..fbc893014a7 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon0.c @@ -15,7 +15,7 @@ main(void) gdImageFilledRectangle(im, 0, 0, 99, 99, white); gdImagePolygon(im, NULL, 0, black); /* no effect */ gdImagePolygon(im, NULL, -1, black); /* no effect */ - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagepolygon/gdimagepolygon0.png", im); + r = gdAssertImageEqualsToFile("gdimagepolygon/gdimagepolygon0.png", im); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); return EXIT_SUCCESS; diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c index 6f2ad57dfcc..3b8dde540e6 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon1.c @@ -23,7 +23,7 @@ main(void) points[0].x = 10; points[0].y = 10; gdImagePolygon(im, points, 1, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagepolygon/gdimagepolygon1.png", im); + r = gdAssertImageEqualsToFile("gdimagepolygon/gdimagepolygon1.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c index 8142c3ba873..90b824d97b4 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon2.c @@ -25,7 +25,7 @@ main(void) points[1].x = 50; points[1].y = 70; gdImagePolygon(im, points, 2, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagepolygon/gdimagepolygon2.png", im); + r = gdAssertImageEqualsToFile("gdimagepolygon/gdimagepolygon2.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c index 55d71f27a9c..b53d7c956fd 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/gdimagepolygon3.c @@ -27,7 +27,7 @@ main(void) points[2].x = 90; points[2].y = 30; gdImagePolygon(im, points, 3, black); - r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagepolygon/gdimagepolygon3.png", im); + r = gdAssertImageEqualsToFile("gdimagepolygon/gdimagepolygon3.png", im); free(points); gdImageDestroy(im); if (!r) exit(EXIT_FAILURE); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt index 2c73ef9b77a..517864ed2ba 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt @@ -1,10 +1,7 @@ SET(TESTS_FILES bug00003 bug00106_gdimagerectangle + github_bug_00172 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am new file mode 100644 index 00000000000..4175ca59873 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am @@ -0,0 +1,7 @@ +libgd_test_programs += \ + gdimagerectangle/bug00003 \ + gdimagerectangle/bug00106_gdimagerectangle \ + gdimagerectangle/github_bug_00172 + +EXTRA_DIST += \ + gdimagerectangle/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c new file mode 100644 index 00000000000..6519342041f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c @@ -0,0 +1,53 @@ +#include <stdio.h> +#include "gd.h" + +#include "gdtest.h" + +int main() { + gdImagePtr im; + int black, white; + int error = 0; + int xs = 300, xe = 350, i; + im = gdImageCreateTrueColor(400, 200); + + if (im == NULL) { + gdTestErrorMsg("gdImageCreate failed.\n"); + return 1; + } + + white = gdImageColorAllocate(im, 255,255,255); + black = gdImageColorAllocate(im, 0,0,0); + + gdImageFilledRectangle(im, 0, 0, 400,200, white); + + gdImageRectangle(im, xs, 95, xe, 95, black); + + for (i = xs; i <= xe; i++) { + int c = gdImageGetPixel(im, i, 94); + if (c != white) { + error |=1; + } + } + for (i = xs; i <= xe; i++) { + int c = gdImageGetPixel(im, i, 95); + if (c != black) { + error |=1; + } + } + for (i = xs; i <= xe; i++) { + int c = gdImageGetPixel(im, i, 96); + if (c != white) { + error |=1; + } + } + + if (gdImageGetPixel(im, xs -1, 95) != white) { + error |=1; + } + if (gdImageGetPixel(im, xe +1, 95) != white) { + error |=1; + } + gdImageDestroy(im); + + return error; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt new file mode 100644 index 00000000000..fd8b4fa7b1b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt @@ -0,0 +1,6 @@ +SET(TESTS_FILES + bug00067 + php_bug_64898 +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am new file mode 100644 index 00000000000..696344bafb5 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am @@ -0,0 +1,28 @@ +if HAVE_LIBJPEG +libgd_test_programs += \ + gdimagerotate/bug00067 +endif + +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagerotate/php_bug_64898 +endif + +EXTRA_DIST += \ + gdimagerotate/CMakeLists.txt \ + gdimagerotate/bug00067_000_exp.png \ + gdimagerotate/bug00067_015_exp.png \ + gdimagerotate/bug00067_030_exp.png \ + gdimagerotate/bug00067_045_exp.png \ + gdimagerotate/bug00067_060_exp.png \ + gdimagerotate/bug00067_075_exp.png \ + gdimagerotate/bug00067_090_exp.png \ + gdimagerotate/bug00067_105_exp.png \ + gdimagerotate/bug00067_120_exp.png \ + gdimagerotate/bug00067_135_exp.png \ + gdimagerotate/bug00067_150_exp.png \ + gdimagerotate/bug00067_165_exp.png \ + gdimagerotate/bug00067_180_exp.png \ + gdimagerotate/php_bug_64898.png \ + gdimagerotate/php_bug_64898_exp.png \ + gdimagerotate/remirh128.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c index 4a6595988b9..add483d2d02 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067.c @@ -7,33 +7,23 @@ int main() { gdImagePtr im, exp; - char path[2048]; - const char *file_im = "gdimagerotate/remirh128.jpg"; - const char *file_exp = "gdimagerotate/bug00067"; + char *path, filename[2048]; + const char *file_im = "gdimagerotate/remirh128.png"; FILE *fp; int color; int error = 0; int angle; - sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_im); - - fp = fopen(path, "rb"); - - if (!fp) { - gdTestErrorMsg("opening Jpeg %s for reading failed.\n", path); - return 1; - } - - im = gdImageCreateFromJpeg(fp); - + fp = gdTestFileOpen(file_im); + im = gdImageCreateFromPng(fp); fclose(fp); if (!im) { - gdTestErrorMsg("loading %s failed.\n", path); + gdTestErrorMsg("loading %s failed.\n", file_im); return 1; } - color = gdImageColorAllocate(im, 0, 0, 0); + color = gdImageColorAllocateAlpha(im, 255, 255, 255, 127); if (color < 0) { gdTestErrorMsg("allocation color from image failed.\n"); @@ -51,12 +41,13 @@ int main() return 1; } - sprintf(path, "%s/%s_%03d_exp.png", GDTEST_TOP_DIR, file_exp, angle); - + sprintf(filename, "bug00067_%03d_exp.png", angle); + path = gdTestFilePath2("gdimagerotate", filename); if (!gdAssertImageEqualsToFile(path, exp)) { gdTestErrorMsg("comparing rotated image to %s failed.\n", path); error += 1; } + free(path); gdImageDestroy(exp); } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.png Binary files differindex d06b5fe58fb..2db78821ab8 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_000_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.png Binary files differindex a0f8ce2efae..48bd53ab5d8 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_015_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.png Binary files differindex aad7f4ccb67..b56e1f1a159 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_030_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.png Binary files differindex 75916a51649..69385ed7114 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_045_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.png Binary files differindex f24364a062f..3dc07e54b6f 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_060_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.png Binary files differindex f8dcf449086..c38fdf478bf 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_075_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.png Binary files differindex a971447c7b2..3a85c2d4fe2 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_090_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.png Binary files differindex 2cf641d85a8..9a64cb71584 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_105_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.png Binary files differindex 1890f92545c..b8097ce8d32 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_120_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.png Binary files differindex 34ccb0aa054..e085e02bb8a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_135_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.png Binary files differindex 330d030a7fa..b61bed7454b 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_150_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.png Binary files differindex df5b6400bc2..592bdea3b23 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_165_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.png Binary files differindex d4f65983615..65840b7b049 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/bug00067_180_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c index 9bbd98b5313..67f62a77cd7 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898.c @@ -7,25 +7,15 @@ int main() { gdImagePtr im, exp; - char path[2048]; - const char *file_im = "gdimagerotate/php_bug_64898.png"; - const char *file_exp = "gdimagerotate/php_bug_64898_exp.png"; FILE *fp; - int color; - - sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_im); - - fp = fopen(path, "rb"); - - if (!fp) { - gdTestErrorMsg("opening PNG %s for reading failed.\n", path); - return 1; - } + int error = 0; + fp = gdTestFileOpen("gdimagerotate/php_bug_64898.png"); +(void)fp; im = gdImageCreateTrueColor(141, 200); if (!im) { - gdTestErrorMsg("loading %s failed.\n", path); + gdTestErrorMsg("loading failed.\n"); return 1; } @@ -42,17 +32,13 @@ int main() return 1; } - sprintf(path, "%s/%s", GDTEST_TOP_DIR, file_exp); - - if (!gdAssertImageEqualsToFile(path, exp)) { - printf("comparing rotated image to %s failed.\n", path); - gdImageDestroy(im); - gdImageDestroy(exp); - return 1; + if (!gdAssertImageEqualsToFile("gdimagerotate/php_bug_64898_exp.png", exp)) { + gdTestErrorMsg("comparing rotated image failed.\n"); + error = 1; } gdImageDestroy(exp); gdImageDestroy(im); - return 0; + return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.png Binary files differindex a03bdb8e9d6..7ecaeb076b8 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.png +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_64898_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.jpg b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.jpg Binary files differdeleted file mode 100644 index bd5e3c77e3c..00000000000 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.jpg +++ /dev/null diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.png Binary files differnew file mode 100644 index 00000000000..2db78821ab8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/remirh128.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt new file mode 100644 index 00000000000..91bd0150176 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt @@ -0,0 +1,6 @@ +SET(TESTS_FILES + github_bug_00218 + bug_overflow_large_new_size +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am new file mode 100644 index 00000000000..23b89241883 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am @@ -0,0 +1,7 @@ + +libgd_test_programs += \ + gdimagescale/github_bug_00218 \ + gdimagescale/bug_overflow_large_new_size + +EXTRA_DIST += \ + gdimagescale/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c new file mode 100644 index 00000000000..0a8503b745f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c @@ -0,0 +1,31 @@ +#include <stdio.h> +#include <stdlib.h> +#include "gd.h" +#include <math.h> + +#include "gdtest.h" + +int main() +{ + gdImagePtr im, im2; + + im = gdImageCreate(1,1); + if (im == NULL) { + printf("gdImageCreate failed\n"); + return 1; + } + gdImageSetInterpolationMethod(im, GD_BELL); + + /* here the call may pass if the system has enough memory (physical or swap) + or fails (overflow check or alloc fails. + in both cases the tests pass */ + im2 = gdImageScale(im,0x15555556, 1); + if (im2 == NULL) { + printf("gdImageScale failed, expected (out of memory or overflow validation\n"); + return 0; + } + gdImageDestroy(im); + gdImageDestroy(im2); + + return 0; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/github_bug_00218.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/github_bug_00218.c new file mode 100644 index 00000000000..a25793ccdde --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/github_bug_00218.c @@ -0,0 +1,20 @@ +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im, dest; + int status; + + im = gdImageCreate(5,5); + dest = gdImageScale(im, 0, 1); + if (dest != NULL) { + gdTestErrorMsg("expecting NULL result\n"); + status = 1; + } else { + status = 0; + } + gdImageDestroy(im); + + return status; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt index 13de90a4ff6..0a9e2167c4c 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt @@ -3,8 +3,4 @@ SET(TESTS_FILES bug00208_2 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/Makemodule.am new file mode 100644 index 00000000000..ca13839522b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/Makemodule.am @@ -0,0 +1,11 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagescatterex/bug00208_1 \ + gdimagescatterex/bug00208_2 +endif + +EXTRA_DIST += \ + gdimagescatterex/CMakeLists.txt \ + gdimagescatterex/bug00208.png \ + gdimagescatterex/bug00208_1.png \ + gdimagescatterex/bug00208_2.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c index 4dc8b63e737..3d02b2cf869 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_1.c @@ -8,15 +8,11 @@ int main() gdScatter s; CuTestImageResult r; - fp = fopen(GDTEST_TOP_DIR "/gdimagescatterex/bug00208.png", "rb"); - if (!fp) { - fprintf(stderr, "could not open file\n"); - return 1; - } + fp = gdTestFileOpen("gdimagescatterex/bug00208.png"); im = gdImageCreateFromPng(fp); fclose(fp); if (!im) { - fprintf(stderr, "could not create image\n"); + gdTestErrorMsg("could not create image\n"); return 1; } @@ -26,20 +22,15 @@ int main() s.num_colors = 0; if (!gdImageScatterEx(im, &s)) { gdImageDestroy(im); - fprintf(stderr, "could not scatter\n"); + gdTestErrorMsg("could not scatter\n"); return 1; } - fp = fopen(GDTEST_TOP_DIR "/gdimagescatterex/bug00208_1.png", "rb"); - if (!fp) { - fprintf(stderr, "could not open file\n"); - gdImageDestroy(im); - return 1; - } + fp = gdTestFileOpen("gdimagescatterex/bug00208_1.png"); ex = gdImageCreateFromPng(fp); fclose(fp); if (!ex) { - fprintf(stderr, "could not create image\n"); + gdTestErrorMsg("could not create image\n"); gdImageDestroy(im); return 1; } @@ -48,7 +39,7 @@ int main() gdImageDestroy(ex); gdImageDestroy(im); if (r.pixels_changed > 10000) { - fprintf(stderr, "too much diff: %d\n", r.pixels_changed); + gdTestErrorMsg("too much diff: %d\n", r.pixels_changed); return 1; } return 0; diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c index 90361569df2..58c1382bafd 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/bug00208_2.c @@ -9,15 +9,11 @@ int main() int colors[] = {0xFF0000, 0x00FF00}; CuTestImageResult r; - fp = fopen(GDTEST_TOP_DIR "/gdimagescatterex/bug00208.png", "rb"); - if (!fp) { - fprintf(stderr, "could not open file\n"); - return 1; - } + fp = gdTestFileOpen("gdimagescatterex/bug00208.png"); im = gdImageCreateFromPng(fp); fclose(fp); if (!im) { - fprintf(stderr, "could not create image\n"); + gdTestErrorMsg("could not create image\n"); return 1; } @@ -28,20 +24,15 @@ int main() s.colors = colors; if (!gdImageScatterEx(im, &s)) { gdImageDestroy(im); - fprintf(stderr, "could not scatter\n"); + gdTestErrorMsg("could not scatter\n"); return 1; } - fp = fopen(GDTEST_TOP_DIR "/gdimagescatterex/bug00208_2.png", "rb"); - if (!fp) { - fprintf(stderr, "could not open file\n"); - gdImageDestroy(im); - return 1; - } + fp = gdTestFileOpen("gdimagescatterex/bug00208_2.png"); ex = gdImageCreateFromPng(fp); fclose(fp); if (!ex) { - fprintf(stderr, "could not create image\n"); + gdTestErrorMsg("could not create image\n"); gdImageDestroy(im); return 1; } @@ -50,7 +41,7 @@ int main() gdImageDestroy(ex); gdImageDestroy(im); if (r.pixels_changed > 10000) { - fprintf(stderr, "too much diff: %d\n", r.pixels_changed); + gdTestErrorMsg("too much diff: %d\n", r.pixels_changed); return 1; } return 0; diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt index 1fb1f38bb36..31ba4e418b9 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt @@ -4,8 +4,4 @@ SET(TESTS_FILES gdeffectmultiply ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am new file mode 100644 index 00000000000..8722e9afdf0 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am @@ -0,0 +1,7 @@ +libgd_test_programs += \ + gdimagesetpixel/bug00186 \ + gdimagesetpixel/gdeffectmultiply \ + gdimagesetpixel/gdeffectoverlay + +EXTRA_DIST += \ + gdimagesetpixel/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectmultiply.c b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectmultiply.c new file mode 100644 index 00000000000..3d8da7bfe29 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectmultiply.c @@ -0,0 +1,33 @@ +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + int x, y, c; + int r=0; + + + im = gdImageCreateTrueColor(256, 256); + gdImageAlphaBlending( im, gdEffectReplace ); + for (x=0; x<256; x++) { + for (y=0; y<256; y++) { + c = (y/2 << 24) + (x << 16) + (x << 8) + x; + gdImageSetPixel(im, x, y, c ); + } + } + gdImageAlphaBlending( im, gdEffectMultiply ); + gdImageFilledRectangle(im, 0, 0, 255, 255, 0xff7f00); + + if (gdTrueColorGetGreen(gdImageGetPixel(im, 0, 128)) != 0x40) { + r = 1; + } + if (gdTrueColorGetGreen(gdImageGetPixel(im, 128, 128)) != 0x5f) { + r = 1; + } + if (gdTrueColorGetGreen(gdImageGetPixel(im, 255, 128)) != 0x7f) { + r = 1; + } + gdImageDestroy(im); + return r; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectoverlay.c b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectoverlay.c new file mode 100644 index 00000000000..7f63e17d301 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/gdeffectoverlay.c @@ -0,0 +1,33 @@ +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + int x, y, c; + int r=0; + + + im = gdImageCreateTrueColor(256, 256); + gdImageAlphaBlending( im, gdEffectReplace ); + for (x=0; x<256; x++) { + for (y=0; y<256; y++) { + c = (y/2 << 24) + (x << 16) + (x << 8) + x; + gdImageSetPixel(im, x, y, c ); + } + } + gdImageAlphaBlending( im, gdEffectOverlay ); + gdImageFilledRectangle(im, 0, 0, 255, 255, 0xff7f00); + + if (gdTrueColorGetGreen(gdImageGetPixel(im, 0, 128)) != 0x00) { + r = 1; + } + if (gdTrueColorGetGreen(gdImageGetPixel(im, 128, 128)) != 0x80) { + r = 1; + } + if (gdTrueColorGetGreen(gdImageGetPixel(im, 255, 128)) != 0xff) { + r = 1; + } + gdImageDestroy(im); + return r; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt index c3338c0dc92..a38613f9a81 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt @@ -1,9 +1,7 @@ +IF(FREETYPE_FOUND) SET(TESTS_FILES gdimagestringft_bbox ) +ENDIF(FREETYPE_FOUND) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am new file mode 100644 index 00000000000..0dfe26fb13c --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am @@ -0,0 +1,7 @@ +if HAVE_LIBFREETYPE +libgd_test_programs += \ + gdimagestringft/gdimagestringft_bbox +endif + +EXTRA_DIST += \ + gdimagestringft/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c index 01fd73a33c1..bc2bdd0b791 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c @@ -28,7 +28,7 @@ static int EXPECT[16][8] = { int main() { - char path[2048]; + char *path; gdImagePtr im; int black; double cos_t, sin_t; @@ -38,7 +38,7 @@ int main() int error = 0; FILE *fp; - sprintf(path, "%s/freetype/DejaVuSans.ttf", GDTEST_TOP_DIR); + path = gdTestFilePath("freetype/DejaVuSans.ttf"); im = gdImageCreate(800, 800); gdImageColorAllocate(im, 0xFF, 0xFF, 0xFF); /* allocate white for background color */ black = gdImageColorAllocate(im, 0, 0, 0); @@ -53,7 +53,7 @@ int main() } for (j = 0; j < 8; j++) { if (brect[j] != EXPECT[i][j]) { - printf("(%d, %d) (%d, %d) (%d, %d) (%d, %d) expected, but (%d, %d) (%d, %d) (%d, %d) (%d, %d)\n", + gdTestErrorMsg("(%d, %d) (%d, %d) (%d, %d) (%d, %d) expected, but (%d, %d) (%d, %d) (%d, %d) (%d, %d)\n", EXPECT[i][0], EXPECT[i][1], EXPECT[i][2], EXPECT[i][3], EXPECT[i][4], EXPECT[i][5], EXPECT[i][6], EXPECT[i][7], brect[0], brect[1], brect[2], brect[3], @@ -68,14 +68,11 @@ int main() y = (int)(cos_t * y - sin_t * x); x = temp; } - fp = fopen("gdimagestringft_bbox.png", "wb"); - if (!fp) { - error = 1; - goto done; - } + fp = gdTestTempFp(); gdImagePng(im, fp); fclose(fp); done: gdImageDestroy(im); + free(path); return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt index 5d2666883d8..db08ac13a8e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt @@ -1,9 +1,7 @@ +IF(FREETYPE_FOUND) SET(TESTS_FILES gdimagestringftex_returnfontpathname ) +ENDIF(FREETYPE_FOUND) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/Makemodule.am new file mode 100644 index 00000000000..e72c4375a46 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/Makemodule.am @@ -0,0 +1,7 @@ +if HAVE_LIBFREETYPE +libgd_test_programs += \ + gdimagestringftex/gdimagestringftex_returnfontpathname +endif + +EXTRA_DIST += \ + gdimagestringftex/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c index f91485b7717..fc135cd263f 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/gdimagestringftex_returnfontpathname.c @@ -5,9 +5,9 @@ int main() { gdFTStringExtra strex; - char path[2048]; + char *path; - sprintf(path, "%s/freetype/DejaVuSans.ttf", GDTEST_TOP_DIR); + path = gdTestFilePath("freetype/DejaVuSans.ttf"); strex.flags = gdFTEX_RETURNFONTPATHNAME; strex.fontpath = NULL; gdImageStringFTEx(NULL, NULL, 0, path, 72, 0, 0, 0, "hello, gd", &strex); @@ -18,5 +18,6 @@ int main() return 2; } gdFree(strex.fontpath); + free(path); return 0; } diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt new file mode 100644 index 00000000000..606eb537270 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt @@ -0,0 +1,5 @@ +SET(TESTS_FILES + php_bug_72512 +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am new file mode 100644 index 00000000000..cd73f092b9b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am @@ -0,0 +1,6 @@ + +libgd_test_programs += \ + gdimagetruecolortopalette/php_bug_72512 + +EXTRA_DIST += \ + gdimagetruecolortopalette/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c new file mode 100644 index 00000000000..d022a94e5e7 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/php_bug_72512.c @@ -0,0 +1,34 @@ +#include <stdio.h> +#include <stdlib.h> +#include "gd.h" + +#include "gdtest.h" + +int main() +{ + gdImagePtr im, im2; + int error = 0; + + im = gdImageCreateTrueColor(100, 100); + + if (im == NULL) { + gdTestErrorMsg("gdImageCreateTruecolor failed"); + error = 1; + goto exit; + } + gdImageColorTransparent(im, -1); + gdImageTrueColorToPalette(im, 1, 3); + gdImageColorTransparent(im, 9); + im2 = gdImageScale(im, 1, 65535); + if (im2 == NULL) { + error = 1; + goto freeim; + } else { + gdImageDestroy(im2); + } + +freeim: + gdImageDestroy(im); +exit: + return error; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt new file mode 100644 index 00000000000..296e3f1ca77 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt @@ -0,0 +1,6 @@ +SET(TESTS_FILES + gdModesAndPalettes + gdTrivialResize +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/Makemodule.am new file mode 100644 index 00000000000..f13f4abbcde --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/Makemodule.am @@ -0,0 +1,6 @@ +libgd_test_programs += \ + gdinterpolatedscale/gdModesAndPalettes \ + gdinterpolatedscale/gdTrivialResize + +EXTRA_DIST += \ + gdinterpolatedscale/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c index a6ed14d92f3..a0a95595544 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c +++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdModesAndPalettes.c @@ -36,6 +36,10 @@ int main() { result = gdImageScale(im[i], NX, NY); gdTestAssert(result != NULL); gdTestAssert(result != im[i]); + if (result == NULL) { + gdTestErrorMsg("gdImageScale failed (method: %i, im:%i).\n", method, i); + break; + } gdTestAssert(result->sx == NX && result->sy == NY); gdImageDestroy(result); diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c index f11b5059fbf..2b7baf1f8d5 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c +++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/gdTrivialResize.c @@ -8,25 +8,25 @@ 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_BILINEAR_FIXED); // FP interp'n - return im; + return im; }/* mkwhite*/ /* Fill with almost-black. */ void mkblack(gdImagePtr ptr) { - gdImageFilledRectangle(ptr, 0, 0, ptr->sx - 1, ptr->sy - 1, - gdImageColorExactAlpha(ptr, 2, 2, 2, 0)); + gdImageFilledRectangle(ptr, 0, 0, ptr->sx - 1, ptr->sy - 1, + gdImageColorExactAlpha(ptr, 2, 2, 2, 0)); }/* mkblack*/ @@ -34,61 +34,60 @@ void mkblack(gdImagePtr ptr) void scaletest(int x, int y, int nx, int ny) { - gdImagePtr im, imref, tmp, same; + gdImagePtr im, imref, tmp, same; imref = mkwhite(x, y); - im = mkwhite(x, y); - tmp = gdImageScale(im, nx, ny); - same = gdImageScale(tmp, x, y); - - /* Test the result to insure that it's close enough to the - * original. */ - gdTestAssert(gdMaxPixelDiff(im, same) < CLOSE_ENOUGH); - - /* Modify the original and test for a change again. (I.e. test - * for accidentally shared memory.) */ - mkblack(tmp); - gdTestAssert(gdMaxPixelDiff(imref, same) < CLOSE_ENOUGH); - - gdImageDestroy(im); - gdImageDestroy(tmp); - gdImageDestroy(same); + im = mkwhite(x, y); + tmp = gdImageScale(im, nx, ny); + same = gdImageScale(tmp, x, y); + + /* Test the result to insure that it's close enough to the + * original. */ + gdTestAssert(gdMaxPixelDiff(im, same) < CLOSE_ENOUGH); + + /* Modify the original and test for a change again. (I.e. test + * for accidentally shared memory.) */ + mkblack(tmp); + gdTestAssert(gdMaxPixelDiff(imref, same) < CLOSE_ENOUGH); + + gdImageDestroy(im); + gdImageDestroy(imref); + gdImageDestroy(tmp); + gdImageDestroy(same); }/* scaletest*/ void do_test(int x, int y, int nx, int ny) { - gdImagePtr im, imref, tmp; - gdImagePtr same, same2; - + gdImagePtr im, imref, same; im = mkwhite(x, y); - imref = mkwhite(x, y); + imref = mkwhite(x, y); - same = gdImageScale(im, x, y); + same = gdImageScale(im, x, y); - /* Trivial resize should be a straight copy. */ - gdTestAssert(im != same); - gdTestAssert(gdMaxPixelDiff(im, same) == 0); - gdTestAssert(gdMaxPixelDiff(imref, same) == 0); + /* Trivial resize should be a straight copy. */ + gdTestAssert(im != same); + gdTestAssert(gdMaxPixelDiff(im, same) == 0); + gdTestAssert(gdMaxPixelDiff(imref, same) == 0); - /* Ensure that modifying im doesn't modify same (i.e. see if we - * can catch them accidentally sharing the same pixel buffer.) */ - mkblack(im); - gdTestAssert(gdMaxPixelDiff(imref, same) == 0); + /* Ensure that modifying im doesn't modify same (i.e. see if we + * can catch them accidentally sharing the same pixel buffer.) */ + mkblack(im); + gdTestAssert(gdMaxPixelDiff(imref, same) == 0); - gdImageDestroy(same); - gdImageDestroy(im); + gdImageDestroy(same); + gdImageDestroy(im); + gdImageDestroy(imref); - /* Scale horizontally, vertically and both. */ - scaletest(x, y, nx, y); - scaletest(x, y, x, ny); - scaletest(x, y, nx, ny); + /* Scale horizontally, vertically and both. */ + scaletest(x, y, nx, y); + scaletest(x, y, x, ny); + scaletest(x, y, nx, ny); } -int main(int argc, char **argv) +int main() { + do_test(300, 300, 600, 600); + do_test(1500, 1000, 600, 400); - do_test(300, 300, 600, 600); - do_test(3200, 2133, 640, 427); - - return gdNumFailures(); + return gdNumFailures(); } diff --git a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt index 9fd4caf3797..bc72c27c84b 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES gdnewfilectx_null ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/Makemodule.am new file mode 100644 index 00000000000..21f45a01316 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/Makemodule.am @@ -0,0 +1,5 @@ +libgd_test_programs += \ + gdnewfilectx/gdnewfilectx_null + +EXTRA_DIST += \ + gdnewfilectx/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am new file mode 100644 index 00000000000..5b4e39e6e6f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdtest/Makemodule.am @@ -0,0 +1,5 @@ +# Note: Library is declared in tests/Makefile.am as it's used by all the tests. + +EXTRA_DIST += \ + gdtest/CMakeLists.txt \ + gdtest/test_config.h.cmake diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c index 83aba01d77f..b26d0394a41 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c +++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c @@ -1,3 +1,4 @@ +#include <config.h> #include <assert.h> #include <setjmp.h> #include <stdlib.h> @@ -5,6 +6,24 @@ #include <string.h> #include <math.h> #include <limits.h> + +#ifdef HAVE_DIRENT_H +#include <dirent.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifdef HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif + +#ifdef _WIN32 +# include "readdir.h" +#endif + #include "gd.h" #include "gdtest.h" @@ -25,19 +44,351 @@ void gdSilence(int priority, const char *format, va_list args) gdImagePtr gdTestImageFromPng(const char *filename) { gdImagePtr image; - FILE *fp; - fp = fopen(filename, "rb"); + /* If the path is relative, then assume it's in the tests/ dir. */ + if (filename[0] == '/' +#ifdef _WIN32 + || filename[1] == ':' +#endif + ) { + fp = fopen(filename, "rb"); + } else { + fp = gdTestFileOpen(filename); + } - if (!fp) { - return NULL; + if (fp == NULL) { + return NULL; } + image = gdImageCreateFromPng(fp); fclose(fp); return image; } +static char *tmpdir_base; + +/* This is kind of hacky, but it's meant to be simple. */ +static void _clean_dir(const char *dir) +{ + DIR *d; + struct dirent *de; + + d = opendir(dir); + if (d == NULL) + return; + + if (chdir(dir) != 0) + goto done; + + while ((de = readdir(d)) != NULL) { + struct stat st; + + if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0) + continue; +#ifdef _WIN32 + { + WIN32_FILE_ATTRIBUTE_DATA data; + + if (!GetFileAttributesEx(de->d_name, GetFileExInfoStandard, &data)) { + continue; + } + if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + _clean_dir(de->d_name); + } else { + unlink(de->d_name); + } + } +#else + if (lstat(de->d_name, &st) != 0) + continue; + + if (S_ISDIR(st.st_mode)) + _clean_dir(de->d_name); + else + unlink(de->d_name); +#endif + } + + if (chdir("..")) { + /* Ignore. */; + } + + done: + closedir(d); + rmdir(dir); +} + +static void tmpdir_cleanup(void) +{ + _clean_dir(tmpdir_base); + free(tmpdir_base); +} + +#ifdef _WIN32 +char* strrstr (char* haystack, char* needle) +{ + int needle_length = strlen(needle); + char * haystack_end = haystack + strlen(haystack) - needle_length; + char * p; + int i; + + for(p = haystack_end; p >= haystack; --p) + { + for(i = 0; i < needle_length; ++i) { + if(p[i] != needle[i]) + goto next; + } + return p; + + next:; + } + return 0; +} + + +typedef VOID (WINAPI *MyGetSystemTimeAsFileTime)(LPFILETIME lpSystemTimeAsFileTime); + +static MyGetSystemTimeAsFileTime get_time_func(void) +{ + MyGetSystemTimeAsFileTime timefunc = NULL; + HMODULE hMod = GetModuleHandle("kernel32.dll"); + + if (hMod) { + /* Max possible resolution <1us, win8/server2012 */ + timefunc = (MyGetSystemTimeAsFileTime)GetProcAddress(hMod, "GetSystemTimePreciseAsFileTime"); + + if(!timefunc) { + /* 100ns blocks since 01-Jan-1641 */ + timefunc = (MyGetSystemTimeAsFileTime)GetProcAddress(hMod, "GetSystemTimeAsFileTime"); + } + } + + return timefunc; +} +static MyGetSystemTimeAsFileTime timefunc = NULL; +static int getfilesystemtime(struct timeval *tv) +{ + FILETIME ft; + unsigned __int64 ff = 0; + ULARGE_INTEGER fft; + + if (timefunc == NULL) { + timefunc = get_time_func(); + } + timefunc(&ft); + + /* + * Do not cast a pointer to a FILETIME structure to either a + * ULARGE_INTEGER* or __int64* value because it can cause alignment faults on 64-bit Windows. + * via http://technet.microsoft.com/en-us/library/ms724284(v=vs.85).aspx + */ + fft.HighPart = ft.dwHighDateTime; + fft.LowPart = ft.dwLowDateTime; + ff = fft.QuadPart; + + ff /= 10Ui64; /* convert to microseconds */ + ff -= 11644473600000000Ui64; /* convert to unix epoch */ + + tv->tv_sec = (long)(ff / 1000000Ui64); + tv->tv_usec = (long)(ff % 1000000Ui64); + + return 0; +} + +static char * +mkdtemp (char *tmpl) +{ + static const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + static const int NLETTERS = sizeof (letters) - 1; + static int counter = 0; + char *XXXXXX; + struct timeval tv; + _int64 value; + int count; + + /* find the last occurrence of "XXXXXX" */ + XXXXXX = strrstr(tmpl, "XXXXXX"); + + if (!XXXXXX || strncmp (XXXXXX, "XXXXXX", 6)) { + errno = EINVAL; + return NULL; + } + + /* Get some more or less random data. */ + getfilesystemtime(&tv); + value = (tv.tv_usec ^ tv.tv_sec) + counter++; + + for (count = 0; count < 100; value += 7777, ++count) { + _int64 v = value; + + /* Fill in the random bits. */ + XXXXXX[0] = letters[v % NLETTERS]; + v /= NLETTERS; + XXXXXX[1] = letters[v % NLETTERS]; + v /= NLETTERS; + XXXXXX[2] = letters[v % NLETTERS]; + v /= NLETTERS; + XXXXXX[3] = letters[v % NLETTERS]; + v /= NLETTERS; + XXXXXX[4] = letters[v % NLETTERS]; + v /= NLETTERS; + XXXXXX[5] = letters[v % NLETTERS]; + + /* tmpl is in UTF-8 on Windows, thus use g_mkdir() */ + if (mkdir(tmpl) == 0) { + return tmpl; + } + printf("failed to create directory\n"); + if (errno != EEXIST) + /* Any other error will apply also to other names we might + * try, and there are 2^32 or so of them, so give up now. + */ + return NULL; + } + + /* We got out of the loop because we ran out of combinations to try. */ + errno = EEXIST; + return NULL; +} +#endif + +const char *gdTestTempDir(void) +{ + if (tmpdir_base == NULL) { + char *tmpdir; +#ifdef _WIN32 + char tmpdir_root[MAX_PATH]; + size_t tmpdir_root_len = GetTempPath(MAX_PATH, tmpdir_root); + gdTestAssert(!(tmpdir_root_len > MAX_PATH || (tmpdir_root_len == 0))); + gdTestAssert((tmpdir_root_len + 30 < MAX_PATH)); +#else + char *tmpdir_root; + tmpdir_root = getenv("TMPDIR"); + if (tmpdir_root == NULL) + tmpdir_root = "/tmp"; +#endif + + /* The constant here is a lazy over-estimate. */ + tmpdir = malloc(strlen(tmpdir_root) + 30); + gdTestAssert(tmpdir != NULL); +#ifdef _WIN32 + sprintf(tmpdir, "%sgdtest.XXXXXX", tmpdir_root); +#else + sprintf(tmpdir, "%s/gdtest.XXXXXX", tmpdir_root); +#endif + tmpdir_base = mkdtemp(tmpdir); + gdTestAssert(tmpdir_base != NULL); + + atexit(tmpdir_cleanup); + } + + return tmpdir_base; +} + +char *gdTestTempFile(const char *template) +{ + const char *tempdir = gdTestTempDir(); + char *ret; + +#ifdef _WIN32 + { + char *tmpfilename; + UINT error; + + ret = malloc(MAX_PATH); + gdTestAssert(ret != NULL); + if (template == NULL) { + error = GetTempFileName(tempdir, + "gdtest", + 0, + ret); + gdTestAssert(error != 0); + } else { + sprintf(ret, "%s\\%s", tempdir, template); + } + } +#else + if (template == NULL) { + template = "gdtemp.XXXXXX"; + } + ret = malloc(strlen(tempdir) + 10 + strlen(template)); + gdTestAssert(ret != NULL); + sprintf(ret, "%s/%s", tempdir, template); + + if (strstr(template, "XXXXXX") != NULL) { + int fd = mkstemp(ret); + gdTestAssert(fd != -1); + close(fd); + } +#endif + return ret; +} + +FILE *gdTestTempFp(void) +{ + char *file = gdTestTempFile(NULL); + FILE *fp = fopen(file, "wb"); + gdTestAssert(fp != NULL); + free(file); + return fp; +} + +char *gdTestFilePathV(const char *path, va_list args) +{ + size_t len; + const char *p; + char *file; + va_list args_len; + + /* Figure out how much space we need. */ + va_copy(args_len, args); + len = strlen(GDTEST_TOP_DIR) + 1; + p = path; + do { + len += strlen(p) + 1; + } while ((p = va_arg(args_len, const char *)) != NULL); + va_end(args_len); + + /* Now build the path. */ + file = malloc(len); + gdTestAssert(file != NULL); + strcpy(file, GDTEST_TOP_DIR); + p = path; + do { +#ifdef _WIN32 + strcat(file, "\\"); +#else + strcat(file, "/"); +#endif + strcat(file, p); + } while ((p = va_arg(args, const char *)) != NULL); + va_end(args); + + return file; +} + +char *gdTestFilePathX(const char *path, ...) +{ + va_list args; + va_start(args, path); + return gdTestFilePathV(path, args); +} + +FILE *gdTestFileOpenX(const char *path, ...) +{ + va_list args; + FILE *fp; + char *file; + + va_start(args, path); + file = gdTestFilePathV(path, args); + fp = fopen(file, "rb"); + gdTestAssert(fp != NULL); + free(file); + return fp; +} + /* Compare two buffers, returning the number of pixels that are * different and the maximum difference of any single color channel in * result_ret. @@ -77,13 +428,14 @@ void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b, r1 = gdTrueColorGetRed(c1); r2 = gdTrueColorGetRed(c2); diff_r = abs (r1 - r2); - /* diff_r *= 4; /* emphasize */ + // diff_r *= 4; /* emphasize */ if (diff_r) { diff_r += gdRedMax/2; /* make sure it's visible */ } if (diff_r > 255) { diff_r = 255; } + UP_DIFF(diff_r); g1 = gdTrueColorGetGreen(c1); g2 = gdTrueColorGetGreen(c2); @@ -96,6 +448,7 @@ void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b, if (diff_g > 255) { diff_g = 255; } + UP_DIFF(diff_g); b1 = gdTrueColorGetBlue(c1); b2 = gdTrueColorGetBlue(c2); @@ -107,6 +460,7 @@ void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b, if (diff_b > 255) { diff_b = 255; } + UP_DIFF(diff_b); result_ret->pixels_changed++; if (buf_diff) gdImageSetPixel(buf_diff, x,y, gdTrueColorAlpha(diff_r, diff_g, diff_b, diff_a)); @@ -212,6 +566,7 @@ int gdTestImageCompareToImage(const char* file, unsigned int line, const char* m if (!fp) goto fail; gdImagePng(actual, fp); fclose(fp); + return 0; } else { if (surface_diff) { gdImageDestroy(surface_diff); @@ -251,10 +606,10 @@ int gdNumFailures() { return failureCount; } -int _gdTestAssert(const char* file, unsigned int line, const char* message, int condition) +int _gdTestAssert(const char* file, unsigned int line, int condition) { if (condition) return 1; - _gdTestErrorMsg(file, line, "%s", message); + _gdTestErrorMsg(file, line, "Assert failed in <%s:%i>\n", file, line); ++failureCount; @@ -263,15 +618,15 @@ int _gdTestAssert(const char* file, unsigned int line, const char* message, int int _gdTestAssertMsg(const char* file, unsigned int line, int condition, const char* message, ...) { - va_list args; - char output_buf[GDTEST_STRING_MAX]; + va_list args; if (condition) return 1; + fprintf(stderr, "%s:%u: ", file, line); va_start(args, message); - vsnprintf(output_buf, sizeof(output_buf), message, args); + vfprintf(stderr, message, args); va_end(args); - fprintf(stderr, "%s:%u: %s", file, line, output_buf); + fflush(stderr); ++failureCount; @@ -282,12 +637,11 @@ int _gdTestAssertMsg(const char* file, unsigned int line, int condition, const c int _gdTestErrorMsg(const char* file, unsigned int line, const char* format, ...) /* {{{ */ { va_list args; - char output_buf[GDTEST_STRING_MAX]; + fprintf(stderr, "%s:%u: ", file, line); va_start(args, format); - vsnprintf(output_buf, sizeof(output_buf), format, args); + vfprintf(stderr, format, args); va_end(args); - fprintf(stderr, "%s:%u: %s", file, line, output_buf); fflush(stderr); ++failureCount; diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h index 8f332b39bbb..fbf37bf4ff6 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h +++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h @@ -15,6 +15,36 @@ struct CuTestImageResult { /* Internal versions of assert functions -- use the public versions */ gdImagePtr gdTestImageFromPng(const char *filename); +/* Return a path to a writable temp dir. The common test code will make sure + * it's cleaned up when the test exits. Feel free to write whatever in here. + */ +const char *gdTestTempDir(void); + +/* Return a path to a writable file inside of the tempdir (see above). + * You should free the pointer when you're done. + * If |template| is NULL, you'll get a random file name, otherwise you'll get + * that under the tempdir. + */ +char *gdTestTempFile(const char *template); + +/* Return an open (writable) file handle to a temp file. */ +FILE *gdTestTempFp(void); + +/* Return the full path to a test file. The path should be relative + * to the tests/ dir. The caller should free the pointer when finished. + */ +char *gdTestFilePathV(const char *path, va_list args); +char *gdTestFilePathX(const char *path, ...); +#define gdTestFilePath(p) gdTestFilePathX(p, NULL) +#define gdTestFilePath2(p1, p2) gdTestFilePathX(p1, p2, NULL) + +/* Return an open (read-only) file handle to a test file. + * The path should be relative to the tests/ dir. + */ +FILE *gdTestFileOpenX(const char *path, ...); +#define gdTestFileOpen(p) gdTestFileOpenX(p, NULL) +#define gdTestFileOpen2(p1, p2) gdTestFileOpenX(p1, p2, NULL) + void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b, gdImagePtr buf_diff, CuTestImageResult *result_ret); @@ -26,7 +56,7 @@ int gdTestImageCompareToFile(const char* file, unsigned int line, const char* me unsigned int gdMaxPixelDiff(gdImagePtr a, gdImagePtr b); -int _gdTestAssert(const char* file, unsigned int line, const char* message, int condition); +int _gdTestAssert(const char* file, unsigned int line, int condition); int _gdTestAssertMsg(const char* file, unsigned int line, int condition, const char* message, ...); @@ -35,12 +65,12 @@ int _gdTestErrorMsg(const char* file, unsigned int line, const char* string, ... /* public assert functions */ #define gdAssertImageEqualsToFile(ex,ac) gdTestImageCompareToFile(__FILE__,__LINE__,NULL,(ex),(ac)) -#define gdAssertImageFileEqualsMsg(ex,ac) gdTestImageCompareFiles(__FILE__,__LINE__,(ms),(ex),(ac)) +#define gdAssertImageFileEqualsMsg(ex,ac,ms) gdTestImageCompareFiles(__FILE__,__LINE__,(ms),(ex),(ac)) -#define gdAssertImageEquals(tc,ex,ac) CuAssertImageEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) -#define gdAssertImageEqualsMsg(tc,ex,ac) CuAssertImageEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) +#define gdAssertImageEquals(ex,ac) gdTestImageCompareToImage(__FILE__,__LINE__,NULL,(ex),(ac)) +#define gdAssertImageEqualsMsg(ex,ac,ms) gdTestImageCompareToImage(__FILE__,__LINE__,(ms),(ex),(ac)) -#define gdTestAssert(cond) _gdTestAssert(__FILE__, __LINE__, "assert failed in <%s:%i>\n", (cond)) +#define gdTestAssert(cond) _gdTestAssert(__FILE__, __LINE__, (cond)) #define gdTestAssertMsg(cond, message, ...) _gdTestAssertMsg(__FILE__, __LINE__, (cond),(message),__VA_ARGS__) diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt index cc47150c832..aa09d66c40a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt @@ -2,8 +2,4 @@ SET(TESTS_FILES bug00032 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtiled/Makemodule.am new file mode 100644 index 00000000000..c85c7a4701c --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/Makemodule.am @@ -0,0 +1,10 @@ +if HAVE_LIBPNG +if HAVE_LIBZ +libgd_test_programs += \ + gdtiled/bug00032 +endif +endif + +EXTRA_DIST += \ + gdtiled/CMakeLists.txt \ + gdtiled/bug00032_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c b/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c index 0e711533f10..4c788e235cc 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c +++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c @@ -2,21 +2,12 @@ #include <stdio.h> #include "gdtest.h" -#define exp_img "bug00032_exp.png" - -#ifdef _MSC_VER -# define snprintf _snprintf -#endif - int main() { gdImagePtr im, tile; - char path[GDTEST_STRING_MAX]; gdSetErrorMethod(gdSilence); - snprintf(path, GDTEST_STRING_MAX - 1, "%s/gdtiled/%s", GDTEST_TOP_DIR, exp_img); - tile = gdImageCreateTrueColor(10, 10); gdImageFill(tile, 0, 0, 0xFFFFFF); gdImageLine(tile, 0,0, 9,9, 0xff0000); @@ -28,7 +19,7 @@ int main() gdImageSetTile(im, tile); gdImageFilledRectangle(im, 10, 10, 49, 49, gdTiled); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gdtiled/bug00032_exp.png", im)) { gdImageDestroy(im); gdImageDestroy(tile); return 1; diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt new file mode 100644 index 00000000000..f5c5bb75b0a --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt @@ -0,0 +1,5 @@ +SET(TESTS_FILES + github_bug_00221 +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am new file mode 100644 index 00000000000..e70b0735d12 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am @@ -0,0 +1,6 @@ + +libgd_test_programs += \ + gdtransformaffineboundingbox/github_bug_00221 + +EXTRA_DIST += \ + gdtransformaffineboundingbox/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c new file mode 100644 index 00000000000..c327789d9f8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c @@ -0,0 +1,32 @@ +#include <stdio.h> +#include <stdlib.h> +#include "gd.h" + +#include "gdtest.h" + + +int main() +{ + gdRect bbox; + gdRect area; + double affine[6]; + + affine[0] = -0.965926; + affine[1] = -0.258819; + affine[2] = 0.258819; + affine[3] = -0.965926; + affine[4] = 0.000000; + affine[5] = 0.000000; + area.x = 0; + area.y = 0; + area.width = 262; + area.height = 166; + if (gdTransformAffineBoundingBox(&area, affine, &bbox) != GD_TRUE) { + return 1; + } + if (!(bbox.x ==-253 && bbox.y ==-228 && bbox.width == 298 && bbox.height == 230)) { + return 1; + } + + return 0; +} diff --git a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt index a64f785d8e8..f9aa0e23c78 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt @@ -1,4 +1,3 @@ - SET(TESTS_FILES gif_im2im gif_null @@ -11,8 +10,4 @@ SET(TESTS_FILES bug00227 ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am new file mode 100644 index 00000000000..50f671fbceb --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am @@ -0,0 +1,25 @@ +libgd_test_programs += \ + gif/bug00005_2 \ + gif/bug00181 \ + gif/bug00227 \ + gif/gif_null + +if HAVE_LIBPNG +libgd_test_programs += \ + gif/bug00005 \ + gif/bug00006 \ + gif/bug00060 \ + gif/bug00066 \ + gif/gif_im2im +endif + +EXTRA_DIST += \ + gif/CMakeLists.txt \ + gif/bug00005_0.gif \ + gif/bug00005_1.gif \ + gif/bug00005_2.gif \ + gif/bug00005_2_exp.png \ + gif/bug00005_3.gif \ + gif/bug00060.gif \ + gif/bug00066.gif \ + gif/bug00066_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00005.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00005.c index 1911e6a17a9..dd0ffce4f8b 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00005.c +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00005.c @@ -11,17 +11,10 @@ int main() FILE *fp; int i = 0; int error = 0; - char path[1024]; + char *path; for (i=0; i < files_cnt; i++) { - sprintf(path, "%s/gif/%s", GDTEST_TOP_DIR, giffiles[i]); - - fp = fopen(path, "rb"); - if (!fp) { - gdTestErrorMsg("<%s> Input file does not exist!\n", path); - return 1; - } - + fp = gdTestFileOpen2("gif", giffiles[i]); im = gdImageCreateFromGif(fp); fclose(fp); @@ -29,10 +22,11 @@ int main() if (!im) { error = 1; } else { - sprintf(path, "%s/gif/%s", GDTEST_TOP_DIR, exp[i]); + path = gdTestFilePath2("gif", exp[i]); if (!gdAssertImageEqualsToFile(path, im)) { error = 1; } + free(path); gdImageDestroy(im); } } else { diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c index 57d7ad01611..f1a7fe86341 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c @@ -2,12 +2,11 @@ #include "gd.h" #include "gdtest.h" -#define TMP_FN "_tmp_bug0006.gif" - int main() { gdImagePtr im; FILE *fp; + char *file; const int r = 255, g = 0, b = 0; int r_f,g_f,b_f, trans_c_f; int trans_c = gdTrueColorAlpha(r,g,b,0); @@ -22,9 +21,10 @@ int main() gdImageColorTransparent(im, trans_c); gdImageFilledRectangle(im, 0,0, 192,36, trans_c); - fp = fopen(TMP_FN, "wb"); + file = gdTestTempFile("bug0006.gif"); + fp = fopen(file, "wb"); if (!fp) { - gdTestErrorMsg("Cannot open <%s> for writing\n", TMP_FN); + gdTestErrorMsg("Cannot open <%s> for writing\n", file); return 1; } gdImageGif(im,fp); @@ -32,16 +32,16 @@ int main() gdImageDestroy(im); - fp = fopen(TMP_FN, "rb"); + fp = fopen(file, "rb"); if (!fp) { - gdTestErrorMsg("Cannot open <%s> for reading\n", TMP_FN); + gdTestErrorMsg("Cannot open <%s> for reading\n", file); return 1; } im = gdImageCreateFromGif(fp); fclose(fp); if (!im) { - gdTestErrorMsg("Cannot create image from <%s>\n", TMP_FN); + gdTestErrorMsg("Cannot create image from <%s>\n", file); return 1; } @@ -60,8 +60,5 @@ int main() /* Destroy it */ gdImageDestroy(im); - if (remove(TMP_FN) == -1) { - gdTestErrorMsg("Cannot remove file: <%s>\n", TMP_FN); - } return error; } diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00060.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00060.c index 721d3bc401d..7a3316a2dc5 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00060.c +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00060.c @@ -6,17 +6,7 @@ int main() { gdImagePtr im; - FILE *fp; - char path[1024]; - - sprintf(path, "%s/gif/bug00060.gif", GDTEST_TOP_DIR); - fp = fopen(path, "rb"); - - if (!fp) { - printf("cannot open <%s>\n", path); - return -1; - } - + FILE *fp = gdTestFileOpen("gif/bug00060.gif"); im = gdImageCreateFromGif(fp); fclose(fp); gdImageDestroy(im); diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00066.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00066.c index be24066ca2e..9cddfef9829 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00066.c +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00066.c @@ -6,22 +6,13 @@ int main() { gdImagePtr im; FILE *fp; - char path[1024]; int error = 0; - sprintf(path, "%s/gif/bug00066.gif", GDTEST_TOP_DIR); - fp = fopen(path, "rb"); - - if (!fp) { - printf("cannot open <%s>\n", path); - return -1; - } - + fp = gdTestFileOpen("gif/bug00066.gif"); im = gdImageCreateFromGif(fp); fclose(fp); - sprintf(path, "%s/gif/bug00066_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { + if (!gdAssertImageEqualsToFile("gif/bug00066_exp.png", im)) { error = 1; } gdImageDestroy(im); diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c index 27d6481175e..43b9e3b15c9 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c @@ -5,6 +5,7 @@ int main() { gdImagePtr im, im2, im3; + char *file; FILE *fp; int black, trans; int error = 0; @@ -16,28 +17,30 @@ int main() return 1; } im->interlace = 1; - fp = fopen("bug00181.gif", "wb"); + file = gdTestTempFile("bug00181.gif"); + fp = fopen(file, "wb"); if (!fp) { - gdTestErrorMsg("Cannot open <%s> for writing.\n", "bug00181.gif"); + gdTestErrorMsg("Cannot open <%s> for writing.\n", file); return 1; } gdImageGif(im, fp); gdImageDestroy(im); fclose(fp); - fp = fopen("bug00181.gif", "rb"); + fp = fopen(file, "rb"); if (!fp) { - gdTestErrorMsg("Cannot open <%s> for reading.\n", "bug00181.gif"); + gdTestErrorMsg("Cannot open <%s> for reading.\n", file); return 1; } im = gdImageCreateFromGif(fp); fclose(fp); if (!im) { - gdTestErrorMsg("Cannot create image from <%s>\n", "bug00181.gif"); + gdTestErrorMsg("Cannot create image from <%s>\n", file); return 1; } error = !im->interlace; gdImageDestroy(im); + free(file); if (error) return error; @@ -48,9 +51,10 @@ int main() black = gdImageColorAllocate(im, 0, 0, 0); trans = gdImageColorAllocate(im, 1, 1, 1); gdImageRectangle(im, 0, 0, 10, 10, black); - fp = fopen("bug00181a.gif", "wb"); + file = gdTestTempFile("bug00181a.gif"); + fp = fopen(file, "wb"); if (!fp) { - gdTestErrorMsg("Cannot open <%s> for writing.\n", "bug00181a.gif"); + gdTestErrorMsg("Cannot open <%s> for writing.\n", file); return 1; } gdImageGifAnimBegin(im, fp, 1, 3); @@ -75,15 +79,15 @@ int main() gdImageDestroy(im2); gdImageDestroy(im3); - fp = fopen("bug00181a.gif", "rb"); + fp = fopen(file, "rb"); if (!fp) { - gdTestErrorMsg("Cannot open <%s> for reading.\n", "bug00181a.gif"); + gdTestErrorMsg("Cannot open <%s> for reading.\n", file); return 1; } im = gdImageCreateFromGif(fp); fclose(fp); if (!im) { - gdTestErrorMsg("Cannot create image from <%s>\n", "bug00181a.gif"); + gdTestErrorMsg("Cannot create image from <%s>\n", file); return 1; } error = !im->interlace; diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c index 861006e7447..e25bd9a92a8 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c @@ -11,6 +11,7 @@ int main() { FILE *fp; + char *file; gdImagePtr im0, im1, im2; int i; char *buf; @@ -23,7 +24,8 @@ int main() gdImageSetPixel(im0, i, 0, c); } - fp = fopen("bug00227.gif", "wb"); + file = gdTestTempFile("bug00227.gif"); + fp = fopen(file, "wb"); if (!fp) return 1; gdImageGifAnimBegin(im0, fp, 0, 0); @@ -55,7 +57,7 @@ int main() gdImageDestroy(im2); /* check the Global Color Table flag */ - fp = fopen("bug00227.gif", "rb"); + fp = fopen(file, "rb"); if (!fp) return 1; buf = malloc(PROBE_SIZE); if (!buf) return 1; diff --git a/Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c b/Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c index a5b0adbdb85..00bd1372e80 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/gif/gif_im2im.c @@ -12,7 +12,7 @@ int main() src = gdImageCreate(100, 100); if (src == NULL) { - printf("could not create src\n"); + gdTestErrorMsg("could not create src\n"); return 1; } r = gdImageColorAllocate(src, 0xFF, 0, 0); @@ -23,39 +23,35 @@ int main() gdImageEllipse(src, 70, 25, 30, 20, b); #define OUTPUT_GIF(name) do { \ - FILE *fp; \ - \ - fp = fopen("gif_im2im_" #name ".gif", "wb"); \ - if (fp) { \ - gdImageGif(name, fp); \ - fclose(fp); \ - } \ + FILE *fp = gdTestTempFp(); \ + gdImageGif(name, fp); \ + fclose(fp); \ } while (0) OUTPUT_GIF(src); p = gdImageGifPtr(src, &size); if (p == NULL) { status = 1; - printf("p is null\n"); + gdTestErrorMsg("p is null\n"); goto door0; } if (size <= 0) { status = 1; - printf("size is non-positive\n"); + gdTestErrorMsg("size is non-positive\n"); goto door1; } dst = gdImageCreateFromGifPtr(size, p); if (dst == NULL) { status = 1; - printf("could not create dst\n"); + gdTestErrorMsg("could not create dst\n"); goto door1; } OUTPUT_GIF(dst); gdTestImageDiff(src, dst, NULL, &result); if (result.pixels_changed > 0) { status = 1; - printf("pixels changed: %d\n", result.pixels_changed); + gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed); } gdImageDestroy(dst); door1: diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt index 9151f609173..5effc8c0de6 100644 --- a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt @@ -1,14 +1,12 @@ - +IF(JPEG_FOUND) SET(TESTS_FILES jpeg_im2im jpeg_null jpeg_read jpeg_empty_file jpeg_resolution + bug_github_18 ) +ENDIF(JPEG_FOUND) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am new file mode 100644 index 00000000000..bc196b197ba --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am @@ -0,0 +1,21 @@ +if HAVE_LIBJPEG +libgd_test_programs += \ + jpeg/bug_github_18 \ + jpeg/jpeg_empty_file \ + jpeg/jpeg_im2im \ + jpeg/jpeg_null + +if HAVE_LIBPNG +libgd_test_programs += \ + jpeg/jpeg_read \ + jpeg/jpeg_resolution +endif +endif + +EXTRA_DIST += \ + jpeg/CMakeLists.txt \ + jpeg/conv_test.jpeg \ + jpeg/conv_test_exp.png \ + jpeg/empty.jpeg \ + jpeg/github_bug_18_exp.jpeg \ + jpeg/github_bug_18.png diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/bug_github_18.c b/Build/source/libs/gd/libgd-src/tests/jpeg/bug_github_18.c new file mode 100644 index 00000000000..e8f67af3a45 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/bug_github_18.c @@ -0,0 +1,60 @@ +#include <stdio.h> +#include "gd.h" +#include "gdtest.h" + +int main() { + gdImagePtr im, imres, imexp; + FILE *fp; + void *pjpeg; + unsigned int status = 0; + int size = 0; + + fp = gdTestFileOpen("jpeg/github_bug_18.png"); + im = gdImageCreateFromPng(fp); + fclose(fp); + + if (im == NULL) { + gdTestErrorMsg("gdImageCreateFromJpeg failed.\n"); + return 1; + } + + pjpeg = gdImageJpegPtr(im, &size, 100); + if (pjpeg == NULL) { + status = 1; + gdTestErrorMsg("p is null\n"); + goto door2; + } + + if (size <= 0) { + status = 1; + gdTestErrorMsg("size is non-positive\n"); + goto door2; + } + + imres = gdImageCreateFromJpegPtr(size, pjpeg); + if (imres == NULL) { + status = 1; + goto door2; + } + + fp = gdTestFileOpen("jpeg/github_bug_18_exp.jpeg"); + imexp = gdImageCreateFromJpeg(fp); + if (imexp == NULL) { + fclose(fp); + status = 1; + goto door1; + } + + if (gdTestImageCompareToImage("jpeg/github_bug_18.png", __LINE__, __FILE__, imexp, imres) != 1) { + status = 1; + } + gdImageDestroy(imexp); + +door1: + gdImageDestroy(imres); + +door2: + gdFree(pjpeg); + gdImageDestroy(im); + return status; +} diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18.png b/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18.png Binary files differnew file mode 100644 index 00000000000..abb72a9c5df --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18.png diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18_exp.jpeg b/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18_exp.jpeg Binary files differnew file mode 100644 index 00000000000..450223a3606 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/github_bug_18_exp.jpeg diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c index 844dbf43d3e..12ce24110c4 100644 --- a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_empty_file.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -8,17 +7,10 @@ int main() { gdImagePtr im; FILE *fp; - char path[1024]; gdSetErrorMethod(gdSilence); - sprintf(path, "%s/jpeg/empty.jpeg", GDTEST_TOP_DIR); - fp = fopen(path, "rb"); - if (!fp) { - printf("failed, cannot open file\n"); - return 1; - } - + fp = gdTestFileOpen("jpeg/empty.jpeg"); im = gdImageCreateFromJpeg(fp); fclose(fp); diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c index 89a72be7ffd..9d113d103a0 100644 --- a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_im2im.c @@ -14,7 +14,7 @@ int main() src = gdImageCreateTrueColor(100, 100); if (src == NULL) { - printf("could not create src\n"); + gdTestErrorMsg("could not create src\n"); return 1; } r = gdImageColorAllocate(src, 0xFF, 0, 0); @@ -25,32 +25,28 @@ int main() gdImageEllipse(src, 70, 25, 30, 20, b); #define OUTPUT_JPEG(name) do { \ - FILE *fp; \ - \ - fp = fopen("jpeg_im2im_" #name ".jpeg", "wb"); \ - if (fp) { \ - gdImageJpeg(name, fp, 100); \ - fclose(fp); \ - } \ + FILE *fp = gdTestTempFp(); \ + gdImageJpeg(name, fp, 100); \ + fclose(fp); \ } while (0) OUTPUT_JPEG(src); p = gdImageJpegPtr(src, &size, 100); if (p == NULL) { status = 1; - printf("p is null\n"); + gdTestErrorMsg("p is null\n"); goto door0; } if (size <= 0) { status = 1; - printf("size is non-positive\n"); + gdTestErrorMsg("size is non-positive\n"); goto door1; } dst = gdImageCreateFromJpegPtr(size, p); if (dst == NULL) { status = 1; - printf("could not create dst\n"); + gdTestErrorMsg("could not create dst\n"); goto door1; } OUTPUT_JPEG(dst); @@ -58,7 +54,7 @@ int main() gdTestImageDiff(src, dst, NULL, &result); if (result.pixels_changed > 0) { status = 1; - printf("pixels changed: %d\n", result.pixels_changed); + gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed); } #endif gdImageDestroy(dst); diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c index 64130ce125a..42098fdda72 100644 --- a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_read.c @@ -1,14 +1,9 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> #include "gdtest.h" #include <jpeglib.h> -#ifdef _MSC_VER -# define snprintf _snprintf -#endif - int main() { #if defined(JPEG_LIB_VERSION_MAJOR) && JPEG_LIB_VERSION_MAJOR >= 8 @@ -16,16 +11,8 @@ int main() return 0; #else gdImagePtr im; - FILE *fp; - char path[1024]; - - snprintf(path, sizeof(path)-1, "%s/jpeg/conv_test.jpeg", GDTEST_TOP_DIR); - fp = fopen(path, "rb"); - if (!fp) { - gdTestErrorMsg("failed, cannot open file: %s\n", path); - return 1; - } - + int error = 0; + FILE *fp = gdTestFileOpen("jpeg/conv_test.jpeg"); im = gdImageCreateFromJpeg(fp); fclose(fp); @@ -33,13 +20,10 @@ int main() gdTestErrorMsg("gdImageCreateFromJpeg failed.\n"); return 1; } - snprintf(path, sizeof(path), "%s/jpeg/conv_test_exp.png", GDTEST_TOP_DIR); - if (!gdAssertImageEqualsToFile(path, im)) { - gdTestErrorMsg("gdAssertImageEqualsToFile failed: <%s>.\n", path); - gdImageDestroy(im); - return 1; - } + if (!gdAssertImageEqualsToFile("jpeg/conv_test_exp.png", im)) + error = 1; - return 0; + gdImageDestroy(im); + return error; #endif } diff --git a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt index 128b51df0ce..5235417eaae 100644 --- a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt @@ -1,4 +1,4 @@ - +IF(PNG_FOUND) SET(TESTS_FILES png_im2im png_null @@ -9,9 +9,6 @@ SET(TESTS_FILES bug00088 bug00193 ) +ENDIF(PNG_FOUND) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am new file mode 100644 index 00000000000..01c48036cc7 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am @@ -0,0 +1,20 @@ +if HAVE_LIBPNG +libgd_test_programs += \ + png/bug00011 \ + png/bug00033 \ + png/bug00086 \ + png/bug00088 \ + png/bug00193 \ + png/png_im2im \ + png/png_null \ + png/png_resolution +endif + +EXTRA_DIST += \ + png/CMakeLists.txt \ + png/bug00033.png \ + png/bug00088_1.png \ + png/bug00088_1_exp.png \ + png/bug00088_2.png \ + png/bug00088_2_exp.png \ + png/emptyfile diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00011.c b/Build/source/libs/gd/libgd-src/tests/png/bug00011.c index 865c87ea5cd..f58ab61e2aa 100644 --- a/Build/source/libs/gd/libgd-src/tests/png/bug00011.c +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00011.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -8,14 +7,8 @@ int main() { gdImagePtr im; FILE *fp; - char path[2048]; - sprintf(path, "%s/png/emptyfile", GDTEST_TOP_DIR); - fp = fopen(path, "rb"); - if (!fp) { - fprintf(stderr, "failed, cannot open file: %s\n", path); - return 1; - } + fp = gdTestFileOpen("png/emptyfile"); im = gdImageCreateFromPng(fp); fclose(fp); diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00033.c b/Build/source/libs/gd/libgd-src/tests/png/bug00033.c index f7e90f0824c..faf0a183590 100644 --- a/Build/source/libs/gd/libgd-src/tests/png/bug00033.c +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00033.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -8,17 +7,10 @@ int main() { gdImagePtr im; FILE *fp; - char path[1024]; gdSetErrorMethod(gdSilence); - sprintf(path, "%s/png/bug00033.png", GDTEST_TOP_DIR); - fp = fopen(path, "rb"); - if (!fp) { - printf("failed, cannot open file <%s>\n", path); - return 1; - } - + fp = gdTestFileOpen("png/bug00033.png"); im = gdImageCreateFromPng(fp); fclose(fp); diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00086.c b/Build/source/libs/gd/libgd-src/tests/png/bug00086.c index ef9d43b2b56..f29b5d73e20 100644 --- a/Build/source/libs/gd/libgd-src/tests/png/bug00086.c +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00086.c @@ -1,4 +1,3 @@ -/* $Id$ */ /* id: gdbad3.c, Xavier Roche, May. 2007 */ /* gcc gdbad3.c -o bad -lgd && ./bad */ @@ -17,7 +16,7 @@ int main(void) if ( ( im = gdImageCreateFromPngPtr(93, (char*) &pngdata[0]) ) == NULL) { return 0; } else { - fprintf(stderr, "failed!\n"); + gdTestErrorMsg("failed!\n"); gdImageDestroy(im); return 1; } diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00088.c b/Build/source/libs/gd/libgd-src/tests/png/bug00088.c index 78495aa4410..5c0ab5834a0 100644 --- a/Build/source/libs/gd/libgd-src/tests/png/bug00088.c +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00088.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -9,7 +8,7 @@ int main() int error; gdImagePtr im; FILE *fp; - char path[1024]; + char *path; const char * files[2] = {"bug00088_1.png", "bug00088_2.png"}; const char * files_exp[2] = {"bug00088_1_exp.png", "bug00088_2_exp.png"}; @@ -18,13 +17,7 @@ int main() for (i = 0; i < cnt; i++) { - sprintf(path, "%s/png/%s", GDTEST_TOP_DIR, files[i]); - fp = fopen(path, "rb"); - if (!fp) { - printf("failed, cannot open file <%s>\n", path); - return 1; - } - + fp = gdTestFileOpen2("png", files[i]); im = gdImageCreateFromPng(fp); fclose(fp); @@ -33,10 +26,12 @@ int main() continue; } - sprintf(path, "%s/png/%s", GDTEST_TOP_DIR, files_exp[i]); + path = gdTestFilePath2("png", files_exp[i]); + if (!gdAssertImageEqualsToFile(path, im)) { error |= 1; } + free(path); gdImageDestroy(im); } diff --git a/Build/source/libs/gd/libgd-src/tests/png/png_im2im.c b/Build/source/libs/gd/libgd-src/tests/png/png_im2im.c index bac5e13aeb7..e02d057c220 100644 --- a/Build/source/libs/gd/libgd-src/tests/png/png_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/png/png_im2im.c @@ -12,7 +12,7 @@ int main() src = gdImageCreate(100, 100); if (src == NULL) { - printf("could not create src\n"); + gdTestErrorMsg("could not create src\n"); return 1; } r = gdImageColorAllocate(src, 0xFF, 0, 0); @@ -23,39 +23,35 @@ int main() gdImageEllipse(src, 70, 25, 30, 20, b); #define OUTPUT_PNG(name) do { \ - FILE *fp; \ - \ - fp = fopen("png_im2im_" #name ".png", "wb"); \ - if (fp) { \ - gdImagePng(name, fp); \ - fclose(fp); \ - } \ + FILE *fp = gdTestTempFp(); \ + gdImagePng(name, fp); \ + fclose(fp); \ } while (0) OUTPUT_PNG(src); p = gdImagePngPtr(src, &size); if (p == NULL) { status = 1; - printf("p is null\n"); + gdTestErrorMsg("p is null\n"); goto door0; } if (size <= 0) { status = 1; - printf("size is non-positive\n"); + gdTestErrorMsg("size is non-positive\n"); goto door1; } dst = gdImageCreateFromPngPtr(size, p); if (dst == NULL) { status = 1; - printf("could not create dst\n"); + gdTestErrorMsg("could not create dst\n"); goto door1; } OUTPUT_PNG(dst); gdTestImageDiff(src, dst, NULL, &result); if (result.pixels_changed > 0) { status = 1; - printf("pixels changed: %d\n", result.pixels_changed); + gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed); } gdImageDestroy(dst); door1: diff --git a/Build/source/libs/gd/libgd-src/tests/test_config.h.in b/Build/source/libs/gd/libgd-src/tests/test_config.h.in index c1bb988c842..f29f20a5d64 100644 --- a/Build/source/libs/gd/libgd-src/tests/test_config.h.in +++ b/Build/source/libs/gd/libgd-src/tests/test_config.h.in @@ -1,3 +1,9 @@ -/* Define the full path to the top src dir, required to get the path
- * of each input data */
-#define GDTEST_TOP_DIR "@srcdir@"
+#ifndef GD_TEST_CONFIG_H +#define GD_TEST_CONFIG_H + + +/* Define the full path to the top src dir, required to get the path + * of each input data */ +#define GDTEST_TOP_DIR "@srcdir@" +#endif + diff --git a/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt index 48f9412fb09..695a812a401 100644 --- a/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt @@ -1,10 +1,10 @@ - SET(TESTS_FILES tga_null + bug00084 + bug00247 + bug00247a + bug00248 + bug00248a ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am new file mode 100644 index 00000000000..dff828fe395 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am @@ -0,0 +1,15 @@ +libgd_test_programs += \ + tga/bug00084 \ + tga/bug00247 \ + tga/bug00247a \ + tga/bug00248 \ + tga/bug00248a \ + tga/tga_null + +EXTRA_DIST += \ + tga/CMakeLists.txt \ + tga/bug00084.tga \ + tga/bug00247.tga \ + tga/bug00247a.tga \ + tga/bug00248.tga \ + tga/bug00248a.tga diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00084.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00084.c new file mode 100644 index 00000000000..7d4ca92457d --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00084.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + FILE *fp = gdTestFileOpen("tga/bug00084.tga"); + im = gdImageCreateFromTga(fp); + gdImageDestroy(im); + return 0; +} diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00084.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00084.tga Binary files differnew file mode 100644 index 00000000000..201e1450760 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00084.tga diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00247.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00247.c new file mode 100644 index 00000000000..49b1610cc0f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00247.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + FILE *fp = gdTestFileOpen("tga/bug00247.tga"); + im = gdImageCreateFromTga(fp); + gdTestAssert(im == NULL); + fclose(fp); + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00247.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00247.tga Binary files differnew file mode 100644 index 00000000000..0fe4cac9eef --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00247.tga diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.c new file mode 100644 index 00000000000..1c825f94c9f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.c @@ -0,0 +1,19 @@ +/* +We test that a 8bpp TGA file will be gracefully rejected by +gdImageCreateFromTga(). +*/ + +#include <stdio.h> + +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + FILE *fp = gdTestFileOpen("tga/bug00247a.tga"); + im = gdImageCreateFromTga(fp); + gdTestAssert(im == NULL); + fclose(fp); + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.tga Binary files differnew file mode 100644 index 00000000000..65e55abeae2 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00247a.tga diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00248.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00248.c new file mode 100644 index 00000000000..5eb60464276 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00248.c @@ -0,0 +1,14 @@ +#include <stdio.h> + +#include "gd.h" +#include "gdtest.h" + +int main(int argc, char **argv) +{ + gdImagePtr im; + FILE *fp = gdTestFileOpen("tga/bug00248.tga"); + im = gdImageCreateFromTga(fp); + gdTestAssert(im == NULL); + fclose(fp); + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00248.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00248.tga Binary files differnew file mode 100644 index 00000000000..f0a56f42e9f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00248.tga diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.c b/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.c new file mode 100644 index 00000000000..8308eb5160a --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.c @@ -0,0 +1,16 @@ +/* See also <https://github.com/libgd/libgd/pull/257> */ + +#include <stdio.h> + +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + FILE *fp = gdTestFileOpen("tga/bug00248a.tga"); + im = gdImageCreateFromTga(fp); + gdTestAssert(im == NULL); + fclose(fp); + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.tga b/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.tga Binary files differnew file mode 100644 index 00000000000..29c4e26951d --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tga/bug00248a.tga diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt index da49800542e..1f4f4c06f28 100644 --- a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt @@ -1,11 +1,9 @@ - +IF(TIFF_FOUND) SET(TESTS_FILES tiff_im2im tiff_null + tiff_dpi ) +ENDIF(TIFF_FOUND) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am new file mode 100644 index 00000000000..fd396990973 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am @@ -0,0 +1,9 @@ +if HAVE_LIBTIFF +libgd_test_programs += \ + tiff/tiff_dpi \ + tiff/tiff_im2im \ + tiff/tiff_null +endif + +EXTRA_DIST += \ + tiff/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c new file mode 100644 index 00000000000..347abf179a9 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c @@ -0,0 +1,84 @@ +/* + * Test that reading and writing image resolution values to/from TIFF files + * works correctly. Set the image resolution, write the file, read the file + * back and test that the image resolution comes back correct. + */ +#ifdef _WIN32 +#include <stdio.h> +int main() +{ + printf("skip"); + return 0; +} +#else +#include "gd.h" +#include "gdtest.h" + +int main() +{ + gdImagePtr src, dst; + int r, res_x, res_y; + void *p; + int size = 0; + int status = 0; + + src = gdImageCreate(100, 100); + if (src == NULL) { + gdTestErrorMsg("could not create src\n"); + return 1; + } + r = gdImageColorAllocate(src, 0xFF, 0, 0); + gdImageFilledRectangle(src, 0, 0, 99, 99, r); + + // gd default DPI is 96; libtiff default is 72. + // Use something else so we know the value has been + // written / read correctly. + res_x = 100; + res_y = 200; + src->res_x = res_x; + src->res_y = res_y; + +#define OUTPUT_TIFF(name) do { \ + FILE *fp = gdTestTempFp(); \ + gdImageTiff(name, fp); \ + fclose(fp); \ + } while (0) + + OUTPUT_TIFF(src); + p = gdImageTiffPtr(src, &size); + if (p == NULL) { + status = 1; + gdTestErrorMsg("p is null\n"); + goto door0; + } + if (size <= 0) { + status = 1; + gdTestErrorMsg("size is non-positive\n"); + goto door1; + } + + dst = gdImageCreateFromTiffPtr(size, p); + if (dst == NULL) { + status = 1; + gdTestErrorMsg("could not create dst\n"); + goto door1; + } + + if (dst->res_x != res_x) { + status = 1; + gdTestErrorMsg("mismatch in res_x (got %d, expected %d)", dst->res_x, res_x); + } + + if (dst->res_y != res_y) { + status = 1; + gdTestErrorMsg("mismatch in res_y (got %d, expected %d)", dst->res_y, res_y); + } + + gdImageDestroy(dst); +door1: + gdFree(p); +door0: + gdImageDestroy(src); + return status; +} +#endif
\ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c index 4b6136d4b92..b6b240e3ce3 100644 --- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c @@ -1,3 +1,11 @@ +#ifdef _WIN32 +#include <stdio.h> +int main() +{ + printf("skip"); + return 0; +} +#else #include "gd.h" #include "gdtest.h" @@ -8,13 +16,11 @@ int main() void *p; int size = 0; int status = 0; -#if 0 CuTestImageResult result = {0, 0}; -#endif src = gdImageCreate(100, 100); if (src == NULL) { - printf("could not create src\n"); + gdTestErrorMsg("could not create src\n"); return 1; } r = gdImageColorAllocate(src, 0xFF, 0, 0); @@ -25,42 +31,38 @@ int main() gdImageEllipse(src, 70, 25, 30, 20, b); #define OUTPUT_TIFF(name) do { \ - FILE *fp; \ - \ - fp = fopen("tiff_im2im_" #name ".tiff", "wb"); \ - if (fp) { \ - gdImageTiff(name, fp); \ - fclose(fp); \ - } \ + FILE *fp = gdTestTempFp(); \ + gdImageTiff(name, fp); \ + fclose(fp); \ } while (0) OUTPUT_TIFF(src); p = gdImageTiffPtr(src, &size); if (p == NULL) { status = 1; - printf("p is null\n"); + gdTestErrorMsg("p is null\n"); goto door0; } if (size <= 0) { status = 1; - printf("size is non-positive\n"); + gdTestErrorMsg("size is non-positive\n"); goto door1; } dst = gdImageCreateFromTiffPtr(size, p); if (dst == NULL) { status = 1; - printf("could not create dst\n"); + gdTestErrorMsg("could not create dst\n"); goto door1; } OUTPUT_TIFF(dst); -#if 0 + gdTestImageDiff(src, dst, NULL, &result); if (result.pixels_changed > 0) { status = 1; printf("pixels changed: %d\n", result.pixels_changed); } -#endif + gdImageDestroy(dst); door1: gdFree(p); @@ -68,3 +70,4 @@ door0: gdImageDestroy(src); return status; } +#endif
\ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c index ccaade7498f..19b64f771c3 100644 --- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c @@ -1,3 +1,11 @@ +#ifdef _WIN32 +#include <stdio.h> +int main() +{ + printf("skip"); + return 0; +} +#else #include "gd.h" int main() @@ -12,3 +20,4 @@ int main() gdImageTiff(im, NULL); /* noop safely */ return 0; } +#endif
\ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt index 531933a8558..2c988680f8f 100644 --- a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt @@ -1,11 +1,6 @@ - SET(TESTS_FILES wbmp_im2im wbmp_null ) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am new file mode 100644 index 00000000000..fb12272cd83 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am @@ -0,0 +1,10 @@ +libgd_test_programs += \ + wbmp/wbmp_null + +if HAVE_LIBPNG +libgd_test_programs += \ + wbmp/wbmp_im2im +endif + +EXTRA_DIST += \ + wbmp/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c b/Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c index 826c7fa953c..1b1ebb2452b 100644 --- a/Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/wbmp/wbmp_im2im.c @@ -12,7 +12,7 @@ int main() src = gdImageCreate(100, 100); if (src == NULL) { - printf("could not create src\n"); + gdTestErrorMsg("could not create src\n"); return 1; } gdImageColorAllocate(src, 0xFF, 0xFF, 0xFF); /* allocate white for background color */ @@ -21,39 +21,35 @@ int main() gdImageEllipse(src, 70, 25, 30, 20, b); #define OUTPUT_WBMP(name) do { \ - FILE *fp; \ - \ - fp = fopen("wbmp_im2im_" #name ".wbmp", "wb"); \ - if (fp) { \ - gdImageWBMP(name, 1, fp); \ - fclose(fp); \ - } \ + FILE *fp = gdTestTempFp(); \ + gdImageWBMP(name, 1, fp); \ + fclose(fp); \ } while (0) OUTPUT_WBMP(src); p = gdImageWBMPPtr(src, &size, 1); if (p == NULL) { status = 1; - printf("p is null\n"); + gdTestErrorMsg("p is null\n"); goto door0; } if (size <= 0) { status = 1; - printf("size is non-positive\n"); + gdTestErrorMsg("size is non-positive\n"); goto door1; } dst = gdImageCreateFromWBMPPtr(size, p); if (dst == NULL) { status = 1; - printf("could not create dst\n"); + gdTestErrorMsg("could not create dst\n"); goto door1; } OUTPUT_WBMP(dst); gdTestImageDiff(src, dst, NULL, &result); if (result.pixels_changed > 0) { status = 1; - printf("pixels changed: %d\n", result.pixels_changed); + gdTestErrorMsg("pixels changed: %d\n", result.pixels_changed); } gdImageDestroy(dst); door1: diff --git a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt new file mode 100644 index 00000000000..32e2c1d8347 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt @@ -0,0 +1,7 @@ +IF(WEBP_FOUND) +SET(TESTS_FILES + bug00111 +) +ENDIF(WEBP_FOUND) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am new file mode 100644 index 00000000000..b03db6e239e --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am @@ -0,0 +1,7 @@ +if HAVE_LIBWEBP +libgd_test_programs += \ + webp/bug00111 +endif + +EXTRA_DIST += \ + webp/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/webp/bug00111.c b/Build/source/libs/gd/libgd-src/tests/webp/bug00111.c new file mode 100644 index 00000000000..16f9504fbff --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/webp/bug00111.c @@ -0,0 +1,25 @@ +#include "gd.h" +#include <stdio.h> +#include <stdlib.h> +#ifndef _WIN32 +# include <unistd.h> +#endif +#include "gdtest.h" + +int main() +{ + gdImagePtr im; + FILE *fp; + + im = gdImageCreateTrueColor(20, 20); + if (!im) { + return 0; + } + + fp = gdTestTempFp(); + gdImageWebp(im, fp); + fclose(fp); + + gdImageDestroy(im); + return 0; +} diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt new file mode 100644 index 00000000000..183cf5eaf3f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt @@ -0,0 +1,5 @@ +LIST(APPEND TESTS_FILES + github_bug_170 +) + +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am new file mode 100644 index 00000000000..ba1eabd5bd4 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am @@ -0,0 +1,5 @@ +libgd_test_programs += \ + xbm/github_bug_170 + +EXTRA_DIST += \ + xbm/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c new file mode 100644 index 00000000000..3900da7b1b6 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c @@ -0,0 +1,50 @@ +/* + Test writing of XBM images with a width that is not a multiple of 8 + + We create an image with a width of 11 pixels, and draw a circle on it. + To test that the padding is correctly applied, we write the image to disk + and assert that the number of bytes written matches our expectation. + + See also <https://github.com/libgd/libgd/issues/170>. +*/ + +#include <inttypes.h> +#include "gd.h" +#include "gdtest.h" +#ifdef _WIN32 + +int main() +{ + /* skip for now */ + return 0; +} +#else +int main() +{ + gdImagePtr im; + int black; + FILE *outFile; + gdIOCtx *out; + off_t length; + + /* create the test image */ + im = gdImageCreate(11, 11); + gdImageColorAllocate(im, 255, 255, 255); + black = gdImageColorAllocate(im, 0, 0, 0); + gdImageArc(im, 5, 5, 10, 10, 0, 360, black); + + /* write the file to disk, note the file length and delete the file */ + outFile = gdTestTempFp(); + out = gdNewFileCtx(outFile); + gdTestAssert(out != NULL); + gdImageXbmCtx(im, "github_bug_170.xbm", 1, out); + out->gd_free(out); + length = ftello(outFile); + fclose(outFile); + + gdImageDestroy(im); + + gdTestAssertMsg(length == 250, "expected to write 250 bytes; %jd bytes written", (intmax_t) length); + return gdNumFailures(); +} +#endif
\ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt index e0a789c807b..1301bc3f824 100644 --- a/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt @@ -1,12 +1,9 @@ - +IF(XPM_FOUND) SET(TESTS_FILES bug00166 bug00185 color_name ) +ENDIF(XPM_FOUND) -FOREACH(test_name ${TESTS_FILES}) - add_executable(${test_name} "${test_name}.c") - target_link_libraries (${test_name} gdTest) - add_test(NAME ${test_name} COMMAND ${test_name}) -ENDFOREACH(test_name) +ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/xpm/Makemodule.am new file mode 100644 index 00000000000..39350a6ffdd --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xpm/Makemodule.am @@ -0,0 +1,13 @@ +if HAVE_LIBXPM +libgd_test_programs += \ + xpm/bug00166 \ + xpm/bug00185 \ + xpm/color_name +endif + +EXTRA_DIST += \ + xpm/CMakeLists.txt \ + xpm/bug00166.xpm \ + xpm/bug00185.xpm \ + xpm/bug00185_damaged.xpm \ + xpm/color_name.xpm diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c b/Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c index 2ffd6af25a2..f4cf7d1ce59 100644 --- a/Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c +++ b/Build/source/libs/gd/libgd-src/tests/xpm/bug00166.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -8,11 +7,12 @@ int main(void) { gdImagePtr im; - char path[1024]; + char *path; int c, result; - sprintf(path, "%s/xpm/bug00166.xpm", GDTEST_TOP_DIR); + path = gdTestFilePath("xpm/bug00166.xpm"); im = gdImageCreateFromXpm(path); + free(path); if (!im) { return 2; } diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c b/Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c index 2dda809cc96..3056ed950ea 100644 --- a/Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c +++ b/Build/source/libs/gd/libgd-src/tests/xpm/bug00185.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -9,15 +8,17 @@ int main() { gdImagePtr im; - char path[1024]; + char *path; - sprintf(path, "%s/xpm/bug00185.xpm", GDTEST_TOP_DIR); + path = gdTestFilePath("xpm/bug00185.xpm"); im = gdImageCreateFromXpm(path); + free(path); if (!im) return 1; gdImageDestroy(im); - sprintf(path, "%s/xpm/bug00185_damaged.xpm", GDTEST_TOP_DIR); + path = gdTestFilePath("xpm/bug00185_damaged.xpm"); im = gdImageCreateFromXpm(path); + free(path); if (!im) return 0; gdImageDestroy(im); diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/color_name.c b/Build/source/libs/gd/libgd-src/tests/xpm/color_name.c index 22481785a83..894b4b7871a 100644 --- a/Build/source/libs/gd/libgd-src/tests/xpm/color_name.c +++ b/Build/source/libs/gd/libgd-src/tests/xpm/color_name.c @@ -1,4 +1,3 @@ -/* $Id$ */ #include "gd.h" #include <stdio.h> #include <stdlib.h> @@ -8,11 +7,12 @@ int main(void) { gdImagePtr im; - char path[1024]; + char *path; int c, result; - sprintf(path, "%s/xpm/color_name.xpm", GDTEST_TOP_DIR); + path = gdTestFilePath("xpm/color_name.xpm"); im = gdImageCreateFromXpm(path); + free(path); if (!im) { return 2; } |