Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / components / cloud_devices / common / printer_description_unittest.cc
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/common/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     "    'pwg_raster_config' : {"
39     "      'document_sheet_back' : 'MANUAL_TUMBLE',"
40     "      'reverse_order_streaming': true"
41     "    },"
42     "    'color': {"
43     "      'option': [ {"
44     "        'is_default': true,"
45     "        'type': 'STANDARD_COLOR'"
46     "      }, {"
47     "        'type': 'STANDARD_MONOCHROME'"
48     "      }, {"
49     "        'type': 'CUSTOM_MONOCHROME',"
50     "        'vendor_id': '123',"
51     "        'custom_display_name': 'monochrome'"
52     "      } ]"
53     "    },"
54     "    'duplex': {"
55     "      'option': [ {"
56     "        'is_default': true,"
57     "        'type': 'LONG_EDGE'"
58     "       }, {"
59     "        'type': 'SHORT_EDGE'"
60     "       }, {"
61     "        'type': 'NO_DUPLEX'"
62     "       } ]"
63     "    },"
64     "    'page_orientation': {"
65     "      'option': [ {"
66     "        'type': 'PORTRAIT'"
67     "      }, {"
68     "        'type': 'LANDSCAPE'"
69     "      }, {"
70     "        'is_default': true,"
71     "        'type': 'AUTO'"
72     "      } ]"
73     "    },"
74     "    'copies': {"
75     "    },"
76     "    'margins': {"
77     "      'option': [ {"
78     "        'is_default': true,"
79     "        'type': 'BORDERLESS',"
80     "        'top_microns': 0,"
81     "        'right_microns': 0,"
82     "        'bottom_microns': 0,"
83     "        'left_microns': 0"
84     "      }, {"
85     "         'type': 'STANDARD',"
86     "         'top_microns': 100,"
87     "         'right_microns': 200,"
88     "         'bottom_microns': 300,"
89     "         'left_microns': 400"
90     "      }, {"
91     "         'type': 'CUSTOM',"
92     "         'top_microns': 1,"
93     "         'right_microns': 2,"
94     "         'bottom_microns': 3,"
95     "         'left_microns': 4"
96     "      } ]"
97     "    },"
98     "    'dpi': {"
99     "      'option': [ {"
100     "        'horizontal_dpi': 150,"
101     "        'vertical_dpi': 250"
102     "      }, {"
103     "        'is_default': true,"
104     "        'horizontal_dpi': 600,"
105     "        'vertical_dpi': 1600"
106     "      } ]"
107     "    },"
108     "    'fit_to_page': {"
109     "      'option': [ {"
110     "        'is_default': true,"
111     "        'type': 'NO_FITTING'"
112     "      }, {"
113     "        'type': 'FIT_TO_PAGE'"
114     "      }, {"
115     "        'type': 'GROW_TO_PAGE'"
116     "      }, {"
117     "        'type': 'SHRINK_TO_PAGE'"
118     "      }, {"
119     "        'type': 'FILL_PAGE'"
120     "      } ]"
121     "    },"
122     "    'page_range': {"
123     "    },"
124     "    'media_size': {"
125     "      'option': [ {"
126     "        'is_default': true,"
127     "        'name': 'NA_LETTER',"
128     "        'width_microns': 2222,"
129     "        'height_microns': 3333"
130     "      }, {"
131     "        'name': 'ISO_A6',"
132     "        'width_microns': 4444,"
133     "        'height_microns': 5555"
134     "      }, {"
135     "        'name': 'JPN_YOU4',"
136     "        'width_microns': 6666,"
137     "        'height_microns': 7777"
138     "      }, {"
139     "        'width_microns': 1111,"
140     "        'is_continuous_feed': true,"
141     "        'custom_display_name': 'FEED'"
142     "      } ]"
143     "    },"
144     "    'collate': {"
145     "      'default': false"
146     "    },"
147     "    'reverse_order': {"
148     "      'default': true"
149     "    }"
150     "  }"
151     "}";
152
153 const char kDefaultCdd[] =
154     "{"
155     "  'version': '1.0'"
156     "}";
157
158 const char kBadVersionCdd[] =
159     "{"
160     "  'version': '1.1',"
161     "  'printer': {"
162     "  }"
163     "}";
164
165 const char kNoDefaultCdd[] =
166     "{"
167     "  'version': '1.0',"
168     "  'printer': {"
169     "    'color': {"
170     "      'option': [ {"
171     "        'type': 'STANDARD_COLOR'"
172     "      }, {"
173     "        'type': 'STANDARD_MONOCHROME'"
174     "      } ]"
175     "    }"
176     "  }"
177     "}";
178
179 const char kMultyDefaultCdd[] =
180     "{"
181     "  'version': '1.0',"
182     "  'printer': {"
183     "    'color': {"
184     "      'option': [ {"
185     "        'is_default': true,"
186     "        'type': 'STANDARD_COLOR'"
187     "      }, {"
188     "        'is_default': true,"
189     "        'type': 'STANDARD_MONOCHROME'"
190     "      } ]"
191     "    }"
192     "  }"
193     "}";
194
195 const char kCjt[] =
196     "{"
197     "  'version': '1.0',"
198     "  'print': {"
199     "    'pwg_raster_config' : {"
200     "      'document_sheet_back' : 'MANUAL_TUMBLE',"
201     "      'reverse_order_streaming': true"
202     "    },"
203     "    'color': {"
204     "      'type': 'STANDARD_MONOCHROME'"
205     "    },"
206     "    'duplex': {"
207     "      'type': 'NO_DUPLEX'"
208     "    },"
209     "    'page_orientation': {"
210     "      'type': 'LANDSCAPE'"
211     "    },"
212     "    'copies': {"
213     "      'copies': 123"
214     "    },"
215     "    'margins': {"
216     "       'type': 'CUSTOM',"
217     "       'top_microns': 7,"
218     "       'right_microns': 6,"
219     "       'bottom_microns': 3,"
220     "       'left_microns': 1"
221     "    },"
222     "    'dpi': {"
223     "      'horizontal_dpi': 562,"
224     "      'vertical_dpi': 125"
225     "    },"
226     "    'fit_to_page': {"
227     "      'type': 'SHRINK_TO_PAGE'"
228     "    },"
229     "    'page_range': {"
230     "      'interval': [ {"
231     "        'start': 1,"
232     "        'end': 99"
233     "       }, {"
234     "        'start': 150"
235     "       } ]"
236     "    },"
237     "    'media_size': {"
238     "      'name': 'ISO_C7C6',"
239     "      'width_microns': 4261,"
240     "      'height_microns': 334"
241     "    },"
242     "    'collate': {"
243     "      'collate': false"
244     "    },"
245     "    'reverse_order': {"
246     "      'reverse_order': true"
247     "    }"
248     "  }"
249     "}";
250
251 const char kDefaultCjt[] =
252     "{"
253     "  'version': '1.0'"
254     "}";
255
256 const char kBadVersionCjt[] =
257     "{"
258     "  'version': '1.1',"
259     "  'print': {"
260     "  }"
261     "}";
262
263 TEST(PrinterDescriptionTest, CddInit) {
264   CloudDeviceDescription description;
265   EXPECT_EQ(NormalizeJson(kDefaultCdd), NormalizeJson(description.ToString()));
266
267   ContentTypesCapability content_types;
268   PwgRasterConfigCapability pwg_raster;
269   ColorCapability color;
270   DuplexCapability duplex;
271   OrientationCapability orientation;
272   MarginsCapability margins;
273   DpiCapability dpi;
274   FitToPageCapability fit_to_page;
275   MediaCapability media;
276   CopiesCapability copies;
277   PageRangeCapability page_range;
278   CollateCapability collate;
279   ReverseCapability reverse;
280
281   EXPECT_FALSE(content_types.LoadFrom(description));
282   EXPECT_FALSE(pwg_raster.LoadFrom(description));
283   EXPECT_FALSE(color.LoadFrom(description));
284   EXPECT_FALSE(duplex.LoadFrom(description));
285   EXPECT_FALSE(orientation.LoadFrom(description));
286   EXPECT_FALSE(copies.LoadFrom(description));
287   EXPECT_FALSE(margins.LoadFrom(description));
288   EXPECT_FALSE(dpi.LoadFrom(description));
289   EXPECT_FALSE(fit_to_page.LoadFrom(description));
290   EXPECT_FALSE(page_range.LoadFrom(description));
291   EXPECT_FALSE(media.LoadFrom(description));
292   EXPECT_FALSE(collate.LoadFrom(description));
293   EXPECT_FALSE(reverse.LoadFrom(description));
294   EXPECT_FALSE(media.LoadFrom(description));
295 }
296
297 TEST(PrinterDescriptionTest, CddInvalid) {
298   CloudDeviceDescription description;
299   ColorCapability color;
300
301   EXPECT_FALSE(description.InitFromString(NormalizeJson(kBadVersionCdd)));
302
303   EXPECT_TRUE(description.InitFromString(NormalizeJson(kNoDefaultCdd)));
304   EXPECT_FALSE(color.LoadFrom(description));
305
306   EXPECT_TRUE(description.InitFromString(NormalizeJson(kMultyDefaultCdd)));
307   EXPECT_FALSE(color.LoadFrom(description));
308 }
309
310 TEST(PrinterDescriptionTest, CddSetAll) {
311   CloudDeviceDescription description;
312
313   ContentTypesCapability content_types;
314   PwgRasterConfigCapability pwg_raster_config;
315   ColorCapability color;
316   DuplexCapability duplex;
317   OrientationCapability orientation;
318   MarginsCapability margins;
319   DpiCapability dpi;
320   FitToPageCapability fit_to_page;
321   MediaCapability media;
322   CopiesCapability copies;
323   PageRangeCapability page_range;
324   CollateCapability collate;
325   ReverseCapability reverse;
326
327   content_types.AddOption("image/pwg-raster");
328   content_types.AddOption("image/jpeg");
329
330   PwgRasterConfig custom_raster;
331   custom_raster.document_sheet_back = MANUAL_TUMBLE;
332   custom_raster.reverse_order_streaming = true;
333   custom_raster.rotate_all_pages = false;
334   pwg_raster_config.set_value(custom_raster);
335
336   color.AddDefaultOption(Color(STANDARD_COLOR), true);
337   color.AddOption(Color(STANDARD_MONOCHROME));
338   Color custom(CUSTOM_MONOCHROME);
339   custom.vendor_id = "123";
340   custom.custom_display_name = "monochrome";
341   color.AddOption(custom);
342
343   duplex.AddDefaultOption(LONG_EDGE, true);
344   duplex.AddOption(SHORT_EDGE);
345   duplex.AddOption(NO_DUPLEX);
346
347   orientation.AddOption(PORTRAIT);
348   orientation.AddOption(LANDSCAPE);
349   orientation.AddDefaultOption(AUTO_ORIENTATION, true);
350
351   margins.AddDefaultOption(Margins(NO_MARGINS, 0, 0, 0, 0), true);
352   margins.AddOption(Margins(STANDARD_MARGINS, 100, 200, 300, 400));
353   margins.AddOption(Margins(CUSTOM_MARGINS, 1, 2, 3, 4));
354
355   dpi.AddOption(Dpi(150, 250));
356   dpi.AddDefaultOption(Dpi(600, 1600), true);
357
358   fit_to_page.AddDefaultOption(NO_FITTING, true);
359   fit_to_page.AddOption(FIT_TO_PAGE);
360   fit_to_page.AddOption(GROW_TO_PAGE);
361   fit_to_page.AddOption(SHRINK_TO_PAGE);
362   fit_to_page.AddOption(FILL_PAGE);
363
364   media.AddDefaultOption(Media(NA_LETTER, 2222, 3333), true);
365   media.AddOption(Media(ISO_A6, 4444, 5555));
366   media.AddOption(Media(JPN_YOU4, 6666, 7777));
367   media.AddOption(Media("FEED", 1111, 0));
368
369   collate.set_default_value(false);
370   reverse.set_default_value(true);
371
372   content_types.SaveTo(&description);
373   color.SaveTo(&description);
374   duplex.SaveTo(&description);
375   orientation.SaveTo(&description);
376   copies.SaveTo(&description);
377   margins.SaveTo(&description);
378   dpi.SaveTo(&description);
379   fit_to_page.SaveTo(&description);
380   page_range.SaveTo(&description);
381   media.SaveTo(&description);
382   collate.SaveTo(&description);
383   reverse.SaveTo(&description);
384   pwg_raster_config.SaveTo(&description);
385
386   EXPECT_EQ(NormalizeJson(kCdd), NormalizeJson(description.ToString()));
387 }
388
389 TEST(PrinterDescriptionTest, CddGetAll) {
390   CloudDeviceDescription description;
391   ASSERT_TRUE(description.InitFromString(NormalizeJson(kCdd)));
392
393   ContentTypesCapability content_types;
394   PwgRasterConfigCapability pwg_raster_config;
395   ColorCapability color;
396   DuplexCapability duplex;
397   OrientationCapability orientation;
398   MarginsCapability margins;
399   DpiCapability dpi;
400   FitToPageCapability fit_to_page;
401   MediaCapability media;
402   CopiesCapability copies;
403   PageRangeCapability page_range;
404   CollateCapability collate;
405   ReverseCapability reverse;
406
407   EXPECT_TRUE(content_types.LoadFrom(description));
408   EXPECT_TRUE(color.LoadFrom(description));
409   EXPECT_TRUE(duplex.LoadFrom(description));
410   EXPECT_TRUE(orientation.LoadFrom(description));
411   EXPECT_TRUE(copies.LoadFrom(description));
412   EXPECT_TRUE(margins.LoadFrom(description));
413   EXPECT_TRUE(dpi.LoadFrom(description));
414   EXPECT_TRUE(fit_to_page.LoadFrom(description));
415   EXPECT_TRUE(page_range.LoadFrom(description));
416   EXPECT_TRUE(media.LoadFrom(description));
417   EXPECT_TRUE(collate.LoadFrom(description));
418   EXPECT_TRUE(reverse.LoadFrom(description));
419   EXPECT_TRUE(media.LoadFrom(description));
420   EXPECT_TRUE(pwg_raster_config.LoadFrom(description));
421
422   EXPECT_TRUE(content_types.Contains("image/pwg-raster"));
423   EXPECT_TRUE(content_types.Contains("image/jpeg"));
424
425   EXPECT_EQ(MANUAL_TUMBLE, pwg_raster_config.value().document_sheet_back);
426   EXPECT_TRUE(pwg_raster_config.value().reverse_order_streaming);
427   EXPECT_FALSE(pwg_raster_config.value().rotate_all_pages);
428
429   EXPECT_TRUE(color.Contains(Color(STANDARD_COLOR)));
430   EXPECT_TRUE(color.Contains(Color(STANDARD_MONOCHROME)));
431   Color custom(CUSTOM_MONOCHROME);
432   custom.vendor_id = "123";
433   custom.custom_display_name = "monochrome";
434   EXPECT_TRUE(color.Contains(custom));
435   EXPECT_EQ(Color(STANDARD_COLOR), color.GetDefault());
436
437   EXPECT_TRUE(duplex.Contains(LONG_EDGE));
438   EXPECT_TRUE(duplex.Contains(SHORT_EDGE));
439   EXPECT_TRUE(duplex.Contains(NO_DUPLEX));
440   EXPECT_EQ(LONG_EDGE, duplex.GetDefault());
441
442   EXPECT_TRUE(orientation.Contains(PORTRAIT));
443   EXPECT_TRUE(orientation.Contains(LANDSCAPE));
444   EXPECT_TRUE(orientation.Contains(AUTO_ORIENTATION));
445   EXPECT_EQ(AUTO_ORIENTATION, orientation.GetDefault());
446
447   EXPECT_TRUE(margins.Contains(Margins(NO_MARGINS, 0, 0, 0, 0)));
448   EXPECT_TRUE(margins.Contains(Margins(STANDARD_MARGINS, 100, 200, 300, 400)));
449   EXPECT_TRUE(margins.Contains(Margins(CUSTOM_MARGINS, 1, 2, 3, 4)));
450   EXPECT_EQ(Margins(NO_MARGINS, 0, 0, 0, 0), margins.GetDefault());
451
452   EXPECT_TRUE(dpi.Contains(Dpi(150, 250)));
453   EXPECT_TRUE(dpi.Contains(Dpi(600, 1600)));
454   EXPECT_EQ(Dpi(600, 1600), dpi.GetDefault());
455
456   EXPECT_TRUE(fit_to_page.Contains(NO_FITTING));
457   EXPECT_TRUE(fit_to_page.Contains(FIT_TO_PAGE));
458   EXPECT_TRUE(fit_to_page.Contains(GROW_TO_PAGE));
459   EXPECT_TRUE(fit_to_page.Contains(SHRINK_TO_PAGE));
460   EXPECT_TRUE(fit_to_page.Contains(FILL_PAGE));
461   EXPECT_EQ(NO_FITTING, fit_to_page.GetDefault());
462
463   EXPECT_TRUE(media.Contains(Media(NA_LETTER, 2222, 3333)));
464   EXPECT_TRUE(media.Contains(Media(ISO_A6, 4444, 5555)));
465   EXPECT_TRUE(media.Contains(Media(JPN_YOU4, 6666, 7777)));
466   EXPECT_TRUE(media.Contains(Media("FEED", 1111, 0)));
467   EXPECT_EQ(Media(NA_LETTER, 2222, 3333), media.GetDefault());
468
469   EXPECT_FALSE(collate.default_value());
470   EXPECT_TRUE(reverse.default_value());
471
472   EXPECT_EQ(NormalizeJson(kCdd), NormalizeJson(description.ToString()));
473 }
474
475 TEST(PrinterDescriptionTest, CjtInit) {
476   CloudDeviceDescription description;
477   EXPECT_EQ(NormalizeJson(kDefaultCjt), NormalizeJson(description.ToString()));
478
479   PwgRasterConfigTicketItem pwg_raster_config;
480   ColorTicketItem color;
481   DuplexTicketItem duplex;
482   OrientationTicketItem orientation;
483   MarginsTicketItem margins;
484   DpiTicketItem dpi;
485   FitToPageTicketItem fit_to_page;
486   MediaTicketItem media;
487   CopiesTicketItem copies;
488   PageRangeTicketItem page_range;
489   CollateTicketItem collate;
490   ReverseTicketItem reverse;
491
492   EXPECT_FALSE(pwg_raster_config.LoadFrom(description));
493   EXPECT_FALSE(color.LoadFrom(description));
494   EXPECT_FALSE(duplex.LoadFrom(description));
495   EXPECT_FALSE(orientation.LoadFrom(description));
496   EXPECT_FALSE(copies.LoadFrom(description));
497   EXPECT_FALSE(margins.LoadFrom(description));
498   EXPECT_FALSE(dpi.LoadFrom(description));
499   EXPECT_FALSE(fit_to_page.LoadFrom(description));
500   EXPECT_FALSE(page_range.LoadFrom(description));
501   EXPECT_FALSE(media.LoadFrom(description));
502   EXPECT_FALSE(collate.LoadFrom(description));
503   EXPECT_FALSE(reverse.LoadFrom(description));
504   EXPECT_FALSE(media.LoadFrom(description));
505 }
506
507 TEST(PrinterDescriptionTest, CjtInvalid) {
508   CloudDeviceDescription ticket;
509   EXPECT_FALSE(ticket.InitFromString(NormalizeJson(kBadVersionCjt)));
510 }
511
512 TEST(PrinterDescriptionTest, CjtSetAll) {
513   CloudDeviceDescription description;
514
515   PwgRasterConfigTicketItem pwg_raster_config;
516   ColorTicketItem color;
517   DuplexTicketItem duplex;
518   OrientationTicketItem orientation;
519   MarginsTicketItem margins;
520   DpiTicketItem dpi;
521   FitToPageTicketItem fit_to_page;
522   MediaTicketItem media;
523   CopiesTicketItem copies;
524   PageRangeTicketItem page_range;
525   CollateTicketItem collate;
526   ReverseTicketItem reverse;
527
528   PwgRasterConfig custom_raster;
529   custom_raster.document_sheet_back = MANUAL_TUMBLE;
530   custom_raster.reverse_order_streaming = true;
531   custom_raster.rotate_all_pages = false;
532   pwg_raster_config.set_value(custom_raster);
533   color.set_value(Color(STANDARD_MONOCHROME));
534   duplex.set_value(NO_DUPLEX);
535   orientation.set_value(LANDSCAPE);
536   copies.set_value(123);
537   margins.set_value(Margins(CUSTOM_MARGINS, 7, 6, 3, 1));
538   dpi.set_value(Dpi(562, 125));
539   fit_to_page.set_value(SHRINK_TO_PAGE);
540   PageRange page_ranges;
541   page_ranges.push_back(Interval(1, 99));
542   page_ranges.push_back(Interval(150));
543   page_range.set_value(page_ranges);
544   media.set_value(Media(ISO_C7C6, 4261, 334));
545   collate.set_value(false);
546   reverse.set_value(true);
547
548   pwg_raster_config.SaveTo(&description);
549   color.SaveTo(&description);
550   duplex.SaveTo(&description);
551   orientation.SaveTo(&description);
552   copies.SaveTo(&description);
553   margins.SaveTo(&description);
554   dpi.SaveTo(&description);
555   fit_to_page.SaveTo(&description);
556   page_range.SaveTo(&description);
557   media.SaveTo(&description);
558   collate.SaveTo(&description);
559   reverse.SaveTo(&description);
560
561   EXPECT_EQ(NormalizeJson(kCjt), NormalizeJson(description.ToString()));
562 }
563
564 TEST(PrinterDescriptionTest, CjtGetAll) {
565   CloudDeviceDescription description;
566   ASSERT_TRUE(description.InitFromString(NormalizeJson(kCjt)));
567
568   ColorTicketItem color;
569   DuplexTicketItem duplex;
570   OrientationTicketItem orientation;
571   MarginsTicketItem margins;
572   DpiTicketItem dpi;
573   FitToPageTicketItem fit_to_page;
574   MediaTicketItem media;
575   CopiesTicketItem copies;
576   PageRangeTicketItem page_range;
577   CollateTicketItem collate;
578   ReverseTicketItem reverse;
579   PwgRasterConfigTicketItem pwg_raster_config;
580
581   EXPECT_TRUE(pwg_raster_config.LoadFrom(description));
582   EXPECT_TRUE(color.LoadFrom(description));
583   EXPECT_TRUE(duplex.LoadFrom(description));
584   EXPECT_TRUE(orientation.LoadFrom(description));
585   EXPECT_TRUE(copies.LoadFrom(description));
586   EXPECT_TRUE(margins.LoadFrom(description));
587   EXPECT_TRUE(dpi.LoadFrom(description));
588   EXPECT_TRUE(fit_to_page.LoadFrom(description));
589   EXPECT_TRUE(page_range.LoadFrom(description));
590   EXPECT_TRUE(media.LoadFrom(description));
591   EXPECT_TRUE(collate.LoadFrom(description));
592   EXPECT_TRUE(reverse.LoadFrom(description));
593   EXPECT_TRUE(media.LoadFrom(description));
594
595   EXPECT_EQ(MANUAL_TUMBLE, pwg_raster_config.value().document_sheet_back);
596   EXPECT_TRUE(pwg_raster_config.value().reverse_order_streaming);
597   EXPECT_FALSE(pwg_raster_config.value().rotate_all_pages);
598   EXPECT_EQ(color.value(), Color(STANDARD_MONOCHROME));
599   EXPECT_EQ(duplex.value(), NO_DUPLEX);
600   EXPECT_EQ(orientation.value(), LANDSCAPE);
601   EXPECT_EQ(copies.value(), 123);
602   EXPECT_EQ(margins.value(), Margins(CUSTOM_MARGINS, 7, 6, 3, 1));
603   EXPECT_EQ(dpi.value(), Dpi(562, 125));
604   EXPECT_EQ(fit_to_page.value(), SHRINK_TO_PAGE);
605   PageRange page_ranges;
606   page_ranges.push_back(Interval(1, 99));
607   page_ranges.push_back(Interval(150));
608   EXPECT_EQ(page_range.value(), page_ranges);
609   EXPECT_EQ(media.value(), Media(ISO_C7C6, 4261, 334));
610   EXPECT_FALSE(collate.value());
611   EXPECT_TRUE(reverse.value());
612
613   EXPECT_EQ(NormalizeJson(kCjt), NormalizeJson(description.ToString()));
614 }
615
616 }  // namespace printer
617
618 }  // namespace cloud_devices