summaryrefslogtreecommitdiff
path: root/Build/source/libs/gd/libgd-src/tests/gdimageconvolution
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/gd/libgd-src/tests/gdimageconvolution')
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt2
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am3
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c47
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c28
4 files changed, 53 insertions, 27 deletions
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
index 802c38220ae..dc1fc51cefb 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
@@ -1,3 +1,5 @@
+LIST(APPEND TESTS_FILES bug00369)
+
IF(PNG_FOUND)
LIST(APPEND TESTS_FILES
basic
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
index 8f65b0f36e9..df5249d4529 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
@@ -1,3 +1,6 @@
+libgd_test_programs += \
+ gdimageconvolution/bug00369
+
if HAVE_LIBPNG
libgd_test_programs += \
gdimageconvolution/basic
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
index 267a079d898..5fe308ca043 100644
--- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
@@ -2,61 +2,54 @@
* Basic test for gdImageConvolution() and related functions
*/
-
#include "gd.h"
#include "gdtest.h"
-
static void test_convolution(void (*convolution_func)(gdImagePtr im), const char *expected)
{
- gdImagePtr im;
- FILE *fp;
- char *path;
+ gdImagePtr im;
+ FILE *fp;
+ char *path;
- fp = gdTestFileOpen2("gdimageconvolution", "basic.png");
- im = gdImageCreateFromPng(fp);
- fclose(fp);
+ fp = gdTestFileOpen2("gdimageconvolution", "basic.png");
+ im = gdImageCreateFromPng(fp);
+ fclose(fp);
- convolution_func(im);
+ convolution_func(im);
- path = gdTestFilePath2("gdimageconvolution", expected);
- gdAssertImageEqualsToFile(path, im);
- gdFree(path);
+ path = gdTestFilePath2("gdimageconvolution", expected);
+ gdAssertImageEqualsToFile(path, im);
+ gdFree(path);
- gdImageDestroy(im);
+ gdImageDestroy(im);
}
-
static void test_edge_detect_quick(gdImagePtr im)
{
- gdImageEdgeDetectQuick(im);
+ gdImageEdgeDetectQuick(im);
}
-
static void test_smooth(gdImagePtr im)
{
- gdImageSmooth(im, 5);
+ gdImageSmooth(im, 5);
}
-
static void test_emboss(gdImagePtr im)
{
- gdImageEmboss(im);
+ gdImageEmboss(im);
}
-
static void test_mean_removal(gdImagePtr im)
{
- gdImageMeanRemoval(im);
+ gdImageMeanRemoval(im);
}
-
int main()
{
- test_convolution(&test_edge_detect_quick, "basic_edge_detect_quick.png");
- test_convolution(&test_smooth, "basic_smooth.png");
- test_convolution(&test_emboss, "basic_emboss.png");
- test_convolution(&test_mean_removal, "basic_mean_removal.png");
+ test_convolution(&test_edge_detect_quick, "basic_edge_detect_quick.png");
+ test_convolution(&test_smooth, "basic_smooth.png");
+ test_convolution(&test_emboss, "basic_emboss.png");
+ test_convolution(&test_mean_removal, "basic_mean_removal.png");
- return gdNumFailures();
+ return gdNumFailures();
}
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c
new file mode 100644
index 00000000000..631cb7adbc1
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c
@@ -0,0 +1,28 @@
+/**
+ * Test Issue #369 for gdImageConvolution()
+ */
+
+#include "gd.h"
+#include "gdtest.h"
+
+int main()
+{
+ gdImagePtr im;
+ float matrix[3][3] = {
+ {1, 0, 1},
+ {0, 5, 0},
+ {1, 0, 0}
+ };
+
+ im = gdImageCreateTrueColor(40, 40);
+ gdImageAlphaBlending(im, gdEffectReplace);
+ gdImageFilledRectangle(im, 0, 0, 39, 39, 0x7FFFFFFF);
+ gdImageFilledEllipse(im, 19, 19, 20, 20, 0x00FF00);
+
+ gdImageConvolution(im, matrix, 9, 1);
+ gdTestAssert(0x7F010101 == gdImageGetPixel(im, 0, 0));
+
+ gdImageDestroy(im);
+
+ return gdNumFailures();
+}