in cups/testpwg.c [21:337]
static int test_pagesize(_ppd_cache_t *pc, ppd_file_t *ppd,
const char *ppdsize);
static int test_ppd_cache(_ppd_cache_t *pc, ppd_file_t *ppd);
/*
* 'main()' - Main entry.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line args */
char *argv[]) /* I - Command-line arguments */
{
int status; /* Status of tests (0 = success, 1 = fail) */
const char *ppdfile; /* PPD filename */
ppd_file_t *ppd; /* PPD file */
_ppd_cache_t *pc; /* PPD cache and PWG mapping data */
const pwg_media_t *pwgmedia; /* PWG media size */
size_t i, /* Looping var */
num_media; /* Number of media sizes */
const pwg_media_t *mediatable; /* Media size table */
int dupmedia = 0; /* Duplicate media sizes? */
status = 0;
if (argc < 2 || argc > 3)
{
puts("Usage: ./testpwg filename.ppd [jobfile]");
return (1);
}
ppdfile = argv[1];
printf("ppdOpenFile(%s): ", ppdfile);
if ((ppd = ppdOpenFile(ppdfile)) == NULL)
{
ppd_status_t err; /* Last error in file */
int line; /* Line number in file */
err = ppdLastError(&line);
printf("FAIL (%s on line %d)\n", ppdErrorString(err), line);
return (1);
}
else
puts("PASS");
fputs("_ppdCacheCreateWithPPD(ppd): ", stdout);
if ((pc = _ppdCacheCreateWithPPD(ppd)) == NULL)
{
puts("FAIL");
status ++;
}
else
{
puts("PASS");
status += test_ppd_cache(pc, ppd);
if (argc == 3)
{
/*
* Test PageSize mapping code.
*/
int fd; /* Job file descriptor */
const char *pagesize; /* PageSize value */
ipp_t *job; /* Job attributes */
ipp_attribute_t *media; /* Media attribute */
if ((fd = open(argv[2], O_RDONLY)) >= 0)
{
job = ippNew();
ippReadFile(fd, job);
close(fd);
if ((media = ippFindAttribute(job, "media", IPP_TAG_ZERO)) != NULL &&
media->value_tag != IPP_TAG_NAME &&
media->value_tag != IPP_TAG_KEYWORD)
media = NULL;
if (media)
printf("_ppdCacheGetPageSize(media=%s): ",
media->values[0].string.text);
else
fputs("_ppdCacheGetPageSize(media-col): ", stdout);
fflush(stdout);
if ((pagesize = _ppdCacheGetPageSize(pc, job, NULL, NULL)) == NULL)
{
puts("FAIL (Not Found)");
status = 1;
}
else if (media && _cups_strcasecmp(pagesize, media->values[0].string.text))
{
printf("FAIL (Got \"%s\", Expected \"%s\")\n", pagesize,
media->values[0].string.text);
status = 1;
}
else
printf("PASS (%s)\n", pagesize);
ippDelete(job);
}
else
{
perror(argv[2]);
status = 1;
}
}
/*
* _ppdCacheDestroy should never fail...
*/
fputs("_ppdCacheDestroy(pc): ", stdout);
_ppdCacheDestroy(pc);
puts("PASS");
}
fputs("pwgMediaForPWG(\"iso_a4_210x297mm\"): ", stdout);
if ((pwgmedia = pwgMediaForPWG("iso_a4_210x297mm")) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (strcmp(pwgmedia->pwg, "iso_a4_210x297mm"))
{
printf("FAIL (%s)\n", pwgmedia->pwg);
status ++;
}
else if (pwgmedia->width != 21000 || pwgmedia->length != 29700)
{
printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
status ++;
}
else
puts("PASS");
fputs("pwgMediaForPWG(\"roll_max_36.1025x3622.0472in\"): ", stdout);
if ((pwgmedia = pwgMediaForPWG("roll_max_36.1025x3622.0472in")) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (pwgmedia->width != 91700 || pwgmedia->length != 9199999)
{
printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
status ++;
}
else
printf("PASS (%dx%d)\n", pwgmedia->width, pwgmedia->length);
fputs("pwgMediaForPWG(\"disc_test_10x100mm\"): ", stdout);
if ((pwgmedia = pwgMediaForPWG("disc_test_10x100mm")) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (pwgmedia->width != 10000 || pwgmedia->length != 10000)
{
printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
status ++;
}
else
printf("PASS (%dx%d)\n", pwgmedia->width, pwgmedia->length);
fputs("pwgMediaForLegacy(\"na-letter\"): ", stdout);
if ((pwgmedia = pwgMediaForLegacy("na-letter")) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (strcmp(pwgmedia->pwg, "na_letter_8.5x11in"))
{
printf("FAIL (%s)\n", pwgmedia->pwg);
status ++;
}
else if (pwgmedia->width != 21590 || pwgmedia->length != 27940)
{
printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
status ++;
}
else
puts("PASS");
fputs("pwgMediaForPPD(\"4x6\"): ", stdout);
if ((pwgmedia = pwgMediaForPPD("4x6")) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (strcmp(pwgmedia->pwg, "na_index-4x6_4x6in"))
{
printf("FAIL (%s)\n", pwgmedia->pwg);
status ++;
}
else if (pwgmedia->width != 10160 || pwgmedia->length != 15240)
{
printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
status ++;
}
else
puts("PASS");
fputs("pwgMediaForPPD(\"10x15cm\"): ", stdout);
if ((pwgmedia = pwgMediaForPPD("10x15cm")) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (strcmp(pwgmedia->pwg, "om_100x150mm_100x150mm"))
{
printf("FAIL (%s)\n", pwgmedia->pwg);
status ++;
}
else if (pwgmedia->width != 10000 || pwgmedia->length != 15000)
{
printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
status ++;
}
else
puts("PASS");
fputs("pwgMediaForPPD(\"Custom.10x15cm\"): ", stdout);
if ((pwgmedia = pwgMediaForPPD("Custom.10x15cm")) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (strcmp(pwgmedia->pwg, "custom_10x15cm_100x150mm"))
{
printf("FAIL (%s)\n", pwgmedia->pwg);
status ++;
}
else if (pwgmedia->width != 10000 || pwgmedia->length != 15000)
{
printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
status ++;
}
else
puts("PASS");
fputs("pwgMediaForSize(29700, 42000): ", stdout);
if ((pwgmedia = pwgMediaForSize(29700, 42000)) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (strcmp(pwgmedia->pwg, "iso_a3_297x420mm"))
{
printf("FAIL (%s)\n", pwgmedia->pwg);
status ++;
}
else
puts("PASS");
fputs("pwgMediaForSize(9842, 19050): ", stdout);
if ((pwgmedia = pwgMediaForSize(9842, 19050)) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (strcmp(pwgmedia->pwg, "na_monarch_3.875x7.5in"))
{
printf("FAIL (%s)\n", pwgmedia->pwg);
status ++;
}
else
printf("PASS (%s)\n", pwgmedia->pwg);
fputs("pwgMediaForSize(9800, 19000): ", stdout);
if ((pwgmedia = pwgMediaForSize(9800, 19000)) == NULL)
{
puts("FAIL (not found)");
status ++;
}
else if (strcmp(pwgmedia->pwg, "jpn_you6_98x190mm"))
{
printf("FAIL (%s)\n", pwgmedia->pwg);
status ++;
}
else
printf("PASS (%s)\n", pwgmedia->pwg);
fputs("Duplicate size test: ", stdout);
for (mediatable = _pwgMediaTable(&num_media);
num_media > 1;
num_media --, mediatable ++)
{
for (i = num_media - 1, pwgmedia = mediatable + 1; i > 0; i --, pwgmedia ++)
{
if (pwgmedia->width == mediatable->width &&
pwgmedia->length == mediatable->length)
{
if (!dupmedia)
{
dupmedia = 1;
status ++;
puts("FAIL");
}
printf(" %s and %s have the same dimensions (%dx%d)\n",
pwgmedia->pwg, mediatable->pwg, pwgmedia->width,
pwgmedia->length);
}
}
}
if (!dupmedia)
puts("PASS");
return (status);
}