| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "printing/backend/cups_helper.h" | 5 #include "printing/backend/cups_helper.h" |
| 6 #include "printing/backend/print_backend.h" | 6 #include "printing/backend/print_backend.h" |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 8 |
| 9 TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexLongEdge) { | 9 TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexShortEdge) { |
| 10 const char kTestPpdData[] = | 10 const char kTestPpdData[] = |
| 11 "*PPD-Adobe: \"4.3\"\n\n" | 11 "*PPD-Adobe: \"4.3\"\n\n" |
| 12 "*OpenGroup: General/General\n\n" | 12 "*OpenGroup: General/General\n\n" |
| 13 "*OpenUI *ColorModel/Color Model: PickOne\n" | 13 "*OpenUI *ColorModel/Color Model: PickOne\n" |
| 14 "*DefaultColorModel: Gray\n" | 14 "*DefaultColorModel: Gray\n" |
| 15 "*ColorModel Gray/Grayscale: \"" | 15 "*ColorModel Gray/Grayscale: \"" |
| 16 "<</cupsColorSpace 0/cupsColorOrder 0>>" | 16 "<</cupsColorSpace 0/cupsColorOrder 0>>" |
| 17 "setpagedevice\"\n" | 17 "setpagedevice\"\n" |
| 18 "*ColorModel Black/Inverted Grayscale: \"" | 18 "*ColorModel Black/Inverted Grayscale: \"" |
| 19 "<</cupsColorSpace 3/cupsColorOrder 0>>" | 19 "<</cupsColorSpace 3/cupsColorOrder 0>>" |
| 20 "setpagedevice\"\n" | 20 "setpagedevice\"\n" |
| 21 "*CloseUI: *ColorModel\n" | 21 "*CloseUI: *ColorModel\n" |
| 22 "*OpenUI *Duplex/2-Sided Printing: PickOne\n" | 22 "*OpenUI *Duplex/2-Sided Printing: PickOne\n" |
| 23 "*DefaultDuplex: DuplexTumble\n" | 23 "*DefaultDuplex: DuplexTumble\n" |
| 24 "*Duplex None/Off: \"<</Duplex false>>" | 24 "*Duplex None/Off: \"<</Duplex false>>" |
| 25 "setpagedevice\"\n" | 25 "setpagedevice\"\n" |
| 26 "*Duplex DuplexNoTumble/LongEdge: \"" | 26 "*Duplex DuplexNoTumble/LongEdge: \"" |
| 27 "<</Duplex true/Tumble false>>setpagedevice\"\n" | 27 "<</Duplex true/Tumble false>>setpagedevice\"\n" |
| 28 "*Duplex DuplexTumble/ShortEdge: \"" | 28 "*Duplex DuplexTumble/ShortEdge: \"" |
| 29 "<</Duplex true/Tumble true>>setpagedevice\"\n" | 29 "<</Duplex true/Tumble true>>setpagedevice\"\n" |
| 30 "*CloseUI: *Duplex\n\n" | 30 "*CloseUI: *Duplex\n\n" |
| 31 "*CloseGroup: General\n"; | 31 "*CloseGroup: General\n"; |
| 32 | 32 |
| 33 printing::PrinterSemanticCapsAndDefaults caps; | 33 printing::PrinterSemanticCapsAndDefaults caps; |
| 34 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); | 34 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); |
| 35 EXPECT_TRUE(caps.collate_capable); | 35 EXPECT_TRUE(caps.collate_capable); |
| 36 EXPECT_TRUE(caps.collate_default); | 36 EXPECT_TRUE(caps.collate_default); |
| 37 EXPECT_TRUE(caps.copies_capable); | 37 EXPECT_TRUE(caps.copies_capable); |
| 38 EXPECT_TRUE(caps.duplex_capable); | 38 EXPECT_TRUE(caps.duplex_capable); |
| 39 EXPECT_EQ(printing::LONG_EDGE, caps.duplex_default); | 39 EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default); |
| 40 EXPECT_FALSE(caps.color_changeable); | 40 EXPECT_FALSE(caps.color_changeable); |
| 41 EXPECT_FALSE(caps.color_default); | 41 EXPECT_FALSE(caps.color_default); |
| 42 } | 42 } |
| 43 | 43 |
| 44 // Test duplex detection code, which regressed in http://crbug.com/103999. | 44 // Test duplex detection code, which regressed in http://crbug.com/103999. |
| 45 TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexSimples) { | 45 TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexSimples) { |
| 46 const char kTestPpdData[] = | 46 const char kTestPpdData[] = |
| 47 "*PPD-Adobe: \"4.3\"\n\n" | 47 "*PPD-Adobe: \"4.3\"\n\n" |
| 48 "*OpenGroup: General/General\n\n" | 48 "*OpenGroup: General/General\n\n" |
| 49 "*OpenUI *Duplex/Double-Sided Printing: PickOne\n" | 49 "*OpenUI *Duplex/Double-Sided Printing: PickOne\n" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); | 87 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); |
| 88 EXPECT_TRUE(caps.collate_capable); | 88 EXPECT_TRUE(caps.collate_capable); |
| 89 EXPECT_TRUE(caps.collate_default); | 89 EXPECT_TRUE(caps.collate_default); |
| 90 EXPECT_TRUE(caps.copies_capable); | 90 EXPECT_TRUE(caps.copies_capable); |
| 91 EXPECT_FALSE(caps.duplex_capable); | 91 EXPECT_FALSE(caps.duplex_capable); |
| 92 EXPECT_EQ(printing::UNKNOWN_DUPLEX_MODE, caps.duplex_default); | 92 EXPECT_EQ(printing::UNKNOWN_DUPLEX_MODE, caps.duplex_default); |
| 93 EXPECT_FALSE(caps.color_changeable); | 93 EXPECT_FALSE(caps.color_changeable); |
| 94 EXPECT_FALSE(caps.color_default); | 94 EXPECT_FALSE(caps.color_default); |
| 95 } | 95 } |
| 96 | 96 |
| 97 TEST(PrintBackendCupsHelperTest, TestPpdParsingColorTrueDuplexLongEdge) { | 97 TEST(PrintBackendCupsHelperTest, TestPpdParsingColorTrueDuplexShortEdge) { |
| 98 const char kTestPpdData[] = | 98 const char kTestPpdData[] = |
| 99 "*PPD-Adobe: \"4.3\"\n\n" | 99 "*PPD-Adobe: \"4.3\"\n\n" |
| 100 "*ColorDevice: True\n" | 100 "*ColorDevice: True\n" |
| 101 "*DefaultColorSpace: CMYK\n\n" | 101 "*DefaultColorSpace: CMYK\n\n" |
| 102 "*OpenGroup: General/General\n\n" | 102 "*OpenGroup: General/General\n\n" |
| 103 "*OpenUI *ColorModel/Color Model: PickOne\n" | 103 "*OpenUI *ColorModel/Color Model: PickOne\n" |
| 104 "*DefaultColorModel: CMYK\n" | 104 "*DefaultColorModel: CMYK\n" |
| 105 "*ColorModel CMYK/Color: " | 105 "*ColorModel CMYK/Color: " |
| 106 "\"(cmyk) RCsetdevicecolor\"\n" | 106 "\"(cmyk) RCsetdevicecolor\"\n" |
| 107 "*ColorModel Gray/Black and White: " | 107 "*ColorModel Gray/Black and White: " |
| 108 "\"(gray) RCsetdevicecolor\"\n" | 108 "\"(gray) RCsetdevicecolor\"\n" |
| 109 "*CloseUI: *ColorModel\n" | 109 "*CloseUI: *ColorModel\n" |
| 110 "*OpenUI *Duplex/2-Sided Printing: PickOne\n" | 110 "*OpenUI *Duplex/2-Sided Printing: PickOne\n" |
| 111 "*DefaultDuplex: DuplexTumble\n" | 111 "*DefaultDuplex: DuplexTumble\n" |
| 112 "*Duplex None/Off: \"<</Duplex false>>" | 112 "*Duplex None/Off: \"<</Duplex false>>" |
| 113 "setpagedevice\"\n" | 113 "setpagedevice\"\n" |
| 114 "*Duplex DuplexNoTumble/LongEdge: \"" | 114 "*Duplex DuplexNoTumble/LongEdge: \"" |
| 115 "<</Duplex true/Tumble false>>setpagedevice\"\n" | 115 "<</Duplex true/Tumble false>>setpagedevice\"\n" |
| 116 "*Duplex DuplexTumble/ShortEdge: \"" | 116 "*Duplex DuplexTumble/ShortEdge: \"" |
| 117 "<</Duplex true/Tumble true>>setpagedevice\"\n" | 117 "<</Duplex true/Tumble true>>setpagedevice\"\n" |
| 118 "*CloseUI: *Duplex\n\n" | 118 "*CloseUI: *Duplex\n\n" |
| 119 "*CloseGroup: General\n"; | 119 "*CloseGroup: General\n"; |
| 120 | 120 |
| 121 printing::PrinterSemanticCapsAndDefaults caps; | 121 printing::PrinterSemanticCapsAndDefaults caps; |
| 122 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); | 122 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); |
| 123 EXPECT_TRUE(caps.collate_capable); | 123 EXPECT_TRUE(caps.collate_capable); |
| 124 EXPECT_TRUE(caps.collate_default); | 124 EXPECT_TRUE(caps.collate_default); |
| 125 EXPECT_TRUE(caps.copies_capable); | 125 EXPECT_TRUE(caps.copies_capable); |
| 126 EXPECT_TRUE(caps.duplex_capable); | 126 EXPECT_TRUE(caps.duplex_capable); |
| 127 EXPECT_EQ(printing::LONG_EDGE, caps.duplex_default); | 127 EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default); |
| 128 EXPECT_TRUE(caps.color_changeable); | 128 EXPECT_TRUE(caps.color_changeable); |
| 129 EXPECT_TRUE(caps.color_default); | 129 EXPECT_TRUE(caps.color_default); |
| 130 } | 130 } |
| 131 | 131 |
| 132 TEST(PrintBackendCupsHelperTest, TestPpdParsingColorFalseDuplexLongEdge) { | 132 TEST(PrintBackendCupsHelperTest, TestPpdParsingColorFalseDuplexLongEdge) { |
| 133 const char kTestPpdData[] = | 133 const char kTestPpdData[] = |
| 134 "*PPD-Adobe: \"4.3\"\n\n" | 134 "*PPD-Adobe: \"4.3\"\n\n" |
| 135 "*ColorDevice: True\n" | 135 "*ColorDevice: True\n" |
| 136 "*DefaultColorSpace: CMYK\n\n" | 136 "*DefaultColorSpace: CMYK\n\n" |
| 137 "*OpenGroup: General/General\n\n" | 137 "*OpenGroup: General/General\n\n" |
| 138 "*OpenUI *ColorModel/Color Model: PickOne\n" | 138 "*OpenUI *ColorModel/Color Model: PickOne\n" |
| 139 "*DefaultColorModel: Grayscale\n" | 139 "*DefaultColorModel: Grayscale\n" |
| 140 "*ColorModel Color/Color: " | 140 "*ColorModel Color/Color: " |
| 141 "\"%% FoomaticRIPOptionSetting: ColorModel=Color\"\n" | 141 "\"%% FoomaticRIPOptionSetting: ColorModel=Color\"\n" |
| 142 "*FoomaticRIPOptionSetting ColorModel=Color: " | 142 "*FoomaticRIPOptionSetting ColorModel=Color: " |
| 143 "\"JCLDatamode=Color GSCmdLine=Color\"\n" | 143 "\"JCLDatamode=Color GSCmdLine=Color\"\n" |
| 144 "*ColorModel Grayscale/Grayscale: " | 144 "*ColorModel Grayscale/Grayscale: " |
| 145 "\"%% FoomaticRIPOptionSetting: ColorModel=Grayscale\"\n" | 145 "\"%% FoomaticRIPOptionSetting: ColorModel=Grayscale\"\n" |
| 146 "*FoomaticRIPOptionSetting ColorModel=Grayscale: " | 146 "*FoomaticRIPOptionSetting ColorModel=Grayscale: " |
| 147 "\"JCLDatamode=Grayscale GSCmdLine=Grayscale\"\n" | 147 "\"JCLDatamode=Grayscale GSCmdLine=Grayscale\"\n" |
| 148 "*CloseUI: *ColorModel\n" | 148 "*CloseUI: *ColorModel\n" |
| 149 "*OpenUI *Duplex/2-Sided Printing: PickOne\n" | 149 "*OpenUI *Duplex/2-Sided Printing: PickOne\n" |
| 150 "*DefaultDuplex: DuplexTumble\n" | 150 "*DefaultDuplex: DuplexNoTumble\n" |
| 151 "*Duplex None/Off: \"<</Duplex false>>" | 151 "*Duplex None/Off: \"<</Duplex false>>" |
| 152 "setpagedevice\"\n" | 152 "setpagedevice\"\n" |
| 153 "*Duplex DuplexNoTumble/LongEdge: \"" | 153 "*Duplex DuplexNoTumble/LongEdge: \"" |
| 154 "<</Duplex true/Tumble false>>setpagedevice\"\n" | 154 "<</Duplex true/Tumble false>>setpagedevice\"\n" |
| 155 "*Duplex DuplexTumble/ShortEdge: \"" | 155 "*Duplex DuplexTumble/ShortEdge: \"" |
| 156 "<</Duplex true/Tumble true>>setpagedevice\"\n" | 156 "<</Duplex true/Tumble true>>setpagedevice\"\n" |
| 157 "*CloseUI: *Duplex\n\n" | 157 "*CloseUI: *Duplex\n\n" |
| 158 "*CloseGroup: General\n"; | 158 "*CloseGroup: General\n"; |
| 159 | 159 |
| 160 printing::PrinterSemanticCapsAndDefaults caps; | 160 printing::PrinterSemanticCapsAndDefaults caps; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 ASSERT_EQ(2UL, caps.papers.size()); | 192 ASSERT_EQ(2UL, caps.papers.size()); |
| 193 EXPECT_EQ("Letter", caps.papers[0].vendor_id); | 193 EXPECT_EQ("Letter", caps.papers[0].vendor_id); |
| 194 EXPECT_EQ("US Letter", caps.papers[0].display_name); | 194 EXPECT_EQ("US Letter", caps.papers[0].display_name); |
| 195 EXPECT_EQ(215900, caps.papers[0].size_um.width()); | 195 EXPECT_EQ(215900, caps.papers[0].size_um.width()); |
| 196 EXPECT_EQ(279400, caps.papers[0].size_um.height()); | 196 EXPECT_EQ(279400, caps.papers[0].size_um.height()); |
| 197 EXPECT_EQ("Legal", caps.papers[1].vendor_id); | 197 EXPECT_EQ("Legal", caps.papers[1].vendor_id); |
| 198 EXPECT_EQ("US Legal", caps.papers[1].display_name); | 198 EXPECT_EQ("US Legal", caps.papers[1].display_name); |
| 199 EXPECT_EQ(215900, caps.papers[1].size_um.width()); | 199 EXPECT_EQ(215900, caps.papers[1].size_um.width()); |
| 200 EXPECT_EQ(355600, caps.papers[1].size_um.height()); | 200 EXPECT_EQ(355600, caps.papers[1].size_um.height()); |
| 201 } | 201 } |
| 202 |
| 203 TEST(PrintBackendCupsHelperTest, TestPpdParsingBrotherPrinters) { |
| 204 { |
| 205 const char kTestPpdData[] = |
| 206 "*PPD-Adobe: \"4.3\"\n\n" |
| 207 "*ColorDevice: True\n" |
| 208 "*OpenUI *BRPrintQuality/Color/Mono: PickOne\n" |
| 209 "*DefaultBRPrintQuality: Auto\n" |
| 210 "*BRPrintQuality Auto/Auto: \"\"\n" |
| 211 "*BRPrintQuality Color/Color: \"\"\n" |
| 212 "*BRPrintQuality Black/Mono: \"\"\n" |
| 213 "*CloseUI: *BRPrintQuality\n\n"; |
| 214 |
| 215 printing::PrinterSemanticCapsAndDefaults caps; |
| 216 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); |
| 217 EXPECT_TRUE(caps.color_changeable); |
| 218 EXPECT_TRUE(caps.color_default); |
| 219 EXPECT_EQ(printing::BROTHER_COLOR_COLOR, caps.color_model); |
| 220 EXPECT_EQ(printing::BROTHER_COLOR_BLACK, caps.bw_model); |
| 221 } |
| 222 { |
| 223 const char kTestPpdData[] = |
| 224 "*PPD-Adobe: \"4.3\"\n\n" |
| 225 "*ColorDevice: True\n" |
| 226 "*OpenUI *BRMonoColor/Color / Mono: PickOne\n" |
| 227 "*DefaultBRMonoColor: Auto\n" |
| 228 "*BRMonoColor Auto/Auto: \"\"\n" |
| 229 "*BRMonoColor FullColor/Color: \"\"\n" |
| 230 "*BRMonoColor Mono/Mono: \"\"\n" |
| 231 "*CloseUI: *BRMonoColor\n\n"; |
| 232 |
| 233 printing::PrinterSemanticCapsAndDefaults caps; |
| 234 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); |
| 235 EXPECT_TRUE(caps.color_changeable); |
| 236 EXPECT_TRUE(caps.color_default); |
| 237 EXPECT_EQ(printing::BROTHER_COLOR_COLOR, caps.color_model); |
| 238 EXPECT_EQ(printing::BROTHER_COLOR_BLACK, caps.bw_model); |
| 239 } |
| 240 { |
| 241 const char kTestPpdData[] = |
| 242 "*PPD-Adobe: \"4.3\"\n\n" |
| 243 "*ColorDevice: True\n" |
| 244 "*OpenUI *BRDuplex/Two-Sided Printing: PickOne\n" |
| 245 "*OrderDependency: 25 AnySetup *BRDuplex\n" |
| 246 "*DefaultBRDuplex: DuplexTumble\n" |
| 247 "*BRDuplex DuplexTumble/Short-Edge Binding: \"\"\n" |
| 248 "*BRDuplex DuplexNoTumble/Long-Edge Binding: \"\"\n" |
| 249 "*BRDuplex None/Off: \"\"\n" |
| 250 "*CloseUI: *BRDuplex\n\n"; |
| 251 |
| 252 printing::PrinterSemanticCapsAndDefaults caps; |
| 253 EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps)); |
| 254 EXPECT_TRUE(caps.duplex_capable); |
| 255 EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default); |
| 256 } |
| 257 } |
| OLD | NEW |