]>
git.ipfire.org Git - thirdparty/cups.git/blob - cups/testcups.c
4 * CUPS API test program for the Common UNIX Printing System (CUPS).
6 * Copyright 2007 by Apple Inc.
7 * Copyright 2007 by Easy Software Products.
9 * These coded instructions, statements, and computer programs are the
10 * property of Apple Inc. and are protected by Federal copyright
11 * law. Distribution and use rights are outlined in the file "LICENSE.txt"
12 * which should have been included with this file. If this file is
13 * file is missing or damaged, see the license at "http://www.cups.org/".
15 * This file is subject to the Apple OS-Developed Software exception.
19 * main() - Main entry.
20 * dests_equal() - Determine whether two destinations are equal.
24 * Include necessary headers...
36 static int dests_equal(cups_dest_t
*a
, cups_dest_t
*b
);
37 static void show_diffs(cups_dest_t
*a
, cups_dest_t
*b
);
41 * 'main()' - Main entry.
44 int /* O - Exit status */
45 main(int argc
, /* I - Number of command-line arguments */
46 char *argv
[]) /* I - Command-line arguments */
48 int status
= 0, /* Exit status */
50 num_dests
; /* Number of destinations */
51 cups_dest_t
*dests
, /* Destinations */
52 *dest
, /* Current destination */
53 *named_dest
; /* Current named destination */
54 const char *ppdfile
; /* PPD file */
55 ppd_file_t
*ppd
; /* PPD file data */
56 int num_jobs
; /* Number of jobs for queue */
57 cups_job_t
*jobs
; /* Jobs for queue */
64 fputs("cupsGetDests: ", stdout
);
67 num_dests
= cupsGetDests(&dests
);
76 printf("PASS (%d dests)\n", num_dests
);
78 for (i
= num_dests
, dest
= dests
; i
> 0; i
--, dest
++)
80 printf(" %s", dest
->name
);
83 printf(" /%s", dest
->instance
);
86 puts(" ***DEFAULT***");
96 fputs("cupsGetDest(NULL): ", stdout
);
99 if ((dest
= cupsGetDest(NULL
, NULL
, num_dests
, dests
)) == NULL
)
101 for (i
= num_dests
, dest
= dests
; i
> 0; i
--, dest
++)
102 if (dest
->is_default
)
111 puts("PASS (no default)");
116 printf("PASS (%s)\n", dest
->name
);
119 * cupsGetNamedDest(NULL, NULL, NULL)
122 fputs("cupsGetNamedDest(NULL, NULL, NULL): ", stdout
);
125 if ((named_dest
= cupsGetNamedDest(NULL
, NULL
, NULL
)) == NULL
||
126 !dests_equal(dest
, named_dest
))
129 puts("PASS (no default)");
132 puts("FAIL (different values)");
133 show_diffs(dest
, named_dest
);
138 puts("FAIL (no default)");
143 printf("PASS (%s)\n", named_dest
->name
);
146 cupsFreeDests(1, named_dest
);
149 * cupsGetDest(printer)
152 printf("cupsGetDest(\"%s\"): ", dests
[num_dests
/ 2].name
);
155 if ((dest
= cupsGetDest(dests
[num_dests
/ 2].name
, NULL
, num_dests
,
166 * cupsGetNamedDest(NULL, printer, instance)
169 printf("cupsGetNamedDest(NULL, \"%s\", \"%s\"): ", dest
->name
,
170 dest
->instance
? dest
->instance
: "(null)");
173 if ((named_dest
= cupsGetNamedDest(NULL
, dest
->name
,
174 dest
->instance
)) == NULL
||
175 !dests_equal(dest
, named_dest
))
179 puts("FAIL (different values)");
180 show_diffs(dest
, named_dest
);
183 puts("FAIL (no destination)");
192 cupsFreeDests(1, named_dest
);
198 fputs("cupsPrintFile: ", stdout
);
201 if (cupsPrintFile(dest
->name
, "../data/testprint.ps", "Test Page",
202 dest
->num_options
, dest
->options
) <= 0)
211 * cupsGetPPD(printer)
214 fputs("cupsGetPPD(): ", stdout
);
217 if ((ppdfile
= cupsGetPPD(dest
->name
)) == NULL
)
230 fputs("ppdOpenFile(): ", stdout
);
233 if ((ppd
= ppdOpenFile(ppdfile
)) == NULL
)
249 fputs("cupsGetJobs: ", stdout
);
252 num_jobs
= cupsGetJobs(&jobs
, NULL
, 0, -1);
262 cupsFreeJobs(num_jobs
, jobs
);
263 cupsFreeDests(num_dests
, dests
);
270 * 'dests_equal()' - Determine whether two destinations are equal.
273 static int /* O - 1 if equal, 0 if not equal */
274 dests_equal(cups_dest_t
*a
, /* I - First destination */
275 cups_dest_t
*b
) /* I - Second destination */
277 int i
; /* Looping var */
278 cups_option_t
*aoption
; /* Current option */
279 const char *bval
; /* Option value */
285 if ((!a
&& b
) || (a
&& !b
))
288 if (strcasecmp(a
->name
, b
->name
) ||
289 (a
->instance
&& !b
->instance
) ||
290 (!a
->instance
&& b
->instance
) ||
291 (a
->instance
&& strcasecmp(a
->instance
, b
->instance
)) ||
292 a
->num_options
!= b
->num_options
)
295 for (i
= a
->num_options
, aoption
= a
->options
; i
> 0; i
--, aoption
++)
296 if ((bval
= cupsGetOption(aoption
->name
, b
->num_options
,
297 b
->options
)) == NULL
||
298 strcmp(aoption
->value
, bval
))
306 * 'show_diffs()' - Show differences between two destinations.
310 show_diffs(cups_dest_t
*a
, /* I - First destination */
311 cups_dest_t
*b
) /* I - Second destination */
313 int i
; /* Looping var */
314 cups_option_t
*aoption
; /* Current option */
315 const char *bval
; /* Option value */
321 puts(" Item cupsGetDest cupsGetNamedDest");
322 puts(" -------------------- -------------------- --------------------");
324 if (strcasecmp(a
->name
, b
->name
))
325 printf(" name %-20.20s %-20.20s\n", a
->name
, b
->name
);
327 if ((a
->instance
&& !b
->instance
) ||
328 (!a
->instance
&& b
->instance
) ||
329 (a
->instance
&& strcasecmp(a
->instance
, b
->instance
)))
330 printf(" instance %-20.20s %-20.20s\n",
331 a
->instance
? a
->instance
: "(null)",
332 b
->instance
? b
->instance
: "(null)");
334 if (a
->num_options
!= b
->num_options
)
335 printf(" num_options %-20d %-20d\n", a
->num_options
,
338 for (i
= a
->num_options
, aoption
= a
->options
; i
> 0; i
--, aoption
++)
339 if ((bval
= cupsGetOption(aoption
->name
, b
->num_options
,
340 b
->options
)) == NULL
||
341 strcmp(aoption
->value
, bval
))
342 printf(" %-20.20s %-20.20s %-20.20s\n", aoption
->name
,
343 aoption
->value
, bval
? bval
: "(null)");
348 * End of "$Id: testfile.c 6192 2007-01-10 19:26:48Z mike $".