]> granicus.if.org Git - php/commitdiff
- basic gif i/o test
authorPierre Joye <pajoye@php.net>
Mon, 26 Dec 2005 19:11:51 +0000 (19:11 +0000)
committerPierre Joye <pajoye@php.net>
Mon, 26 Dec 2005 19:11:51 +0000 (19:11 +0000)
ext/gd/tests/gif.phpt [new file with mode: 0644]

diff --git a/ext/gd/tests/gif.phpt b/ext/gd/tests/gif.phpt
new file mode 100644 (file)
index 0000000..8535ff7
--- /dev/null
@@ -0,0 +1,145 @@
+--TEST--
+gif in/out
+--SKIPIF--
+<?php 
+// $Id$
+       if (!extension_loaded('gd')) {
+               die("skip gd extension not available.");
+       }
+       if (!function_exists("imagegif") || !function_exists("imagecreatefromgif")) {
+               die("skip gif support unavailable");
+       }
+?>
+--FILE--
+<?php
+
+function check_box($r,$g,$b, $error=0) {
+       $cwd = dirname(__FILE__);
+       $im2 = imagecreatefromgif($cwd . '/test_gif.gif');
+
+       $c = imagecolorsforindex($im2, imagecolorat($im2, 8,8));
+
+       if ($error>0) {
+               $r_min = $r - $error; $r_max = $r + $error;
+               $g_min = $g - $error; $g_max = $g + $error;
+               $b_min = $b - $error; $b_max = $b + $error;
+
+               if (
+                       ($c['red'] >= $r_min || $c['red'] <= $r_max)
+                       &&
+                       ($c['green'] >= $g_min || $c['green'] <= $g_max)
+                       &&
+                       ($c['blue'] >= $b_min || $c['blue'] <= $b_max)
+                       ) {
+                       return true;
+               } else {
+                       return false;
+               }
+       } else {
+               if ($c['red']==$r && $c['green']==$g && $c['blue']==$b) {
+                       return true;
+               } else {
+                       return false;
+               }
+       }
+}
+$cwd = dirname(__FILE__);
+
+$im = imagecreate(10,10);
+$c = imagecolorallocate($im, 255,255,255);
+imagefilledrectangle($im, 5,5, 10,10, $c);
+imagegif($im, $cwd . '/test_gif.gif');
+if (check_box(255,255,255)) {
+       echo "<4 cols: ok\n";
+}
+
+$im = imagecreate(10,10);
+for ($i=0; $i<7; $i++) {
+       $c = imagecolorallocate($im, $i,$i,$i);
+}
+imagefilledrectangle($im, 5,5, 10,10, $c);
+imagegif($im, $cwd . '/test_gif.gif');
+$i--;
+if (check_box($i,$i,$i)) {
+               echo "<8 cols: ok\n";
+}
+
+
+$im = imagecreate(10,10);
+for ($i=0; $i<15; $i++) {
+       $c = imagecolorallocate($im, $i,$i,$i);
+}
+imagefilledrectangle($im, 5,5, 10,10, $c);
+imagegif($im, $cwd . '/test_gif.gif');
+$i--;
+if (check_box($i,$i,$i)) {
+               echo "<16 cols: ok\n";
+}
+
+
+$im = imagecreate(10,10);
+for ($i=0; $i<31; $i++) {
+       $c = imagecolorallocate($im, $i,$i,$i);
+}
+imagefilledrectangle($im, 5,5, 10,10, $c);
+imagegif($im, $cwd . '/test_gif.gif');
+$i--;
+if (check_box($i,$i,$i)) {
+               echo "<32 cols: ok\n";
+}
+
+
+$im = imagecreate(10,10);
+for ($i=0; $i<63; $i++) {
+       $c = imagecolorallocate($im, $i,$i,$i);
+}
+imagefilledrectangle($im, 5,5, 10,10, $c);
+imagegif($im, $cwd . '/test_gif.gif');
+$i--;
+if (check_box($i,$i,$i)) {
+               echo "<64 cols: ok\n";
+}
+
+$im = imagecreate(10,10);
+for ($i=0; $i<127; $i++) {
+       $c = imagecolorallocate($im, $i,$i,$i);
+}
+imagefilledrectangle($im, 5,5, 10,10, $c);
+imagegif($im, $cwd . '/test_gif.gif');
+$i--;
+if (check_box($i,$i,$i)) {
+               echo "<128 cols: ok\n";
+}
+
+$im = imagecreate(10,10);
+for ($i=0; $i<255; $i++) {
+       $c = imagecolorallocate($im, $i,$i,$i);
+}
+imagefilledrectangle($im, 5,5, 10,10, $c);
+imagegif($im, $cwd . '/test_gif.gif');
+$i--;
+if (check_box($i,$i,$i)) {
+               echo "<256 cols: ok\n";
+}
+
+
+$im = imagecreatefromjpeg($cwd . '/conv_test.jpeg');
+imagefilledrectangle($im, 5,5, 10,10, 0xffffff);
+imagegif($im, $cwd . '/test_gif.gif');
+imagegif($im, $cwd . '/test_gif_2.gif');
+
+if (check_box(255,255,255, 10)) {
+       echo ">256 cols: ok\n";
+}
+
+@unlink($cwd . "/test_gif.gif");
+?>
+--EXPECT--
+<4 cols: ok
+<8 cols: ok
+<16 cols: ok
+<32 cols: ok
+<64 cols: ok
+<128 cols: ok
+<256 cols: ok
+>256 cols: ok