Enable chrome with aura for tizen
[platform/framework/web/chromium-efl.git] / printing / printing_utils_unittest.cc
1 // Copyright 2013 The Chromium Authors
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 "printing/printing_utils.h"
6
7 #include <stddef.h>
8
9 #include <limits>
10 #include <string>
11
12 #include "base/strings/utf_string_conversions.h"
13 #include "build/build_config.h"
14 #include "build/chromeos_buildflags.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "ui/gfx/geometry/size.h"
17
18 #if BUILDFLAG(IS_WIN)
19 #include "ui/gfx/geometry/rect.h"
20 #endif
21
22 namespace printing {
23
24 namespace {
25
26 constexpr size_t kTestLength = 8;
27
28 #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
29 constexpr gfx::Size kIsoA4Microns(210000, 297000);
30 constexpr gfx::Size kNaLetterMicrons(216000, 279000);
31 #endif
32
33 std::string Simplify(const std::string& title) {
34   return base::UTF16ToUTF8(
35       SimplifyDocumentTitleWithLength(base::UTF8ToUTF16(title), kTestLength));
36 }
37
38 std::string Format(const std::string& owner, const std::string& title) {
39   return base::UTF16ToUTF8(FormatDocumentTitleWithOwnerAndLength(
40       base::UTF8ToUTF16(owner), base::UTF8ToUTF16(title), kTestLength));
41 }
42
43 }  // namespace
44
45 TEST(PrintingUtilsTest, SimplifyDocumentTitle) {
46   EXPECT_EQ("", Simplify(""));
47   EXPECT_EQ("abcdefgh", Simplify("abcdefgh"));
48   EXPECT_EQ("abc...ij", Simplify("abcdefghij"));
49   EXPECT_EQ("Controls", Simplify("C\ron\nt\15rols"));
50   EXPECT_EQ("C__foo_", Simplify("C:\\foo\\"));
51   EXPECT_EQ("C__foo_", Simplify("C:/foo/"));
52   EXPECT_EQ("a_b_c", Simplify("a<b\"c"));
53   EXPECT_EQ("d_e_f_", Simplify("d*e?f~"));
54   EXPECT_EQ("", Simplify("\n\r\n\r\t\r"));
55 }
56
57 TEST(PrintingUtilsTest, FormatDocumentTitleWithOwner) {
58   EXPECT_EQ(": ", Format("", ""));
59   EXPECT_EQ("abc: ", Format("abc", ""));
60   EXPECT_EQ(": 123", Format("", "123"));
61   EXPECT_EQ("abc: 123", Format("abc", "123"));
62   EXPECT_EQ("abc: 0.9", Format("abc", "0123456789"));
63   EXPECT_EQ("ab...j: ", Format("abcdefghij", "123"));
64   EXPECT_EQ("xyz: _.o", Format("xyz", "\\f\\oo"));
65   EXPECT_EQ("ab...j: ", Format("abcdefghij", "0123456789"));
66 }
67
68 #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
69 TEST(PrintingUtilsTest, GetDefaultPaperSizeFromLocaleMicrons) {
70   // Valid locales
71   EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en-US"));
72   EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en_US"));
73   EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("fr-CA"));
74   EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("es-CL"));
75   EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("en_UK"));
76   EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("fa-IR"));
77
78   // Empty locale
79   EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons(""));
80
81   // Non-existing locale
82   EXPECT_EQ(kIsoA4Microns,
83             GetDefaultPaperSizeFromLocaleMicrons("locale-does-not-exist"));
84 }
85
86 TEST(PrintingUtilsTest, SizesEqualWithinEpsilon) {
87   constexpr int kMaxInt = std::numeric_limits<int>::max();
88
89   // Large sizes
90   EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
91                                       gfx::Size(kMaxInt - 1, kMaxInt - 1), 1));
92   EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
93                                        gfx::Size(kMaxInt - 1, kMaxInt - 2), 1));
94   EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
95                                       gfx::Size(0, 0), kMaxInt));
96   EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
97                                        gfx::Size(0, 0), kMaxInt - 1));
98
99   // Empty sizes
100   EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(0, 0), gfx::Size(0, 0), 0));
101   EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, 0), gfx::Size(0, 2), 0));
102   EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, -2), gfx::Size(-1, 2), 0));
103
104   // Common paper sizes
105   EXPECT_FALSE(SizesEqualWithinEpsilon(kNaLetterMicrons, kIsoA4Microns, 1000));
106   EXPECT_TRUE(SizesEqualWithinEpsilon(kNaLetterMicrons,
107                                       gfx::Size(215900, 279400), 500));
108   EXPECT_TRUE(
109       SizesEqualWithinEpsilon(kIsoA4Microns, gfx::Size(210500, 296500), 500));
110 }
111 #endif  // defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
112
113 #if BUILDFLAG(IS_WIN)
114 TEST(PrintingUtilsTest, GetCenteredPageContentRect) {
115   gfx::Rect page_content;
116
117   // No centering.
118   gfx::Size page_size = gfx::Size(1200, 1200);
119   gfx::Rect page_content_rect = gfx::Rect(0, 0, 400, 1100);
120   page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
121                                             page_content_rect);
122   EXPECT_EQ(0, page_content.x());
123   EXPECT_EQ(0, page_content.y());
124   EXPECT_EQ(400, page_content.width());
125   EXPECT_EQ(1100, page_content.height());
126
127   // X centered.
128   page_size = gfx::Size(500, 1200);
129   page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
130                                             page_content_rect);
131   EXPECT_EQ(250, page_content.x());
132   EXPECT_EQ(0, page_content.y());
133   EXPECT_EQ(400, page_content.width());
134   EXPECT_EQ(1100, page_content.height());
135
136   // Y centered.
137   page_size = gfx::Size(1200, 500);
138   page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
139                                             page_content_rect);
140   EXPECT_EQ(0, page_content.x());
141   EXPECT_EQ(250, page_content.y());
142   EXPECT_EQ(400, page_content.width());
143   EXPECT_EQ(1100, page_content.height());
144
145   // Both X and Y centered.
146   page_size = gfx::Size(500, 500),
147   page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
148                                             page_content_rect);
149   EXPECT_EQ(250, page_content.x());
150   EXPECT_EQ(250, page_content.y());
151   EXPECT_EQ(400, page_content.width());
152   EXPECT_EQ(1100, page_content.height());
153 }
154 #endif  // BUILDFLAG(IS_WIN)
155
156 }  // namespace printing