]> git.ipfire.org Git - thirdparty/cups.git/blame - cups/testpwg.c
Merge changes from CUPS 1.5svn-r9313.
[thirdparty/cups.git] / cups / testpwg.c
CommitLineData
54afec33
MS
1/*
2 * "$Id$"
3 *
4 * PWG test program for CUPS.
5 *
6 * Copyright 2009-2010 by Apple Inc.
7 *
8 * These coded instructions, statements, and computer programs are the
9 * property of Apple Inc. and are protected by Federal copyright
10 * law. Distribution and use rights are outlined in the file "LICENSE.txt"
11 * which should have been included with this file. If this file is
12 * file is missing or damaged, see the license at "http://www.cups.org/".
13 *
14 * This file is subject to the Apple OS-Developed Software exception.
15 *
16 * Contents:
17 *
18 * main() - Main entry.
19 * test_pwg() - Test the PWG mapping functions.
20 */
21
22/*
23 * Include necessary headers...
24 */
25
aaf19ab0 26#include "ppd-private.h"
54afec33
MS
27
28
29/*
30 * Local functions...
31 */
32
33static int test_pwg(_pwg_t *pwg);
34
35
36/*
37 * 'main()' - Main entry.
38 */
39
40int /* O - Exit status */
41main(int argc, /* I - Number of command-line args */
42 char *argv[]) /* I - Command-line arguments */
43{
44 int status; /* Status of tests (0 = success, 1 = fail) */
45 const char *ppdfile; /* PPD filename */
46 ppd_file_t *ppd; /* PPD file */
47 _pwg_t *pwg; /* PWG mapping data */
48 _pwg_media_t *pwgmedia; /* PWG media size */
49
50
51 status = 0;
52
53 if (argc != 2)
54 {
55 puts("Usage: ./testpwg filename.ppd");
56 return (1);
57 }
58 else
59 ppdfile = argv[1];
60
61 printf("ppdOpenFile(%s): ", ppdfile);
62 if ((ppd = ppdOpenFile(ppdfile)) == NULL)
63 {
64 ppd_status_t err; /* Last error in file */
65 int line; /* Line number in file */
66
67
68 err = ppdLastError(&line);
69
70 printf("FAIL (%s on line %d)\n", ppdErrorString(err), line);
71
72 return (1);
73 }
74 else
75 puts("PASS");
76
77 fputs("_pwgCreateWithPPD(ppd): ", stdout);
78 if ((pwg = _pwgCreateWithPPD(ppd)) == NULL)
79 {
80 puts("FAIL");
81 status ++;
82 }
83 else
84 {
85 puts("PASS");
86 status += test_pwg(pwg);
87
88 /*
89 * _pwgDestroy should never fail...
90 */
91
92 fputs("_pwgDestroy(pwg): ", stdout);
93 _pwgDestroy(pwg);
94 puts("PASS");
95 }
96
7cf5915e
MS
97 fputs("_pwgMediaForPWG(\"iso_a4_210x297mm\"): ", stdout);
98 if ((pwgmedia = _pwgMediaForPWG("iso_a4_210x297mm")) == NULL)
99 {
100 puts("FAIL (not found)");
101 status ++;
102 }
103 else if (strcmp(pwgmedia->pwg, "iso_a4_210x297mm"))
104 {
105 printf("FAIL (%s)\n", pwgmedia->pwg);
106 status ++;
107 }
108 else if (pwgmedia->width != 21000 || pwgmedia->length != 29700)
109 {
110 printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
111 status ++;
112 }
113 else
114 puts("PASS");
115
116 fputs("_pwgMediaForLegacy(\"na-letter\"): ", stdout);
117 if ((pwgmedia = _pwgMediaForLegacy("na-letter")) == NULL)
118 {
119 puts("FAIL (not found)");
120 status ++;
121 }
122 else if (strcmp(pwgmedia->pwg, "na_letter_8.5x11in"))
123 {
124 printf("FAIL (%s)\n", pwgmedia->pwg);
125 status ++;
126 }
127 else if (pwgmedia->width != 21590 || pwgmedia->length != 27940)
128 {
129 printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
130 status ++;
131 }
132 else
133 puts("PASS");
134
135 fputs("_pwgMediaForPPD(\"4x6\"): ", stdout);
136 if ((pwgmedia = _pwgMediaForPPD("4x6")) == NULL)
137 {
138 puts("FAIL (not found)");
139 status ++;
140 }
141 else if (strcmp(pwgmedia->pwg, "na_index-4x6_4x6in"))
142 {
143 printf("FAIL (%s)\n", pwgmedia->pwg);
144 status ++;
145 }
146 else if (pwgmedia->width != 10160 || pwgmedia->length != 15240)
147 {
148 printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
149 status ++;
150 }
151 else
152 puts("PASS");
153
154 fputs("_pwgMediaForPPD(\"10x15cm\"): ", stdout);
155 if ((pwgmedia = _pwgMediaForPPD("10x15cm")) == NULL)
156 {
157 puts("FAIL (not found)");
158 status ++;
159 }
160 else if (strcmp(pwgmedia->pwg, "om_100x150mm_100x150mm"))
161 {
162 printf("FAIL (%s)\n", pwgmedia->pwg);
163 status ++;
164 }
165 else if (pwgmedia->width != 10000 || pwgmedia->length != 15000)
166 {
167 printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
168 status ++;
169 }
170 else
171 puts("PASS");
172
173 fputs("_pwgMediaForPPD(\"Custom.10x15cm\"): ", stdout);
174 if ((pwgmedia = _pwgMediaForPPD("Custom.10x15cm")) == NULL)
175 {
176 puts("FAIL (not found)");
177 status ++;
178 }
179 else if (strcmp(pwgmedia->pwg, "custom_10x15cm_100x150mm"))
180 {
181 printf("FAIL (%s)\n", pwgmedia->pwg);
182 status ++;
183 }
184 else if (pwgmedia->width != 10000 || pwgmedia->length != 15000)
185 {
186 printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
187 status ++;
188 }
189 else
190 puts("PASS");
191
54afec33
MS
192 fputs("_pwgMediaForSize(29700, 42000): ", stdout);
193 if ((pwgmedia = _pwgMediaForSize(29700, 42000)) == NULL)
194 {
195 puts("FAIL (not found)");
196 status ++;
197 }
198 else if (strcmp(pwgmedia->pwg, "iso_a3_297x420mm"))
199 {
200 printf("FAIL (%s)\n", pwgmedia->pwg);
201 status ++;
202 }
203 else
204 puts("PASS");
205
206 return (status);
207}
208
209
210/*
211 * 'test_pwg()' - Test the PWG mapping functions.
212 */
213
214static int /* O - 1 on failure, 0 on success */
215test_pwg(_pwg_t *pwg) /* I - PWG mapping data */
216{
217 int i, /* Looping var */
218 status = 0; /* Return status */
219 _pwg_t *pwg2; /* Loaded data */
220 _pwg_size_t *size, /* Size from original */
221 *size2; /* Size from saved */
222 _pwg_map_t *map, /* Map from original */
223 *map2; /* Map from saved */
224
225
226 /*
227 * Verify that we can write and read back the same data...
228 */
229
230 fputs("_pwgWriteFile(test.pwg): ", stdout);
231 if (!_pwgWriteFile(pwg, "test.pwg"))
232 {
233 puts("FAIL");
234 status ++;
235 }
236 else
237 puts("PASS");
238
239 fputs("_pwgCreateWithFile(test.pwg): ", stdout);
240 if ((pwg2 = _pwgCreateWithFile("test.pwg")) == NULL)
241 {
242 puts("FAIL");
243 status ++;
244 }
245 else
246 {
247 if (pwg2->num_sizes != pwg->num_sizes)
248 {
249 if (!status)
250 puts("FAIL");
251
252 printf(" SAVED num_sizes=%d, ORIG num_sizes=%d\n", pwg2->num_sizes,
253 pwg->num_sizes);
254
255 status ++;
256 }
257 else
258 {
259 for (i = pwg->num_sizes, size = pwg->sizes, size2 = pwg2->sizes;
260 i > 0;
261 i --, size ++, size2 ++)
262 {
263 if (strcmp(size2->map.pwg, size->map.pwg) ||
264 strcmp(size2->map.ppd, size->map.ppd) ||
265 size2->width != size->width ||
266 size2->length != size->length ||
267 size2->left != size->left ||
268 size2->bottom != size->bottom ||
269 size2->right != size->right ||
270 size2->top != size->top)
271 {
272 if (!status)
273 puts("FAIL");
274
275 if (strcmp(size->map.pwg, size2->map.pwg))
276 printf(" SAVED size->map.pwg=\"%s\", ORIG "
277 "size->map.pwg=\"%s\"\n", size2->map.pwg, size->map.pwg);
278
279 if (strcmp(size2->map.ppd, size->map.ppd))
280 printf(" SAVED size->map.ppd=\"%s\", ORIG "
281 "size->map.ppd=\"%s\"\n", size2->map.ppd, size->map.ppd);
282
283 if (size2->width != size->width)
284 printf(" SAVED size->width=%d, ORIG size->width=%d\n",
285 size2->width, size->width);
286
287 if (size2->length != size->length)
288 printf(" SAVED size->length=%d, ORIG size->length=%d\n",
289 size2->length, size->length);
290
291 if (size2->left != size->left)
292 printf(" SAVED size->left=%d, ORIG size->left=%d\n",
293 size2->left, size->left);
294
295 if (size2->bottom != size->bottom)
296 printf(" SAVED size->bottom=%d, ORIG size->bottom=%d\n",
297 size2->bottom, size->bottom);
298
299 if (size2->right != size->right)
300 printf(" SAVED size->right=%d, ORIG size->right=%d\n",
301 size2->right, size->right);
302
303 if (size2->top != size->top)
304 printf(" SAVED size->top=%d, ORIG size->top=%d\n",
305 size2->top, size->top);
306
307 status ++;
308 break;
309 }
310 }
311
312 for (i = pwg->num_sources, map = pwg->sources, map2 = pwg2->sources;
313 i > 0;
314 i --, map ++, map2 ++)
315 {
316 if (strcmp(map2->pwg, map->pwg) ||
317 strcmp(map2->ppd, map->ppd))
318 {
319 if (!status)
320 puts("FAIL");
321
322 if (strcmp(map->pwg, map2->pwg))
323 printf(" SAVED source->pwg=\"%s\", ORIG source->pwg=\"%s\"\n",
324 map2->pwg, map->pwg);
325
326 if (strcmp(map2->ppd, map->ppd))
327 printf(" SAVED source->ppd=\"%s\", ORIG source->ppd=\"%s\"\n",
328 map2->ppd, map->ppd);
329
330 status ++;
331 break;
332 }
333 }
334
335 for (i = pwg->num_types, map = pwg->types, map2 = pwg2->types;
336 i > 0;
337 i --, map ++, map2 ++)
338 {
339 if (strcmp(map2->pwg, map->pwg) ||
340 strcmp(map2->ppd, map->ppd))
341 {
342 if (!status)
343 puts("FAIL");
344
345 if (strcmp(map->pwg, map2->pwg))
346 printf(" SAVED type->pwg=\"%s\", ORIG type->pwg=\"%s\"\n",
347 map2->pwg, map->pwg);
348
349 if (strcmp(map2->ppd, map->ppd))
350 printf(" SAVED type->ppd=\"%s\", ORIG type->ppd=\"%s\"\n",
351 map2->ppd, map->ppd);
352
353 status ++;
354 break;
355 }
356 }
357 }
358
359 if (!status)
360 puts("PASS");
361 }
362
363 return (status);
364}
365
366
367/*
368 * End of "$Id$".
369 */