1# Before `make install' is performed this script should be runnable with 2# `make test'. After `make install' it should work as 3# `perl 12_encodepixels.t' 4 5######################### 6 7use Test::More tests => 22; 8BEGIN { use_ok('Image::PBMlib') }; 9 10use strict; 11 12use vars qw( $val @pix %expect_pix ); 13 14%expect_pix = ( 15# encoding for ascii files 16 'enc1' => "0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 \n", 17 'enc10' => "0 0 0 0 0 10 10 0 0 0 0 0 0 10 10 0 0 0 0 0 \n", 18 'enc1000' => "0 0 0 0 0 1000 1000 0 0 0 0 0 0 1000 1000 0 0 0 0 0 \n", 19 'enc10rgb' => "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 10 10 10 10 10 0 0 0 0 0 0 0 0 0 0 0 \n" . 20 "0 0 0 0 0 0 0 10 10 10 10 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", 21 'enc1000rgb' => "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 1000 1000 1000 1000 1000 0 0 0 0 0 \n" . 22 "0 0 0 0 0 0 0 0 0 0 0 0 0 1000 1000 1000 1000 1000 1000 0 0 0 0 0 0 0 \n" . 23 "0 0 0 0 0 0 0 0 \n", 24 25# encoding for raw files 26 'enc!~!' => '!~!', 27 'encx8x' => 'x8x', 28 'encABC' => 'ABCDEFGHI', 29 'encAABBCC' => 'AABBCCDDEEFF', 30 'encXYZ' => 'XXYYZZ', 31 'encx8xbad' => "x8x\0\0", 32); 33 34 35@pix = ( 36 [ 0, 0, 0, 0], 37 [ 0, 1, 1, 0], 38 [ 0, 0, 0, 0], 39 [ 0, 1, 1, 0], 40 [ 0, 0, 0, 0], 41); 42$val = encodepixels('ascii', 1, \@pix); 43ok($val eq $expect_pix{enc1}, 'encodepixels p1 proper 4x5'); 44 45@pix = ( 46 [ 0, 0, 0, 0], 47 [ 0, 1, 1, ], 48 [ 0, 0, 0, 0, 0], 49 [ 0, 1, 10, 0], 50 [ 0, 0, 0], 51); 52$val = encodepixels('ascii', 1, \@pix); 53ok($val eq $expect_pix{enc1}, 'encodepixels p1 awkward 4x5'); 54 55@pix = ( 56 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 57); 58$val = encodepixels('ascii', 1, \@pix); 59ok($val eq $expect_pix{enc1}, 'encodepixels p1 1-d 4x5'); 60 61@pix = ( 62 [ "0:", 0, 0, 0], 63 [ 0 , 10, 10, 0], 64 [ 0 , 0, 0, 0], 65 [ 0 , 10, 10, 0], 66 [ 0 , 0, 0, 0], 67); 68$val = encodepixels('ascii', 10, \@pix); 69ok($val eq $expect_pix{enc10}, 'encodepixels p2 proper 4x5'); 70 71@pix = ( 72 [ "0:", 0, 0, 0], 73 [ 0 , 10, 10, 0], 74 [ 0 , 0,], 75 [0,0,0, 10,100, 0], 76 [ 0 , 0, 0], 77); 78$val = encodepixels('ascii', 10, \@pix); 79ok($val eq $expect_pix{enc10}, 'encodepixels p2 awkward 4x5'); 80 81@pix = ( 82 [ "0.0,", 0, 0, 0], 83 [ 0 , 1.0, 1.0, 0], 84 [ 0 , 0,], 85 [0,0,0, 1,10.0, 0], 86 [ 0 , 0, 0], 87); 88$val = encodepixels('ascii', 10, \@pix); 89ok($val eq $expect_pix{enc10}, 'encodepixels p2 awkward float 4x5'); 90 91@pix = ( 92 [ "0/", 0, 0, 0], 93 [ 0 , 'a', 'A', 0], 94 [ 0 , 0,], 95 [0,0,0, 'A/','AA/', 0], 96 [ 0 , 0, 0], 97); 98 99$val = encodepixels('ascii', 10, \@pix); 100ok($val eq $expect_pix{enc10}, 'encodepixels p2 awkward hex 4x5'); 101 102@pix = ( 103 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 104); 105$val = encodepixels('ascii', 10, \@pix); 106ok($val eq $expect_pix{enc10}, 'encodepixels p2 1-d 4x5'); 107 108@pix = ( 109 0, 0, 0, 0, 0, 1000, 1000, 0, 0, 0, 0, 0, 0, 1000, 1000, 0, 0, 0, 0, 0, 110); 111$val = encodepixels('ascii', 1000, \@pix); 112ok($val eq $expect_pix{enc1000}, 'encodepixels p2 2byte 1-d 4x5'); 113 114@pix = ( 115 [ ["0:",0,0], [0,0,0], [0,0,0], [0,0,0]], 116 [ [0,0,0], [10,10,10], [10,10,10], [0,0,0]], 117 [ [0,0,0], [0,0,0], [0,0,0], [0,0,0]], 118 [ [0,0,0], [10,10,10], [10,10,10], [0,0,0]], 119 [ [0,0,0], [0,0,0], [0,0,0], [0,0,0]], 120); 121$val = encodepixels('ascii', 10, \@pix); 122ok($val eq $expect_pix{enc10rgb}, 'encodepixels p3 3-d 4x5'); 123 124@pix = ( 125 [ '0:0:0', '0:0:0', '0:0:0', '0:0:0'], 126 [ '0:0:0', '10:10:10', '10:10:10', '0:0:0'], 127 [ '0:0:0', '0:0:0', '0:0:0', '0:0:0'], 128 [ '0:0:0', '10:10:10', '10:10:10', '0:0:0'], 129 [ '0:0:0', '0:0:0', '0:0:0', '0:0:0'], 130); 131$val = encodepixels('ascii', 10, \@pix); 132ok($val eq $expect_pix{enc10rgb}, 'encodepixels p3 dec 2-d 4x5'); 133 134@pix = ( 135 [ '0/0/0', '0/0/0', '0/0/0', '0/0/0'], 136 [ '0/0/0', 'A/A/A', 'A/A/A', '0/0/0'], 137 [ '0/0/0', '0/0/0', '0/0/0', '0/0/0'], 138 [ '0/0/0', 'A/A/A', 'A/A/A', '0/0/0'], 139 [ '0/0/0', '0/0/0', '0/0/0', '0/0/0'], 140); 141$val = encodepixels('ascii', 10, \@pix); 142ok($val eq $expect_pix{enc10rgb}, 'encodepixels p3 hex 2-d 4x5'); 143 144@pix = ( 145 [ '0.0,0.0,0.0', '0.0,0.0,0.0', '0.0,0.0,0.0', '0.0,0.0,0.0'], 146 [ '0.0,0.0,0.0', '1.0,1.0,1.0', '1.0,1.0,1.0', '0.0,0.0,0.0'], 147 [ '0.0,0.0,0.0', '0.0,0.0,0.0', '0.0,0.0,0.0', '0.0,0.0,0.0'], 148 [ '0.0,0.0,0.0', '1.0,1.0,1.0', '1.0,1.0,1.0', '0.0,0.0,0.0'], 149 [ '0.0,0.0,0.0', '0.0,0.0,0.0', '0.0,0.0,0.0', '0.0,0.0,0.0'], 150); 151$val = encodepixels('ascii', 10, \@pix); 152ok($val eq $expect_pix{enc10rgb}, 'encodepixels p3 float 2-d 4x5'); 153 154@pix = ( 155 [ '0:0:0', '0:0:0', '0:0:0', '0:0:0'], 156 [ '0:0:0', '1000:1000:1000', '1000:1000:1000', '0:0:0'], 157 [ '0:0:0', '0:0:0', '0:0:0', '0:0:0'], 158 [ '0:0:0', '1000:1000:1000', '1000:1000:1000', '0:0:0'], 159 [ '0:0:0', '0:0:0', '0:0:0', '0:0:0'], 160); 161$val = encodepixels('ascii', 1000, \@pix); 162ok($val eq $expect_pix{enc1000rgb}, 'encodepixels p3 2-byte 2-d 4x5'); 163 164@pix = ( 165 [ qw( 0 0 1 0 0 0 0 1 ) ], 166 [ qw( 0 1 1 1 1 1 1 0 ) ], 167 [ qw( 0 0 1 0 0 0 0 1 ) ] 168); 169$val = encodepixels('raw', 1, \@pix); 170ok($val eq $expect_pix{'enc!~!'}, 'encodepixels p4 8x3'); 171 172@pix = ( 173 [ qw( 0 1 1 1 1 ) ], 174 [ qw( 0 0 1 1 1 ) ], 175 [ qw( 0 1 1 1 1 ) ] 176); 177$val = encodepixels('raw', 1, \@pix); 178ok($val eq $expect_pix{'encx8x'}, 'encodepixels p4 5x3'); 179 180@pix = ( 181 [ qw( 0 1 1 1 1 0 ) ], 182 [ qw( 0 0 1 1 1 ) ], 183 [ qw( 0 1 1 1 1 ) ] 184); 185$val = encodepixels('raw', 1, \@pix); 186ok($val eq $expect_pix{'encx8xbad'}, 'encodepixels p4 bad 6x3'); 187 188@pix = ( 189 [ "58/", "58/" ], 190 [ "59/", "59/" ], 191 [ "5A/", "5A/" ], 192); 193$val = encodepixels('raw', 255, \@pix); 194ok($val eq $expect_pix{'encXYZ'}, 'encodepixels p5 2x3'); 195 196@pix = ( 197 [ "0.3450980," ], 198 [ "0.3490196," ], 199 [ "0.3529411," ], 200); 201$val = encodepixels('raw', 65535, \@pix); 202ok($val eq $expect_pix{'encXYZ'}, 'encodepixels p5 1x3'); 203 204@pix = ( 205 [ "65:66:67" ], 206 [ "68:69:70" ], 207 [ "71:72:73" ] 208); 209$val = encodepixels('raw', 255, \@pix); 210ok($val eq $expect_pix{'encABC'}, 'encodepixels p6 1x3'); 211 212@pix = ( 213 [ [ "16705:", 16962, 17219 ], [ 17476, 17733, 17990 ] ] 214); 215$val = encodepixels('raw', 65535, \@pix); 216ok($val eq $expect_pix{'encAABBCC'}, 'encodepixels p6 2x1'); 217 218