From 495cb15f36b00c1e0eedcd73669eb50c841748d7 Mon Sep 17 00:00:00 2001 From: "gerv%gerv.net" <> Date: Wed, 16 Mar 2005 07:58:05 +0000 Subject: [PATCH] Bug 275705 - better diagnostics for charts. Patch by bugzilla@glob.com.au; r=gerv, a=myk. --- t/testchart.gif | Bin 0 -> 3751 bytes t/testchart.png | Bin 0 -> 2382 bytes t/testgd.png | Bin 0 -> 361 bytes testserver.pl | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 t/testchart.gif create mode 100644 t/testchart.png create mode 100644 t/testgd.png diff --git a/t/testchart.gif b/t/testchart.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4ed080a0265a19266fb6d1810488cb07a6c2a0b GIT binary patch literal 3751 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 literal 0 Hc-jL100001 diff --git a/t/testchart.png b/t/testchart.png new file mode 100644 index 0000000000000000000000000000000000000000..720423e6dbe63503d321e0be38b42203023a58e3 GIT binary patch literal 2382 zc-nndYfux(77h?(1Ome-h&*Hlf~X*Hv%FLcNhX*<=IV@pUt~Z$ zjfKi7?jj?arvX&Sm~{qSG1~XMY-lpvR<%{q%Erfay)54_yl>I?&?Uk1 zIs9?>_qs6n1&9Cqzy{I1ONzad9i{R3&J$a<4`L88A;{YU&hc&tUL0W~M2a zIT(w+Ld725(~cCq8SgM)sTfeOO=rUG|p+;pY5#6tBFu$C4!k%ZHiBo5u09ds#;GJvXUH@4oj za3s&lEUvUa;{o^>bj7F4Qabzc_cif>ONbNh=SY6hA*n{C`r_m%8N3pv;3{GkMs1>zQ@Dp1fDpCqlI| zk<>v!M%P*9OA0TqH7kN}GB%4<)bual2jMW&9Z6vKJIVe6mts`Iad|;IvMf?yBDpG; z1!~zznI2x63PuR8r}W2-qYJ6^a)2SyxB$)N_T-kf@8oET!=Bx9abU z3TV}Qk&&ae1D1?5;Tno;G)nG+3~>4ZcD!(yrN#kv|1@?LLU8ssvyxF3My(Q=y3@3W z5QOT^yKGXNTtK5%^J|b1{6dFLuh6miu4DfRtCTy6bpdQw_lIC=K}^>}WaZm;-@_e6 zYkTE6!Fwd-%L8mu=wztM=F`qonY!{n#IhHHH;U5~^xBWu`lZ6`>+enQq1FAC!lPO1 zS6vYw&0fEQlCSq2+cg;{J7LZLD=AL0@9kRXX>D!KyS*%=IQBzFOG6Hc+0944!*zEp zI-mn>&O1H8k-LiWlMEWdTmPXWHV<4&-@1dciB&Zry|U<9Y_PCdBlvD`xFQe34#BJ1 zW_im)-OQoKo)4s3i~I_!`4(e2u?+&fBCH;XQ#ISW2@5&wzHjS+%40n@YTi@J_C;FPr|geDS=3( ztJ(0N{T0HvuJ@!3aUpF&n_ka0ebIXe-(I6^Ru6 z;?|imJ4i7o>F5;Md_!O6-gc2W5v5WbeTH+vj9vq?fGG6^0;x8?n^)HK!!id*Q6K)L z_dtvLYZX?XQ<0n6Mz3Bi3GKa6R@N=IzE|Zmc~@~U`Rk$iPx^stIF0bFKNff)z(NDf zO9RGzcw?3l2=jXsw{1F+EB~VzOdk<_M zV7Z?kOTZVs$fHqxcE1e2|KZJ=O~jibiDx~-O~Ec-Whyobeh1>hFX1-!vXmFo^!Lz%(KcFpX@^1^fxxT=H5KLrQT?v^1qC z(L$y;MPs5@OU7?{X*#6VqoK|3>tClPQh(yaBk4LT>MiI1 zr$n-y??zMoFul#pbh`5MtX5m8m=G!jqk2chBqCCQI^PISyc?;3aXh4Y9vPop2Y>B4 ziRf({af3c&tW%UqtFt10kyI1;H*q1M(NV?Sy%c8?k(0_&i7rQ@Q#3$^3#6E-pzes+ zEN$F{BrI;)C>lJH?QJ&upsU@v21s5 k0}|_963_mBqfZ;N<#c}v6l@z_`t>&y5gy5IV8u)S3vIm`hX4Qo literal 0 Hc-jL100001 diff --git a/t/testgd.png b/t/testgd.png new file mode 100644 index 0000000000000000000000000000000000000000..72c6aa50647d8fed2515a7b3c141f4e224a3d30c GIT binary patch literal 361 zc-rd>@N?(olHy`uVBq!ia0vp^DImB?%5O4-)~M2^Sg{927noWw2ZjL`>W?pZle!-f{5|*Hele zn^eq?Z-4&ZLtXgy<2ddAThg4e)CA9)-ecWkA9}l^T>3fVIRVx3g0P1*hi7&ahn$R? zbKT&1`; + $gdlib =~ s/\n$//; + if (!$gdlib) { + print "TEST-WARNING Failed to run gdlib-config, assuming gdlib " . + "version 1.x\n"; + $gdlib = '1.x'; + } + my $gd = $GD::VERSION; + + my $verstring = "GD version $gd, libgd version $gdlib"; + + $gdlib =~ s/^([^\.]+)\..*/$1/; + $gd =~ s/^([^\.]+)\..*/$1/; + + if ($gdlib == $gd) { + print "TEST-OK $verstring; Major versions match.\n"; + } else { + print "TEST-FAIL $verstring; Major versions do not match\n"; + } + } + + # Test GD + + eval { + my $image = new GD::Image(100, 100); + my $black = $image->colorAllocate(0, 0, 0); + my $white = $image->colorAllocate(255, 255, 255); + my $red = $image->colorAllocate(255, 0, 0); + my $blue = $image->colorAllocate(0, 0, 255); + $image->transparent($white); + $image->rectangle(0, 0, 99, 99, $black); + $image->arc(50, 50, 95, 75, 0, 360, $blue); + $image->fill(50, 50, $red); + + if ($image->can('png')) { + create_file('data/testgd-local.png', $image->png); + check_image('data/testgd-local.png', 't/testgd.png', 'GD', 'PNG'); + } else { + die "GD doesn't support PNG generation\n"; + } + }; + if ($@ ne '') { + print "TEST-FAILED GD returned: $@\n"; + } + + # Test Chart + + eval 'use Chart::Lines'; + if ($@) { + print "TEST-FAILED Chart::Lines is not installed\n"; + } else { + eval { + my $chart = Chart::Lines->new(400, 400); + + $chart->add_pt('foo', 30, 25); + $chart->add_pt('bar', 16, 32); + + my $type = $chart->can('gif') ? 'gif' : 'png'; + $chart->$type("data/testchart-local.$type"); + check_image("data/testchart-local.$type", "t/testchart.$type", + "Chart", uc($type)); + }; + if ($@ ne '') { + print "TEST-FAILED Chart returned: $@\n"; + } + } +} + sub fetch { my $url = shift; my $rtn; @@ -169,3 +245,33 @@ sub fetch { return($rtn); } +sub check_image { + my ($local_file, $test_file, $library, $image_type) = @_; + if (read_file($local_file) eq read_file($test_file)) { + print "TEST-OK $library library generated a good $image_type image\n"; + unlink $local_file; + } else { + print "TEST-WARNING $library library generated a $image_type that " . + "didn't match the expected image.\nIt has been saved as " . + "$local_file and should be compared with $test_file\n"; + } +} + +sub create_file { + my ($filename, $content) = @_; + open(FH, ">$filename") + or die "Failed to create $filename: $!\n"; + binmode FH; + print FH $content; + close FH; +} + +sub read_file { + my ($filename) = @_; + open(FH, $filename) + or die "Failed to open $filename: $!\n"; + binmode FH; + my $content = ; + close FH; + return $content; +} -- 2.47.2