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.
5 #include "printing/printing_utils.h"
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"
19 #include "ui/gfx/geometry/rect.h"
26 constexpr size_t kTestLength = 8;
28 #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
29 constexpr gfx::Size kIsoA4Microns(210000, 297000);
30 constexpr gfx::Size kNaLetterMicrons(216000, 279000);
33 std::string Simplify(const std::string& title) {
34 return base::UTF16ToUTF8(
35 SimplifyDocumentTitleWithLength(base::UTF8ToUTF16(title), kTestLength));
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));
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"));
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"));
68 #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
69 TEST(PrintingUtilsTest, GetDefaultPaperSizeFromLocaleMicrons) {
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"));
79 EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons(""));
81 // Non-existing locale
82 EXPECT_EQ(kIsoA4Microns,
83 GetDefaultPaperSizeFromLocaleMicrons("locale-does-not-exist"));
86 TEST(PrintingUtilsTest, SizesEqualWithinEpsilon) {
87 constexpr int kMaxInt = std::numeric_limits<int>::max();
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));
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));
104 // Common paper sizes
105 EXPECT_FALSE(SizesEqualWithinEpsilon(kNaLetterMicrons, kIsoA4Microns, 1000));
106 EXPECT_TRUE(SizesEqualWithinEpsilon(kNaLetterMicrons,
107 gfx::Size(215900, 279400), 500));
109 SizesEqualWithinEpsilon(kIsoA4Microns, gfx::Size(210500, 296500), 500));
111 #endif // defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
113 #if BUILDFLAG(IS_WIN)
114 TEST(PrintingUtilsTest, GetCenteredPageContentRect) {
115 gfx::Rect page_content;
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,
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());
128 page_size = gfx::Size(500, 1200);
129 page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
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());
137 page_size = gfx::Size(1200, 500);
138 page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
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());
145 // Both X and Y centered.
146 page_size = gfx::Size(500, 500),
147 page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
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());
154 #endif // BUILDFLAG(IS_WIN)
156 } // namespace printing