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