Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Side by Side Diff: components/cloud_devices/printer_description_unittest.cc

Issue 150993002: Reading, writing of CDD and CJT JSON formats. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « components/cloud_devices/printer_description.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/cloud_devices/printer_description.h"
6
7 #include "base/json/json_reader.h"
8 #include "base/json/json_writer.h"
9 #include "base/strings/string_util.h"
10 #include "base/values.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace cloud_devices {
14
15 namespace printer {
16
17 // Replaces ' with " to allow readable json constants in tests.
18 // Makes sure that same json value represented by same strings to simplify
19 // comparison.
20 std::string NormalizeJson(const std::string& json) {
21 std::string result = json;
22 base::ReplaceChars(result, "'", "\"", &result);
23 scoped_ptr<base::Value> value(base::JSONReader::Read(result));
24 DCHECK(value);
25 base::JSONWriter::Write(value.get(), &result);
26 return result;
27 }
28
29 const char kCdd[] =
30 "{"
31 " 'version': '1.0',"
32 " 'printer': {"
33 " 'supported_content_type': [ {"
34 " 'content_type': 'image/pwg-raster'"
35 " }, {"
36 " 'content_type': 'image/jpeg'"
37 " } ],"
38 " 'color': {"
39 " 'option': [ {"
40 " 'is_default': true,"
41 " 'type': 'STANDARD_COLOR'"
42 " }, {"
43 " 'type': 'STANDARD_MONOCHROME'"
44 " }, {"
45 " 'type': 'CUSTOM_MONOCHROME',"
46 " 'vendor_id': '123',"
47 " 'custom_display_name': 'monochrome'"
48 " } ]"
49 " },"
50 " 'duplex': {"
51 " 'option': [ {"
52 " 'is_default': true,"
53 " 'type': 'LONG_EDGE'"
54 " }, {"
55 " 'type': 'SHORT_EDGE'"
56 " }, {"
57 " 'type': 'NO_DUPLEX'"
58 " } ]"
59 " },"
60 " 'page_orientation': {"
61 " 'option': [ {"
62 " 'type': 'PORTRAIT'"
63 " }, {"
64 " 'type': 'LANDSCAPE'"
65 " }, {"
66 " 'is_default': true,"
67 " 'type': 'AUTO'"
68 " } ]"
69 " },"
70 " 'copies': {"
71 " },"
72 " 'margins': {"
73 " 'option': [ {"
74 " 'is_default': true,"
75 " 'type': 'BORDERLESS',"
76 " 'top_microns': 0,"
77 " 'right_microns': 0,"
78 " 'bottom_microns': 0,"
79 " 'left_microns': 0"
80 " }, {"
81 " 'type': 'STANDARD',"
82 " 'top_microns': 100,"
83 " 'right_microns': 200,"
84 " 'bottom_microns': 300,"
85 " 'left_microns': 400"
86 " }, {"
87 " 'type': 'CUSTOM',"
88 " 'top_microns': 1,"
89 " 'right_microns': 2,"
90 " 'bottom_microns': 3,"
91 " 'left_microns': 4"
92 " } ]"
93 " },"
94 " 'dpi': {"
95 " 'option': [ {"
96 " 'horizontal_dpi': 150,"
97 " 'vertical_dpi': 250"
98 " }, {"
99 " 'is_default': true,"
100 " 'horizontal_dpi': 600,"
101 " 'vertical_dpi': 1600"
102 " } ]"
103 " },"
104 " 'fit_to_page': {"
105 " 'option': [ {"
106 " 'is_default': true,"
107 " 'type': 'NO_FITTING'"
108 " }, {"
109 " 'type': 'FIT_TO_PAGE'"
110 " }, {"
111 " 'type': 'GROW_TO_PAGE'"
112 " }, {"
113 " 'type': 'SHRINK_TO_PAGE'"
114 " }, {"
115 " 'type': 'FILL_PAGE'"
116 " } ]"
117 " },"
118 " 'page_range': {"
119 " },"
120 " 'media_size': {"
121 " 'option': [ {"
122 " 'is_default': true,"
123 " 'name': 'NA_LETTER',"
124 " 'width_microns': 2222,"
125 " 'height_microns': 3333"
126 " }, {"
127 " 'name': 'ISO_A6',"
128 " 'width_microns': 4444,"
129 " 'height_microns': 5555"
130 " }, {"
131 " 'name': 'JPN_YOU4',"
132 " 'width_microns': 6666,"
133 " 'height_microns': 7777"
134 " }, {"
135 " 'width_microns': 1111,"
136 " 'is_continuous_feed': true,"
137 " 'custom_display_name': 'FEED'"
138 " } ]"
139 " },"
140 " 'collate': {"
141 " 'default': false"
142 " },"
143 " 'reverse_order': {"
144 " 'default': true"
145 " }"
146 " }"
147 "}";
148
149
150 const char kDefaultCdd[] =
151 "{"
152 " 'version': '1.0'"
153 "}";
154
155 const char kBadVersionCdd[] =
156 "{"
157 " 'version': '1.1',"
158 " 'printer': {"
159 " }"
160 "}";
161
162 const char kNoDefaultCdd[] =
163 "{"
164 " 'version': '1.0',"
165 " 'printer': {"
166 " 'color': {"
167 " 'option': [ {"
168 " 'type': 'STANDARD_COLOR'"
169 " }, {"
170 " 'type': 'STANDARD_MONOCHROME'"
171 " } ]"
172 " }"
173 " }"
174 "}";
175
176 const char kMultyDefaultCdd[] =
177 "{"
178 " 'version': '1.0',"
179 " 'printer': {"
180 " 'color': {"
181 " 'option': [ {"
182 " 'is_default': true,"
183 " 'type': 'STANDARD_COLOR'"
184 " }, {"
185 " 'is_default': true,"
186 " 'type': 'STANDARD_MONOCHROME'"
187 " } ]"
188 " }"
189 " }"
190 "}";
191
192 const char kCjt[] =
193 "{"
194 " 'version': '1.0',"
195 " 'printer': {"
196 " 'color': {"
197 " 'type': 'STANDARD_MONOCHROME'"
198 " },"
199 " 'duplex': {"
200 " 'type': 'NO_DUPLEX'"
201 " },"
202 " 'page_orientation': {"
203 " 'type': 'LANDSCAPE'"
204 " },"
205 " 'copies': {"
206 " 'copies': 123"
207 " },"
208 " 'margins': {"
209 " 'type': 'CUSTOM',"
210 " 'top_microns': 7,"
211 " 'right_microns': 6,"
212 " 'bottom_microns': 3,"
213 " 'left_microns': 1"
214 " },"
215 " 'dpi': {"
216 " 'horizontal_dpi': 562,"
217 " 'vertical_dpi': 125"
218 " },"
219 " 'fit_to_page': {"
220 " 'type': 'SHRINK_TO_PAGE'"
221 " },"
222 " 'page_range': {"
223 " 'interval': [ {"
224 " 'start': 1,"
225 " 'end': 99"
226 " }, {"
227 " 'start': 150"
228 " } ]"
229 " },"
230 " 'media_size': {"
231 " 'name': 'ISO_C7C6',"
232 " 'width_microns': 4261,"
233 " 'height_microns': 334"
234 " },"
235 " 'collate': {"
236 " 'collate': false"
237 " },"
238 " 'reverse_order': {"
239 " 'reverse_order': true"
240 " }"
241 " }"
242 "}";
243
244 const char kDefaultCjt[] =
245 "{"
246 " 'version': '1.0'"
247 "}";
248
249 const char kBadVersionCjt[] =
250 "{"
251 " 'version': '1.1',"
252 " 'printer': {"
253 " }"
254 "}";
255
256 TEST(PrinterDescriptionTest, CddInit) {
257 CloudDeviceDescription description;
258 EXPECT_EQ(NormalizeJson(kDefaultCdd), NormalizeJson(description.ToString()));
259
260 ContentTypesCapability content_types;
261 ColorCapability color;
262 DuplexCapability duplex;
263 OrientationCapability orientation;
264 MarginsCapability margins;
265 DpiCapability dpi;
266 FitToPageCapability fit_to_page;
267 MediaCapability media;
268 CopiesCapability copies;
269 PageRangeCapability page_range;
270 CollateCapability collate;
271 ReverseCapability reverse;
272
273 EXPECT_FALSE(content_types.LoadFrom(description));
274 EXPECT_FALSE(color.LoadFrom(description));
275 EXPECT_FALSE(duplex.LoadFrom(description));
276 EXPECT_FALSE(orientation.LoadFrom(description));
277 EXPECT_FALSE(copies.LoadFrom(description));
278 EXPECT_FALSE(margins.LoadFrom(description));
279 EXPECT_FALSE(dpi.LoadFrom(description));
280 EXPECT_FALSE(fit_to_page.LoadFrom(description));
281 EXPECT_FALSE(page_range.LoadFrom(description));
282 EXPECT_FALSE(media.LoadFrom(description));
283 EXPECT_FALSE(collate.LoadFrom(description));
284 EXPECT_FALSE(reverse.LoadFrom(description));
285 EXPECT_FALSE(media.LoadFrom(description));
286 }
287
288 TEST(PrinterDescriptionTest, CddInvalid) {
289 CloudDeviceDescription description;
290 ColorCapability color;
291
292 EXPECT_FALSE(description.InitFromString(NormalizeJson(kBadVersionCdd)));
293
294 EXPECT_TRUE(description.InitFromString(NormalizeJson(kNoDefaultCdd)));
295 EXPECT_FALSE(color.LoadFrom(description));
296
297 EXPECT_TRUE(description.InitFromString(NormalizeJson(kMultyDefaultCdd)));
298 EXPECT_FALSE(color.LoadFrom(description));
299 }
300
301 TEST(PrinterDescriptionTest, CddSetAll) {
302 CloudDeviceDescription description;
303
304 ContentTypesCapability content_types;
305 ColorCapability color;
306 DuplexCapability duplex;
307 OrientationCapability orientation;
308 MarginsCapability margins;
309 DpiCapability dpi;
310 FitToPageCapability fit_to_page;
311 MediaCapability media;
312 CopiesCapability copies;
313 PageRangeCapability page_range;
314 CollateCapability collate;
315 ReverseCapability reverse;
316
317 content_types.AddOption("image/pwg-raster");
318 content_types.AddOption("image/jpeg");
319
320 color.AddDefaultOption(Color(STANDARD_COLOR), true);
321 color.AddOption(Color(STANDARD_MONOCHROME));
322 Color custom(CUSTOM_MONOCHROME);
323 custom.vendor_id = "123";
324 custom.custom_display_name = "monochrome";
325 color.AddOption(custom);
326
327 duplex.AddDefaultOption(LONG_EDGE, true);
328 duplex.AddOption(SHORT_EDGE);
329 duplex.AddOption(NO_DUPLEX);
330
331 orientation.AddOption(PORTRAIT);
332 orientation.AddOption(LANDSCAPE);
333 orientation.AddDefaultOption(AUTO_ORIENTATION, true);
334
335 margins.AddDefaultOption(Margins(NO_MARGINS, 0, 0, 0, 0), true);
336 margins.AddOption(Margins(STANDARD_MARGINS, 100, 200, 300, 400));
337 margins.AddOption(Margins(CUSTOM_MARGINS, 1, 2, 3, 4));
338
339 dpi.AddOption(Dpi(150, 250));
340 dpi.AddDefaultOption(Dpi(600, 1600), true);
341
342 fit_to_page.AddDefaultOption(NO_FITTING, true);
343 fit_to_page.AddOption(FIT_TO_PAGE);
344 fit_to_page.AddOption(GROW_TO_PAGE);
345 fit_to_page.AddOption(SHRINK_TO_PAGE);
346 fit_to_page.AddOption(FILL_PAGE);
347
348 media.AddDefaultOption(Media(NA_LETTER, 2222, 3333), true);
349 media.AddOption(Media(ISO_A6, 4444, 5555));
350 media.AddOption(Media(JPN_YOU4, 6666, 7777));
351 media.AddOption(Media("FEED", 1111, 0));
352
353 collate.set_default_value(false);
354 reverse.set_default_value(true);
355
356 content_types.SaveTo(&description);
357 color.SaveTo(&description);
358 duplex.SaveTo(&description);
359 orientation.SaveTo(&description);
360 copies.SaveTo(&description);
361 margins.SaveTo(&description);
362 dpi.SaveTo(&description);
363 fit_to_page.SaveTo(&description);
364 page_range.SaveTo(&description);
365 media.SaveTo(&description);
366 collate.SaveTo(&description);
367 reverse.SaveTo(&description);
368
369 EXPECT_EQ(NormalizeJson(kCdd), NormalizeJson(description.ToString()));
370 }
371
372 TEST(PrinterDescriptionTest, CddGetAll) {
373 CloudDeviceDescription description;
374 ASSERT_TRUE(description.InitFromString(NormalizeJson(kCdd)));
375
376 ContentTypesCapability content_types;
377 ColorCapability color;
378 DuplexCapability duplex;
379 OrientationCapability orientation;
380 MarginsCapability margins;
381 DpiCapability dpi;
382 FitToPageCapability fit_to_page;
383 MediaCapability media;
384 CopiesCapability copies;
385 PageRangeCapability page_range;
386 CollateCapability collate;
387 ReverseCapability reverse;
388
389 EXPECT_TRUE(content_types.LoadFrom(description));
390 EXPECT_TRUE(color.LoadFrom(description));
391 EXPECT_TRUE(duplex.LoadFrom(description));
392 EXPECT_TRUE(orientation.LoadFrom(description));
393 EXPECT_TRUE(copies.LoadFrom(description));
394 EXPECT_TRUE(margins.LoadFrom(description));
395 EXPECT_TRUE(dpi.LoadFrom(description));
396 EXPECT_TRUE(fit_to_page.LoadFrom(description));
397 EXPECT_TRUE(page_range.LoadFrom(description));
398 EXPECT_TRUE(media.LoadFrom(description));
399 EXPECT_TRUE(collate.LoadFrom(description));
400 EXPECT_TRUE(reverse.LoadFrom(description));
401 EXPECT_TRUE(media.LoadFrom(description));
402
403 EXPECT_TRUE(content_types.Contains("image/pwg-raster"));
404 EXPECT_TRUE(content_types.Contains("image/jpeg"));
405
406 EXPECT_TRUE(color.Contains(Color(STANDARD_COLOR)));
407 EXPECT_TRUE(color.Contains(Color(STANDARD_MONOCHROME)));
408 Color custom(CUSTOM_MONOCHROME);
409 custom.vendor_id = "123";
410 custom.custom_display_name = "monochrome";
411 EXPECT_TRUE(color.Contains(custom));
412 EXPECT_EQ(Color(STANDARD_COLOR), color.GetDefault());
413
414 EXPECT_TRUE(duplex.Contains(LONG_EDGE));
415 EXPECT_TRUE(duplex.Contains(SHORT_EDGE));
416 EXPECT_TRUE(duplex.Contains(NO_DUPLEX));
417 EXPECT_EQ(LONG_EDGE, duplex.GetDefault());
418
419 EXPECT_TRUE(orientation.Contains(PORTRAIT));
420 EXPECT_TRUE(orientation.Contains(LANDSCAPE));
421 EXPECT_TRUE(orientation.Contains(AUTO_ORIENTATION));
422 EXPECT_EQ(AUTO_ORIENTATION, orientation.GetDefault());
423
424 EXPECT_TRUE(margins.Contains(Margins(NO_MARGINS, 0, 0, 0, 0)));
425 EXPECT_TRUE(margins.Contains(Margins(STANDARD_MARGINS, 100, 200, 300, 400)));
426 EXPECT_TRUE(margins.Contains(Margins(CUSTOM_MARGINS, 1, 2, 3, 4)));
427 EXPECT_EQ(Margins(NO_MARGINS, 0, 0, 0, 0), margins.GetDefault());
428
429 EXPECT_TRUE(dpi.Contains(Dpi(150, 250)));
430 EXPECT_TRUE(dpi.Contains(Dpi(600, 1600)));
431 EXPECT_EQ(Dpi(600, 1600), dpi.GetDefault());
432
433 EXPECT_TRUE(fit_to_page.Contains(NO_FITTING));
434 EXPECT_TRUE(fit_to_page.Contains(FIT_TO_PAGE));
435 EXPECT_TRUE(fit_to_page.Contains(GROW_TO_PAGE));
436 EXPECT_TRUE(fit_to_page.Contains(SHRINK_TO_PAGE));
437 EXPECT_TRUE(fit_to_page.Contains(FILL_PAGE));
438 EXPECT_EQ(NO_FITTING, fit_to_page.GetDefault());
439
440 EXPECT_TRUE(media.Contains(Media(NA_LETTER, 2222, 3333)));
441 EXPECT_TRUE(media.Contains(Media(ISO_A6, 4444, 5555)));
442 EXPECT_TRUE(media.Contains(Media(JPN_YOU4, 6666, 7777)));
443 EXPECT_TRUE(media.Contains(Media("FEED", 1111, 0)));
444 EXPECT_EQ(Media(NA_LETTER, 2222, 3333), media.GetDefault());
445
446 EXPECT_FALSE(collate.default_value());
447 EXPECT_TRUE(reverse.default_value());
448
449 EXPECT_EQ(NormalizeJson(kCdd), NormalizeJson(description.ToString()));
450 }
451
452 TEST(PrinterDescriptionTest, CjtInit) {
453 CloudDeviceDescription description;
454 EXPECT_EQ(NormalizeJson(kDefaultCjt), NormalizeJson(description.ToString()));
455
456 ColorTicketItem color;
457 DuplexTicketItem duplex;
458 OrientationTicketItem orientation;
459 MarginsTicketItem margins;
460 DpiTicketItem dpi;
461 FitToPageTicketItem fit_to_page;
462 MediaTicketItem media;
463 CopiesTicketItem copies;
464 PageRangeTicketItem page_range;
465 CollateTicketItem collate;
466 ReverseTicketItem reverse;
467
468 EXPECT_FALSE(color.LoadFrom(description));
469 EXPECT_FALSE(duplex.LoadFrom(description));
470 EXPECT_FALSE(orientation.LoadFrom(description));
471 EXPECT_FALSE(copies.LoadFrom(description));
472 EXPECT_FALSE(margins.LoadFrom(description));
473 EXPECT_FALSE(dpi.LoadFrom(description));
474 EXPECT_FALSE(fit_to_page.LoadFrom(description));
475 EXPECT_FALSE(page_range.LoadFrom(description));
476 EXPECT_FALSE(media.LoadFrom(description));
477 EXPECT_FALSE(collate.LoadFrom(description));
478 EXPECT_FALSE(reverse.LoadFrom(description));
479 EXPECT_FALSE(media.LoadFrom(description));
480 }
481
482 TEST(PrinterDescriptionTest, CjtInvalid) {
483 CloudDeviceDescription ticket;
484 EXPECT_FALSE(ticket.InitFromString(NormalizeJson(kBadVersionCjt)));
485 }
486
487 TEST(PrinterDescriptionTest, GjtSetAll) {
488 CloudDeviceDescription description;
489
490 ColorTicketItem color;
491 DuplexTicketItem duplex;
492 OrientationTicketItem orientation;
493 MarginsTicketItem margins;
494 DpiTicketItem dpi;
495 FitToPageTicketItem fit_to_page;
496 MediaTicketItem media;
497 CopiesTicketItem copies;
498 PageRangeTicketItem page_range;
499 CollateTicketItem collate;
500 ReverseTicketItem reverse;
501
502 color.set_value(Color(STANDARD_MONOCHROME));
503 duplex.set_value(NO_DUPLEX);
504 orientation.set_value(LANDSCAPE);
505 copies.set_value(123);
506 margins.set_value(Margins(CUSTOM_MARGINS, 7, 6, 3, 1));
507 dpi.set_value(Dpi(562, 125));
508 fit_to_page.set_value(SHRINK_TO_PAGE);
509 PageRange page_ranges;
510 page_ranges.push_back(Interval(1, 99));
511 page_ranges.push_back(Interval(150));
512 page_range.set_value(page_ranges);
513 media.set_value(Media(ISO_C7C6, 4261, 334));
514 collate.set_value(false);
515 reverse.set_value(true);
516
517 color.SaveTo(&description);
518 duplex.SaveTo(&description);
519 orientation.SaveTo(&description);
520 copies.SaveTo(&description);
521 margins.SaveTo(&description);
522 dpi.SaveTo(&description);
523 fit_to_page.SaveTo(&description);
524 page_range.SaveTo(&description);
525 media.SaveTo(&description);
526 collate.SaveTo(&description);
527 reverse.SaveTo(&description);
528
529 EXPECT_EQ(NormalizeJson(kCjt), NormalizeJson(description.ToString()));
530 }
531
532 TEST(PrinterDescriptionTest, CjtGetAll) {
533 CloudDeviceDescription description;
534 ASSERT_TRUE(description.InitFromString(NormalizeJson(kCjt)));
535
536 ColorTicketItem color;
537 DuplexTicketItem duplex;
538 OrientationTicketItem orientation;
539 MarginsTicketItem margins;
540 DpiTicketItem dpi;
541 FitToPageTicketItem fit_to_page;
542 MediaTicketItem media;
543 CopiesTicketItem copies;
544 PageRangeTicketItem page_range;
545 CollateTicketItem collate;
546 ReverseTicketItem reverse;
547
548 EXPECT_TRUE(color.LoadFrom(description));
549 EXPECT_TRUE(duplex.LoadFrom(description));
550 EXPECT_TRUE(orientation.LoadFrom(description));
551 EXPECT_TRUE(copies.LoadFrom(description));
552 EXPECT_TRUE(margins.LoadFrom(description));
553 EXPECT_TRUE(dpi.LoadFrom(description));
554 EXPECT_TRUE(fit_to_page.LoadFrom(description));
555 EXPECT_TRUE(page_range.LoadFrom(description));
556 EXPECT_TRUE(media.LoadFrom(description));
557 EXPECT_TRUE(collate.LoadFrom(description));
558 EXPECT_TRUE(reverse.LoadFrom(description));
559 EXPECT_TRUE(media.LoadFrom(description));
560
561 EXPECT_EQ(color.value(), Color(STANDARD_MONOCHROME));
562 EXPECT_EQ(duplex.value(), NO_DUPLEX);
563 EXPECT_EQ(orientation.value(), LANDSCAPE);
564 EXPECT_EQ(copies.value(), 123);
565 EXPECT_EQ(margins.value(), Margins(CUSTOM_MARGINS, 7, 6, 3, 1));
566 EXPECT_EQ(dpi.value(), Dpi(562, 125));
567 EXPECT_EQ(fit_to_page.value(), SHRINK_TO_PAGE);
568 PageRange page_ranges;
569 page_ranges.push_back(Interval(1, 99));
570 page_ranges.push_back(Interval(150));
571 EXPECT_EQ(page_range.value(), page_ranges);
572 EXPECT_EQ(media.value(), Media(ISO_C7C6, 4261, 334));
573 EXPECT_FALSE(collate.value());
574 EXPECT_TRUE(reverse.value());
575
576 EXPECT_EQ(NormalizeJson(kCjt), NormalizeJson(description.ToString()));
577 }
578
579 } // namespace printer
580
581 } // namespace cloud_devices
OLDNEW
« no previous file with comments | « components/cloud_devices/printer_description.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698