From: Michael R Sweet Date: Thu, 11 Oct 2018 00:44:21 +0000 (-0400) Subject: Move PPD tests to PPD unit test file. X-Git-Tag: v2.3b6~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f81f6d3d572ea0ff0233a9f6c25c2349c8d342a3;p=thirdparty%2Fcups.git Move PPD tests to PPD unit test file. Shorten cupsColorSpace strings. --- diff --git a/cups/raster-stream.c b/cups/raster-stream.c index 68740be832..7ab278b43e 100644 --- a/cups/raster-stream.c +++ b/cups/raster-stream.c @@ -66,27 +66,27 @@ _cupsRasterColorSpaceString( { static const char * const cups_color_spaces[] = { /* Color spaces */ - "CUPS_CSPACE_W", - "CUPS_CSPACE_RGB", - "CUPS_CSPACE_RGBA", - "CUPS_CSPACE_K", - "CUPS_CSPACE_CMY", - "CUPS_CSPACE_YMC", - "CUPS_CSPACE_CMYK", - "CUPS_CSPACE_YMCK", - "CUPS_CSPACE_KCMY", - "CUPS_CSPACE_KCMYcm", - "CUPS_CSPACE_GMCK", - "CUPS_CSPACE_GMCS", - "CUPS_CSPACE_WHITE", - "CUPS_CSPACE_GOLD", - "CUPS_CSPACE_SILVER", - "CUPS_CSPACE_CIEXYZ", - "CUPS_CSPACE_CIELab", - "CUPS_CSPACE_RGBW", - "CUPS_CSPACE_SW", - "CUPS_CSPACE_SRGB", - "CUPS_CSPACE_ADOBERGB", + "W", + "RGB", + "RGBA", + "K", + "CMY", + "YMC", + "CMYK", + "YMCK", + "KCMY", + "KCMYcm", + "GMCK", + "GMCS", + "WHITE", + "GOLD", + "SILVER", + "CIEXYZ", + "CIELab", + "RGBW", + "SW", + "SRGB", + "ADOBERGB", "21", "22", "23", @@ -98,37 +98,37 @@ _cupsRasterColorSpaceString( "29", "30", "31", - "CUPS_CSPACE_ICC1", - "CUPS_CSPACE_ICC2", - "CUPS_CSPACE_ICC3", - "CUPS_CSPACE_ICC4", - "CUPS_CSPACE_ICC5", - "CUPS_CSPACE_ICC6", - "CUPS_CSPACE_ICC7", - "CUPS_CSPACE_ICC8", - "CUPS_CSPACE_ICC9", - "CUPS_CSPACE_ICCA", - "CUPS_CSPACE_ICCB", - "CUPS_CSPACE_ICCC", - "CUPS_CSPACE_ICCD", - "CUPS_CSPACE_ICCE", - "CUPS_CSPACE_ICCF", + "ICC1", + "ICC2", + "ICC3", + "ICC4", + "ICC5", + "ICC6", + "ICC7", + "ICC8", + "ICC9", + "ICCA", + "ICCB", + "ICCC", + "ICCD", + "ICCE", + "ICCF", "47", - "CUPS_CSPACE_DEVICE1", - "CUPS_CSPACE_DEVICE2", - "CUPS_CSPACE_DEVICE3", - "CUPS_CSPACE_DEVICE4", - "CUPS_CSPACE_DEVICE5", - "CUPS_CSPACE_DEVICE6", - "CUPS_CSPACE_DEVICE7", - "CUPS_CSPACE_DEVICE8", - "CUPS_CSPACE_DEVICE9", - "CUPS_CSPACE_DEVICEA", - "CUPS_CSPACE_DEVICEB", - "CUPS_CSPACE_DEVICEC", - "CUPS_CSPACE_DEVICED", - "CUPS_CSPACE_DEVICEE", - "CUPS_CSPACE_DEVICEF" + "DEVICE1", + "DEVICE2", + "DEVICE3", + "DEVICE4", + "DEVICE5", + "DEVICE6", + "DEVICE7", + "DEVICE8", + "DEVICE9", + "DEVICEA", + "DEVICEB", + "DEVICEC", + "DEVICED", + "DEVICEE", + "DEVICEF" }; if (cspace < CUPS_CSPACE_W || cspace > CUPS_CSPACE_DEVICEF) diff --git a/cups/testppd.c b/cups/testppd.c index 3e4f29b038..a6dc0b71b1 100644 --- a/cups/testppd.c +++ b/cups/testppd.c @@ -1,10 +1,11 @@ /* * PPD test program for CUPS. * - * Copyright 2007-2017 by Apple Inc. - * Copyright 1997-2006 by Easy Software Products. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2006 by Easy Software Products. * - * Licensed under Apache License v2.0. See the file "LICENSE" for more information. + * Licensed under Apache License v2.0. See the file "LICENSE" for more + * information. */ /* @@ -14,6 +15,7 @@ #undef _CUPS_NO_DEPRECATED #include "cups-private.h" #include "ppd-private.h" +#include "raster-private.h" #include #ifdef _WIN32 # include @@ -24,10 +26,169 @@ #include +/* + * Local functions... + */ + +static int do_ppd_tests(const char *filename, int num_options, cups_option_t *options); +static int do_ps_tests(void); +static void print_changes(cups_page_header2_t *header, cups_page_header2_t *expected); + + /* * Test data... */ +static const char *dsc_code = +"[{\n" +"%%BeginFeature: *PageSize Tabloid\n" +"<>setpagedevice\n" +"%%EndFeature\n" +"} stopped cleartomark\n"; +static const char *setpagedevice_code = +"<<" +"/MediaClass(Media Class)" +"/MediaColor((Media Color))" +"/MediaType(Media\\\\Type)" +"/OutputType<416263>" +"/AdvanceDistance 1000" +"/AdvanceMedia 1" +"/Collate false" +"/CutMedia 2" +"/Duplex true" +"/HWResolution[100 200]" +"/InsertSheet true" +"/Jog 3" +"/LeadingEdge 1" +"/ManualFeed true" +"/MediaPosition 8#777" +"/MediaWeight 16#fe01" +"/MirrorPrint true" +"/NegativePrint true" +"/NumCopies 1" +"/Orientation 1" +"/OutputFaceUp true" +"/PageSize[612 792.1]" +"/Separations true" +"/TraySwitch true" +"/Tumble true" +"/cupsMediaType 2" +"/cupsColorOrder 1" +"/cupsColorSpace 1" +"/cupsCompression 1" +"/cupsRowCount 1" +"/cupsRowFeed 1" +"/cupsRowStep 1" +"/cupsBorderlessScalingFactor 1.001" +"/cupsInteger0 1" +"/cupsInteger1 2" +"/cupsInteger2 3" +"/cupsInteger3 4" +"/cupsInteger4 5" +"/cupsInteger5 6" +"/cupsInteger6 7" +"/cupsInteger7 8" +"/cupsInteger8 9" +"/cupsInteger9 10" +"/cupsInteger10 11" +"/cupsInteger11 12" +"/cupsInteger12 13" +"/cupsInteger13 14" +"/cupsInteger14 15" +"/cupsInteger15 16" +"/cupsReal0 1.1" +"/cupsReal1 2.1" +"/cupsReal2 3.1" +"/cupsReal3 4.1" +"/cupsReal4 5.1" +"/cupsReal5 6.1" +"/cupsReal6 7.1" +"/cupsReal7 8.1" +"/cupsReal8 9.1" +"/cupsReal9 10.1" +"/cupsReal10 11.1" +"/cupsReal11 12.1" +"/cupsReal12 13.1" +"/cupsReal13 14.1" +"/cupsReal14 15.1" +"/cupsReal15 16.1" +"/cupsString0(1)" +"/cupsString1(2)" +"/cupsString2(3)" +"/cupsString3(4)" +"/cupsString4(5)" +"/cupsString5(6)" +"/cupsString6(7)" +"/cupsString7(8)" +"/cupsString8(9)" +"/cupsString9(10)" +"/cupsString10(11)" +"/cupsString11(12)" +"/cupsString12(13)" +"/cupsString13(14)" +"/cupsString14(15)" +"/cupsString15(16)" +"/cupsMarkerType(Marker Type)" +"/cupsRenderingIntent(Rendering Intent)" +"/cupsPageSizeName(Letter)" +"/cupsPreferredBitsPerColor 17" +">> setpagedevice"; + +static cups_page_header2_t setpagedevice_header = +{ + "Media Class", /* MediaClass */ + "(Media Color)", /* MediaColor */ + "Media\\Type", /* MediaType */ + "Abc", /* OutputType */ + 1000, /* AdvanceDistance */ + CUPS_ADVANCE_FILE, /* AdvanceMedia */ + CUPS_FALSE, /* Collate */ + CUPS_CUT_JOB, /* CutMedia */ + CUPS_TRUE, /* Duplex */ + { 100, 200 }, /* HWResolution */ + { 0, 0, 0, 0 }, /* ImagingBoundingBox */ + CUPS_TRUE, /* InsertSheet */ + CUPS_JOG_SET, /* Jog */ + CUPS_EDGE_RIGHT, /* LeadingEdge */ + { 0, 0 }, /* Margins */ + CUPS_TRUE, /* ManualFeed */ + 0777, /* MediaPosition */ + 0xfe01, /* MediaWeight */ + CUPS_TRUE, /* MirrorPrint */ + CUPS_TRUE, /* NegativePrint */ + 1, /* NumCopies */ + CUPS_ORIENT_90, /* Orientation */ + CUPS_TRUE, /* OutputFaceUp */ + { 612, 792 }, /* PageSize */ + CUPS_TRUE, /* Separations */ + CUPS_TRUE, /* TraySwitch */ + CUPS_TRUE, /* Tumble */ + 0, /* cupsWidth */ + 0, /* cupsHeight */ + 2, /* cupsMediaType */ + 0, /* cupsBitsPerColor */ + 0, /* cupsBitsPerPixel */ + 0, /* cupsBytesPerLine */ + CUPS_ORDER_BANDED, /* cupsColorOrder */ + CUPS_CSPACE_RGB, /* cupsColorSpace */ + 1, /* cupsCompression */ + 1, /* cupsRowCount */ + 1, /* cupsRowFeed */ + 1, /* cupsRowStep */ + 0, /* cupsNumColors */ + 1.001f, /* cupsBorderlessScalingFactor */ + { 612.0f, 792.1f }, /* cupsPageSize */ + { 0.0f, 0.0f, 0.0f, 0.0f }, /* cupsImagingBBox */ + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }, + /* cupsInteger[16] */ + { 1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1f, 8.1f, 9.1f, 10.1f, 11.1f, 12.1f, 13.1f, 14.1f, 15.1f, 16.1f }, /* cupsReal[16] */ + { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", + "14", "15", "16" }, /* cupsString[16] */ + "Marker Type", /* cupsMarkerType */ + "Rendering Intent", /* cupsRenderingIntent */ + "Letter" /* cupsPageSizeName */ +}; + static const char *default_code = "[{\n" "%%BeginFeature: *InstalledDuplexer False\n" @@ -138,7 +299,7 @@ main(int argc, /* I - Number of command-line arguments */ char *argv[]) /* I - Command-line arguments */ { int i; /* Looping var */ - ppd_file_t *ppd; /* PPD file loaded from disk */ + ppd_file_t *ppd = NULL; /* PPD file loaded from disk */ int status; /* Status of tests (0 = success, 1 = fail) */ int conflicts; /* Number of conflicts */ char *s; /* String */ @@ -855,6 +1016,46 @@ main(int argc, /* I - Number of command-line arguments */ puts("FAIL (returned 0)"); status ++; } + + status += do_ps_tests(); + } + else if (!strcmp(argv[1], "--raster")) + { + int num_options; /* Number of options */ + cups_option_t *options; /* Options */ + + + for (status = 0, num_options = 0, options = NULL, i = 1; i < argc; i ++) + { + if (argv[i][0] == '-') + { + if (argv[i][1] == 'o') + { + if (argv[i][2]) + num_options = cupsParseOptions(argv[i] + 2, num_options, &options); + else + { + i ++; + if (i < argc) + num_options = cupsParseOptions(argv[i], num_options, &options); + else + { + puts("Usage: testppd --raster [-o name=value ...] [filename.ppd ...]"); + return (1); + } + } + } + else + { + puts("Usage: testppd --raster [-o name=value ...] [filename.ppd ...]"); + return (1); + } + } + else + status += do_ppd_tests(argv[i], num_options, options); + } + + cupsFreeOptions(num_options, options); } else if (!strncmp(argv[1], "ipp://", 6) || !strncmp(argv[1], "ipps://", 7)) { @@ -1168,3 +1369,418 @@ main(int argc, /* I - Number of command-line arguments */ return (status); } + + +/* + * 'do_ppd_tests()' - Test the default option commands in a PPD file. + */ + +static int /* O - Number of errors */ +do_ppd_tests(const char *filename, /* I - PPD file */ + int num_options, /* I - Number of options */ + cups_option_t *options) /* I - Options */ +{ + ppd_file_t *ppd; /* PPD file data */ + cups_page_header2_t header; /* Page header */ + + + printf("\"%s\": ", filename); + fflush(stdout); + + if ((ppd = ppdOpenFile(filename)) == NULL) + { + ppd_status_t status; /* Status from PPD loader */ + int line; /* Line number containing error */ + + + status = ppdLastError(&line); + + puts("FAIL (bad PPD file)"); + printf(" %s on line %d\n", ppdErrorString(status), line); + + return (1); + } + + ppdMarkDefaults(ppd); + cupsMarkOptions(ppd, num_options, options); + + if (cupsRasterInterpretPPD(&header, ppd, 0, NULL, NULL)) + { + puts("FAIL (error from function)"); + puts(cupsRasterErrorString()); + + return (1); + } + else + { + puts("PASS"); + + return (0); + } +} + + +/* + * 'do_ps_tests()' - Test standard PostScript commands. + */ + +static int +do_ps_tests(void) +{ + cups_page_header2_t header; /* Page header */ + int preferred_bits; /* Preferred bits */ + int errors = 0; /* Number of errors */ + + + /* + * Test PS exec code... + */ + + fputs("_cupsRasterExecPS(\"setpagedevice\"): ", stdout); + fflush(stdout); + + memset(&header, 0, sizeof(header)); + header.Collate = CUPS_TRUE; + preferred_bits = 0; + + if (_cupsRasterExecPS(&header, &preferred_bits, setpagedevice_code)) + { + puts("FAIL (error from function)"); + puts(cupsRasterErrorString()); + errors ++; + } + else if (preferred_bits != 17 || + memcmp(&header, &setpagedevice_header, sizeof(header))) + { + puts("FAIL (bad header)"); + + if (preferred_bits != 17) + printf(" cupsPreferredBitsPerColor %d, expected 17\n", + preferred_bits); + + print_changes(&setpagedevice_header, &header); + errors ++; + } + else + puts("PASS"); + + fputs("_cupsRasterExecPS(\"roll\"): ", stdout); + fflush(stdout); + + if (_cupsRasterExecPS(&header, &preferred_bits, + "792 612 0 0 0\n" + "pop pop pop\n" + "<>" + "setpagedevice\n")) + { + puts("FAIL (error from function)"); + puts(cupsRasterErrorString()); + errors ++; + } + else if (header.PageSize[0] != 792 || header.PageSize[1] != 612) + { + printf("FAIL (PageSize [%d %d], expected [792 612])\n", header.PageSize[0], + header.PageSize[1]); + errors ++; + } + else + puts("PASS"); + + fputs("_cupsRasterExecPS(\"dup index\"): ", stdout); + fflush(stdout); + + if (_cupsRasterExecPS(&header, &preferred_bits, + "true false dup\n" + "<>setpagedevice\n" + "pop pop pop")) + { + puts("FAIL (error from function)"); + puts(cupsRasterErrorString()); + errors ++; + } + else + { + if (!header.Collate) + { + printf("FAIL (Collate false, expected true)\n"); + errors ++; + } + + if (header.Duplex) + { + printf("FAIL (Duplex true, expected false)\n"); + errors ++; + } + + if (header.Tumble) + { + printf("FAIL (Tumble true, expected false)\n"); + errors ++; + } + + if(header.Collate && !header.Duplex && !header.Tumble) + puts("PASS"); + } + + fputs("_cupsRasterExecPS(\"%%Begin/EndFeature code\"): ", stdout); + fflush(stdout); + + if (_cupsRasterExecPS(&header, &preferred_bits, dsc_code)) + { + puts("FAIL (error from function)"); + puts(cupsRasterErrorString()); + errors ++; + } + else if (header.PageSize[0] != 792 || header.PageSize[1] != 1224) + { + printf("FAIL (bad PageSize [%d %d], expected [792 1224])\n", + header.PageSize[0], header.PageSize[1]); + errors ++; + } + else + puts("PASS"); + + return (errors); +} + + + + +/* + * 'print_changes()' - Print differences in the page header. + */ + +static void +print_changes( + cups_page_header2_t *header, /* I - Actual page header */ + cups_page_header2_t *expected) /* I - Expected page header */ +{ + int i; /* Looping var */ + + + if (strcmp(header->MediaClass, expected->MediaClass)) + printf(" MediaClass (%s), expected (%s)\n", header->MediaClass, + expected->MediaClass); + + if (strcmp(header->MediaColor, expected->MediaColor)) + printf(" MediaColor (%s), expected (%s)\n", header->MediaColor, + expected->MediaColor); + + if (strcmp(header->MediaType, expected->MediaType)) + printf(" MediaType (%s), expected (%s)\n", header->MediaType, + expected->MediaType); + + if (strcmp(header->OutputType, expected->OutputType)) + printf(" OutputType (%s), expected (%s)\n", header->OutputType, + expected->OutputType); + + if (header->AdvanceDistance != expected->AdvanceDistance) + printf(" AdvanceDistance %d, expected %d\n", header->AdvanceDistance, + expected->AdvanceDistance); + + if (header->AdvanceMedia != expected->AdvanceMedia) + printf(" AdvanceMedia %d, expected %d\n", header->AdvanceMedia, + expected->AdvanceMedia); + + if (header->Collate != expected->Collate) + printf(" Collate %d, expected %d\n", header->Collate, + expected->Collate); + + if (header->CutMedia != expected->CutMedia) + printf(" CutMedia %d, expected %d\n", header->CutMedia, + expected->CutMedia); + + if (header->Duplex != expected->Duplex) + printf(" Duplex %d, expected %d\n", header->Duplex, + expected->Duplex); + + if (header->HWResolution[0] != expected->HWResolution[0] || + header->HWResolution[1] != expected->HWResolution[1]) + printf(" HWResolution [%d %d], expected [%d %d]\n", + header->HWResolution[0], header->HWResolution[1], + expected->HWResolution[0], expected->HWResolution[1]); + + if (memcmp(header->ImagingBoundingBox, expected->ImagingBoundingBox, + sizeof(header->ImagingBoundingBox))) + printf(" ImagingBoundingBox [%d %d %d %d], expected [%d %d %d %d]\n", + header->ImagingBoundingBox[0], + header->ImagingBoundingBox[1], + header->ImagingBoundingBox[2], + header->ImagingBoundingBox[3], + expected->ImagingBoundingBox[0], + expected->ImagingBoundingBox[1], + expected->ImagingBoundingBox[2], + expected->ImagingBoundingBox[3]); + + if (header->InsertSheet != expected->InsertSheet) + printf(" InsertSheet %d, expected %d\n", header->InsertSheet, + expected->InsertSheet); + + if (header->Jog != expected->Jog) + printf(" Jog %d, expected %d\n", header->Jog, + expected->Jog); + + if (header->LeadingEdge != expected->LeadingEdge) + printf(" LeadingEdge %d, expected %d\n", header->LeadingEdge, + expected->LeadingEdge); + + if (header->Margins[0] != expected->Margins[0] || + header->Margins[1] != expected->Margins[1]) + printf(" Margins [%d %d], expected [%d %d]\n", + header->Margins[0], header->Margins[1], + expected->Margins[0], expected->Margins[1]); + + if (header->ManualFeed != expected->ManualFeed) + printf(" ManualFeed %d, expected %d\n", header->ManualFeed, + expected->ManualFeed); + + if (header->MediaPosition != expected->MediaPosition) + printf(" MediaPosition %d, expected %d\n", header->MediaPosition, + expected->MediaPosition); + + if (header->MediaWeight != expected->MediaWeight) + printf(" MediaWeight %d, expected %d\n", header->MediaWeight, + expected->MediaWeight); + + if (header->MirrorPrint != expected->MirrorPrint) + printf(" MirrorPrint %d, expected %d\n", header->MirrorPrint, + expected->MirrorPrint); + + if (header->NegativePrint != expected->NegativePrint) + printf(" NegativePrint %d, expected %d\n", header->NegativePrint, + expected->NegativePrint); + + if (header->NumCopies != expected->NumCopies) + printf(" NumCopies %d, expected %d\n", header->NumCopies, + expected->NumCopies); + + if (header->Orientation != expected->Orientation) + printf(" Orientation %d, expected %d\n", header->Orientation, + expected->Orientation); + + if (header->OutputFaceUp != expected->OutputFaceUp) + printf(" OutputFaceUp %d, expected %d\n", header->OutputFaceUp, + expected->OutputFaceUp); + + if (header->PageSize[0] != expected->PageSize[0] || + header->PageSize[1] != expected->PageSize[1]) + printf(" PageSize [%d %d], expected [%d %d]\n", + header->PageSize[0], header->PageSize[1], + expected->PageSize[0], expected->PageSize[1]); + + if (header->Separations != expected->Separations) + printf(" Separations %d, expected %d\n", header->Separations, + expected->Separations); + + if (header->TraySwitch != expected->TraySwitch) + printf(" TraySwitch %d, expected %d\n", header->TraySwitch, + expected->TraySwitch); + + if (header->Tumble != expected->Tumble) + printf(" Tumble %d, expected %d\n", header->Tumble, + expected->Tumble); + + if (header->cupsWidth != expected->cupsWidth) + printf(" cupsWidth %d, expected %d\n", header->cupsWidth, + expected->cupsWidth); + + if (header->cupsHeight != expected->cupsHeight) + printf(" cupsHeight %d, expected %d\n", header->cupsHeight, + expected->cupsHeight); + + if (header->cupsMediaType != expected->cupsMediaType) + printf(" cupsMediaType %d, expected %d\n", header->cupsMediaType, + expected->cupsMediaType); + + if (header->cupsBitsPerColor != expected->cupsBitsPerColor) + printf(" cupsBitsPerColor %d, expected %d\n", header->cupsBitsPerColor, + expected->cupsBitsPerColor); + + if (header->cupsBitsPerPixel != expected->cupsBitsPerPixel) + printf(" cupsBitsPerPixel %d, expected %d\n", header->cupsBitsPerPixel, + expected->cupsBitsPerPixel); + + if (header->cupsBytesPerLine != expected->cupsBytesPerLine) + printf(" cupsBytesPerLine %d, expected %d\n", header->cupsBytesPerLine, + expected->cupsBytesPerLine); + + if (header->cupsColorOrder != expected->cupsColorOrder) + printf(" cupsColorOrder %d, expected %d\n", header->cupsColorOrder, + expected->cupsColorOrder); + + if (header->cupsColorSpace != expected->cupsColorSpace) + printf(" cupsColorSpace %s, expected %s\n", _cupsRasterColorSpaceString(header->cupsColorSpace), + _cupsRasterColorSpaceString(expected->cupsColorSpace)); + + if (header->cupsCompression != expected->cupsCompression) + printf(" cupsCompression %d, expected %d\n", header->cupsCompression, + expected->cupsCompression); + + if (header->cupsRowCount != expected->cupsRowCount) + printf(" cupsRowCount %d, expected %d\n", header->cupsRowCount, + expected->cupsRowCount); + + if (header->cupsRowFeed != expected->cupsRowFeed) + printf(" cupsRowFeed %d, expected %d\n", header->cupsRowFeed, + expected->cupsRowFeed); + + if (header->cupsRowStep != expected->cupsRowStep) + printf(" cupsRowStep %d, expected %d\n", header->cupsRowStep, + expected->cupsRowStep); + + if (header->cupsNumColors != expected->cupsNumColors) + printf(" cupsNumColors %d, expected %d\n", header->cupsNumColors, + expected->cupsNumColors); + + if (fabs(header->cupsBorderlessScalingFactor - expected->cupsBorderlessScalingFactor) > 0.001) + printf(" cupsBorderlessScalingFactor %g, expected %g\n", + header->cupsBorderlessScalingFactor, + expected->cupsBorderlessScalingFactor); + + if (fabs(header->cupsPageSize[0] - expected->cupsPageSize[0]) > 0.001 || + fabs(header->cupsPageSize[1] - expected->cupsPageSize[1]) > 0.001) + printf(" cupsPageSize [%g %g], expected [%g %g]\n", + header->cupsPageSize[0], header->cupsPageSize[1], + expected->cupsPageSize[0], expected->cupsPageSize[1]); + + if (fabs(header->cupsImagingBBox[0] - expected->cupsImagingBBox[0]) > 0.001 || + fabs(header->cupsImagingBBox[1] - expected->cupsImagingBBox[1]) > 0.001 || + fabs(header->cupsImagingBBox[2] - expected->cupsImagingBBox[2]) > 0.001 || + fabs(header->cupsImagingBBox[3] - expected->cupsImagingBBox[3]) > 0.001) + printf(" cupsImagingBBox [%g %g %g %g], expected [%g %g %g %g]\n", + header->cupsImagingBBox[0], header->cupsImagingBBox[1], + header->cupsImagingBBox[2], header->cupsImagingBBox[3], + expected->cupsImagingBBox[0], expected->cupsImagingBBox[1], + expected->cupsImagingBBox[2], expected->cupsImagingBBox[3]); + + for (i = 0; i < 16; i ++) + if (header->cupsInteger[i] != expected->cupsInteger[i]) + printf(" cupsInteger%d %d, expected %d\n", i, header->cupsInteger[i], + expected->cupsInteger[i]); + + for (i = 0; i < 16; i ++) + if (fabs(header->cupsReal[i] - expected->cupsReal[i]) > 0.001) + printf(" cupsReal%d %g, expected %g\n", i, header->cupsReal[i], + expected->cupsReal[i]); + + for (i = 0; i < 16; i ++) + if (strcmp(header->cupsString[i], expected->cupsString[i])) + printf(" cupsString%d (%s), expected (%s)\n", i, + header->cupsString[i], expected->cupsString[i]); + + if (strcmp(header->cupsMarkerType, expected->cupsMarkerType)) + printf(" cupsMarkerType (%s), expected (%s)\n", header->cupsMarkerType, + expected->cupsMarkerType); + + if (strcmp(header->cupsRenderingIntent, expected->cupsRenderingIntent)) + printf(" cupsRenderingIntent (%s), expected (%s)\n", + header->cupsRenderingIntent, + expected->cupsRenderingIntent); + + if (strcmp(header->cupsPageSizeName, expected->cupsPageSizeName)) + printf(" cupsPageSizeName (%s), expected (%s)\n", + header->cupsPageSizeName, + expected->cupsPageSizeName); +} diff --git a/cups/testraster.c b/cups/testraster.c index faf2dd2f92..a1d24cd2a1 100644 --- a/cups/testraster.c +++ b/cups/testraster.c @@ -1,8 +1,8 @@ /* * Raster test program routines for CUPS. * - * Copyright 2007-2018 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2007 by Easy Software Products. * * Licensed under Apache License v2.0. See the file "LICENSE" for more * information. @@ -13,172 +13,13 @@ */ #include -#include #include -/* - * Test PS commands and header... - */ - -static const char *dsc_code = -"[{\n" -"%%BeginFeature: *PageSize Tabloid\n" -"<>setpagedevice\n" -"%%EndFeature\n" -"} stopped cleartomark\n"; -static const char *setpagedevice_code = -"<<" -"/MediaClass(Media Class)" -"/MediaColor((Media Color))" -"/MediaType(Media\\\\Type)" -"/OutputType<416263>" -"/AdvanceDistance 1000" -"/AdvanceMedia 1" -"/Collate false" -"/CutMedia 2" -"/Duplex true" -"/HWResolution[100 200]" -"/InsertSheet true" -"/Jog 3" -"/LeadingEdge 1" -"/ManualFeed true" -"/MediaPosition 8#777" -"/MediaWeight 16#fe01" -"/MirrorPrint true" -"/NegativePrint true" -"/NumCopies 1" -"/Orientation 1" -"/OutputFaceUp true" -"/PageSize[612 792.1]" -"/Separations true" -"/TraySwitch true" -"/Tumble true" -"/cupsMediaType 2" -"/cupsColorOrder 1" -"/cupsColorSpace 1" -"/cupsCompression 1" -"/cupsRowCount 1" -"/cupsRowFeed 1" -"/cupsRowStep 1" -"/cupsBorderlessScalingFactor 1.001" -"/cupsInteger0 1" -"/cupsInteger1 2" -"/cupsInteger2 3" -"/cupsInteger3 4" -"/cupsInteger4 5" -"/cupsInteger5 6" -"/cupsInteger6 7" -"/cupsInteger7 8" -"/cupsInteger8 9" -"/cupsInteger9 10" -"/cupsInteger10 11" -"/cupsInteger11 12" -"/cupsInteger12 13" -"/cupsInteger13 14" -"/cupsInteger14 15" -"/cupsInteger15 16" -"/cupsReal0 1.1" -"/cupsReal1 2.1" -"/cupsReal2 3.1" -"/cupsReal3 4.1" -"/cupsReal4 5.1" -"/cupsReal5 6.1" -"/cupsReal6 7.1" -"/cupsReal7 8.1" -"/cupsReal8 9.1" -"/cupsReal9 10.1" -"/cupsReal10 11.1" -"/cupsReal11 12.1" -"/cupsReal12 13.1" -"/cupsReal13 14.1" -"/cupsReal14 15.1" -"/cupsReal15 16.1" -"/cupsString0(1)" -"/cupsString1(2)" -"/cupsString2(3)" -"/cupsString3(4)" -"/cupsString4(5)" -"/cupsString5(6)" -"/cupsString6(7)" -"/cupsString7(8)" -"/cupsString8(9)" -"/cupsString9(10)" -"/cupsString10(11)" -"/cupsString11(12)" -"/cupsString12(13)" -"/cupsString13(14)" -"/cupsString14(15)" -"/cupsString15(16)" -"/cupsMarkerType(Marker Type)" -"/cupsRenderingIntent(Rendering Intent)" -"/cupsPageSizeName(Letter)" -"/cupsPreferredBitsPerColor 17" -">> setpagedevice"; - -static cups_page_header2_t setpagedevice_header = -{ - "Media Class", /* MediaClass */ - "(Media Color)", /* MediaColor */ - "Media\\Type", /* MediaType */ - "Abc", /* OutputType */ - 1000, /* AdvanceDistance */ - CUPS_ADVANCE_FILE, /* AdvanceMedia */ - CUPS_FALSE, /* Collate */ - CUPS_CUT_JOB, /* CutMedia */ - CUPS_TRUE, /* Duplex */ - { 100, 200 }, /* HWResolution */ - { 0, 0, 0, 0 }, /* ImagingBoundingBox */ - CUPS_TRUE, /* InsertSheet */ - CUPS_JOG_SET, /* Jog */ - CUPS_EDGE_RIGHT, /* LeadingEdge */ - { 0, 0 }, /* Margins */ - CUPS_TRUE, /* ManualFeed */ - 0777, /* MediaPosition */ - 0xfe01, /* MediaWeight */ - CUPS_TRUE, /* MirrorPrint */ - CUPS_TRUE, /* NegativePrint */ - 1, /* NumCopies */ - CUPS_ORIENT_90, /* Orientation */ - CUPS_TRUE, /* OutputFaceUp */ - { 612, 792 }, /* PageSize */ - CUPS_TRUE, /* Separations */ - CUPS_TRUE, /* TraySwitch */ - CUPS_TRUE, /* Tumble */ - 0, /* cupsWidth */ - 0, /* cupsHeight */ - 2, /* cupsMediaType */ - 0, /* cupsBitsPerColor */ - 0, /* cupsBitsPerPixel */ - 0, /* cupsBytesPerLine */ - CUPS_ORDER_BANDED, /* cupsColorOrder */ - CUPS_CSPACE_RGB, /* cupsColorSpace */ - 1, /* cupsCompression */ - 1, /* cupsRowCount */ - 1, /* cupsRowFeed */ - 1, /* cupsRowStep */ - 0, /* cupsNumColors */ - 1.001f, /* cupsBorderlessScalingFactor */ - { 612.0f, 792.1f }, /* cupsPageSize */ - { 0.0f, 0.0f, 0.0f, 0.0f }, /* cupsImagingBBox */ - { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }, - /* cupsInteger[16] */ - { 1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1f, 8.1f, 9.1f, 10.1f, 11.1f, 12.1f, 13.1f, 14.1f, 15.1f, 16.1f }, /* cupsReal[16] */ - { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", - "14", "15", "16" }, /* cupsString[16] */ - "Marker Type", /* cupsMarkerType */ - "Rendering Intent", /* cupsRenderingIntent */ - "Letter" /* cupsPageSizeName */ -}; - - /* * Local functions... */ -static int do_ppd_tests(const char *filename, int num_options, - cups_option_t *options); -static int do_ps_tests(void); static int do_ras_file(const char *filename); static int do_raster_tests(cups_mode_t mode); static void print_changes(cups_page_header2_t *header, @@ -199,8 +40,7 @@ main(int argc, /* I - Number of command-line args */ if (argc == 1) { - errors = do_ps_tests(); - errors += do_raster_tests(CUPS_RASTER_WRITE); + errors = do_raster_tests(CUPS_RASTER_WRITE); errors += do_raster_tests(CUPS_RASTER_WRITE_COMPRESSED); errors += do_raster_tests(CUPS_RASTER_WRITE_PWG); errors += do_raster_tests(CUPS_RASTER_WRITE_APPLE); @@ -208,235 +48,15 @@ main(int argc, /* I - Number of command-line args */ else { int i; /* Looping var */ - int num_options; /* Number of options */ - cups_option_t *options; /* Options */ - - - for (errors = 0, num_options = 0, options = NULL, i = 1; i < argc; i ++) - { - if (argv[i][0] == '-') - { - if (argv[i][1] == 'o') - { - if (argv[i][2]) - num_options = cupsParseOptions(argv[i] + 2, num_options, &options); - else - { - i ++; - if (i < argc) - num_options = cupsParseOptions(argv[i], num_options, &options); - else - { - puts("Usage: testraster [-o name=value ...] [filename.ppd ...]"); - puts(" testraster [filename.ras ...]"); - return (1); - } - } - } - else - { - puts("Usage: testraster [-o name=value ...] [filename.ppd ...]"); - puts(" testraster [filename.ras ...]"); - return (1); - } - } - else if ((ext = strrchr(argv[i], '.')) != NULL) - { - if (!strcmp(ext, ".ppd")) - errors += do_ppd_tests(argv[i], num_options, options); - else - errors += do_ras_file(argv[i]); - } - else - { - puts("Usage: testraster [-o name=value ...] [filename.ppd ...]"); - puts(" testraster [filename.ras ...]"); - return (1); - } - } - cupsFreeOptions(num_options, options); + for (errors = 0, i = 1; i < argc; i ++) + errors += do_ras_file(argv[i]); } return (errors); } -/* - * 'do_ppd_tests()' - Test the default option commands in a PPD file. - */ - -static int /* O - Number of errors */ -do_ppd_tests(const char *filename, /* I - PPD file */ - int num_options, /* I - Number of options */ - cups_option_t *options) /* I - Options */ -{ - ppd_file_t *ppd; /* PPD file data */ - cups_page_header2_t header; /* Page header */ - - - printf("\"%s\": ", filename); - fflush(stdout); - - if ((ppd = ppdOpenFile(filename)) == NULL) - { - ppd_status_t status; /* Status from PPD loader */ - int line; /* Line number containing error */ - - - status = ppdLastError(&line); - - puts("FAIL (bad PPD file)"); - printf(" %s on line %d\n", ppdErrorString(status), line); - - return (1); - } - - ppdMarkDefaults(ppd); - cupsMarkOptions(ppd, num_options, options); - - if (cupsRasterInterpretPPD(&header, ppd, 0, NULL, NULL)) - { - puts("FAIL (error from function)"); - puts(cupsRasterErrorString()); - - return (1); - } - else - { - puts("PASS"); - - return (0); - } -} - - -/* - * 'do_ps_tests()' - Test standard PostScript commands. - */ - -static int -do_ps_tests(void) -{ - cups_page_header2_t header; /* Page header */ - int preferred_bits; /* Preferred bits */ - int errors = 0; /* Number of errors */ - - - /* - * Test PS exec code... - */ - - fputs("_cupsRasterExecPS(\"setpagedevice\"): ", stdout); - fflush(stdout); - - memset(&header, 0, sizeof(header)); - header.Collate = CUPS_TRUE; - preferred_bits = 0; - - if (_cupsRasterExecPS(&header, &preferred_bits, setpagedevice_code)) - { - puts("FAIL (error from function)"); - puts(cupsRasterErrorString()); - errors ++; - } - else if (preferred_bits != 17 || - memcmp(&header, &setpagedevice_header, sizeof(header))) - { - puts("FAIL (bad header)"); - - if (preferred_bits != 17) - printf(" cupsPreferredBitsPerColor %d, expected 17\n", - preferred_bits); - - print_changes(&setpagedevice_header, &header); - errors ++; - } - else - puts("PASS"); - - fputs("_cupsRasterExecPS(\"roll\"): ", stdout); - fflush(stdout); - - if (_cupsRasterExecPS(&header, &preferred_bits, - "792 612 0 0 0\n" - "pop pop pop\n" - "<>" - "setpagedevice\n")) - { - puts("FAIL (error from function)"); - puts(cupsRasterErrorString()); - errors ++; - } - else if (header.PageSize[0] != 792 || header.PageSize[1] != 612) - { - printf("FAIL (PageSize [%d %d], expected [792 612])\n", header.PageSize[0], - header.PageSize[1]); - errors ++; - } - else - puts("PASS"); - - fputs("_cupsRasterExecPS(\"dup index\"): ", stdout); - fflush(stdout); - - if (_cupsRasterExecPS(&header, &preferred_bits, - "true false dup\n" - "<>setpagedevice\n" - "pop pop pop")) - { - puts("FAIL (error from function)"); - puts(cupsRasterErrorString()); - errors ++; - } - else - { - if (!header.Collate) - { - printf("FAIL (Collate false, expected true)\n"); - errors ++; - } - - if (header.Duplex) - { - printf("FAIL (Duplex true, expected false)\n"); - errors ++; - } - - if (header.Tumble) - { - printf("FAIL (Tumble true, expected false)\n"); - errors ++; - } - - if(header.Collate && !header.Duplex && !header.Tumble) - puts("PASS"); - } - - fputs("_cupsRasterExecPS(\"%%Begin/EndFeature code\"): ", stdout); - fflush(stdout); - - if (_cupsRasterExecPS(&header, &preferred_bits, dsc_code)) - { - puts("FAIL (error from function)"); - puts(cupsRasterErrorString()); - errors ++; - } - else if (header.PageSize[0] != 792 || header.PageSize[1] != 1224) - { - printf("FAIL (bad PageSize [%d %d], expected [792 1224])\n", - header.PageSize[0], header.PageSize[1]); - errors ++; - } - else - puts("PASS"); - - return (errors); -} - - /* * 'do_ras_file()' - Test reading of a raster file. */