blob: 5d48a0763120df8d894e2d5a353146bbe2db65c2 [file] [log] [blame]
[email protected]ec91bfa2013-11-09 17:24:271// Copyright 2013 The Chromium Authors. All rights reserved.
[email protected]09083eb2012-09-20 05:58:432// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Daniel Hosseiniand8f4bc72019-12-16 20:13:175#include "printing/printing_utils.h"
6
avi126e93c2015-12-21 21:48:167#include <stddef.h>
8
Daniel Hosseiniand8f4bc72019-12-16 20:13:179#include <limits>
10#include <string>
11
[email protected]906265872013-06-07 22:40:4512#include "base/strings/utf_string_conversions.h"
[email protected]09083eb2012-09-20 05:58:4313#include "testing/gtest/include/gtest/gtest.h"
Daniel Hosseiniand8f4bc72019-12-16 20:13:1714#include "ui/gfx/geometry/size.h"
[email protected]09083eb2012-09-20 05:58:4315
16namespace printing {
17
vitalybuka27e401c2015-07-07 18:21:1618namespace {
19
Daniel Hosseiniand8f4bc72019-12-16 20:13:1720constexpr size_t kTestLength = 8;
21constexpr gfx::Size kIsoA4Microns(210000, 297000);
22constexpr gfx::Size kNaLetterMicrons(216000, 279000);
vitalybuka27e401c2015-07-07 18:21:1623
24std::string Simplify(const std::string& title) {
25 return base::UTF16ToUTF8(
26 SimplifyDocumentTitleWithLength(base::UTF8ToUTF16(title), kTestLength));
[email protected]09083eb2012-09-20 05:58:4327}
28
vitalybuka27e401c2015-07-07 18:21:1629std::string Format(const std::string& owner, const std::string& title) {
30 return base::UTF16ToUTF8(FormatDocumentTitleWithOwnerAndLength(
31 base::UTF8ToUTF16(owner), base::UTF8ToUTF16(title), kTestLength));
32}
33
34} // namespace
35
[email protected]ec91bfa2013-11-09 17:24:2736TEST(PrintingUtilsTest, SimplifyDocumentTitle) {
vitalybuka27e401c2015-07-07 18:21:1637 EXPECT_EQ("", Simplify(""));
38 EXPECT_EQ("abcdefgh", Simplify("abcdefgh"));
39 EXPECT_EQ("abc...ij", Simplify("abcdefghij"));
40 EXPECT_EQ("Controls", Simplify("C\ron\nt\15rols"));
Lei Zhang67bfd2e2020-02-05 18:02:0641 EXPECT_EQ("C__foo_", Simplify("C:\\foo\\"));
42 EXPECT_EQ("C__foo_", Simplify("C:/foo/"));
43 EXPECT_EQ("a_b_c", Simplify("a<b\"c"));
44 EXPECT_EQ("d_e_f_", Simplify("d*e?f~"));
vitalybuka27e401c2015-07-07 18:21:1645 EXPECT_EQ("", Simplify("\n\r\n\r\t\r"));
46}
47
48TEST(PrintingUtilsTest, FormatDocumentTitleWithOwner) {
49 EXPECT_EQ(": ", Format("", ""));
50 EXPECT_EQ("abc: ", Format("abc", ""));
51 EXPECT_EQ(": 123", Format("", "123"));
52 EXPECT_EQ("abc: 123", Format("abc", "123"));
53 EXPECT_EQ("abc: 0.9", Format("abc", "0123456789"));
54 EXPECT_EQ("ab...j: ", Format("abcdefghij", "123"));
thestig3ccfd1f2016-02-03 21:46:3155 EXPECT_EQ("xyz: _.o", Format("xyz", "\\f\\oo"));
vitalybuka27e401c2015-07-07 18:21:1656 EXPECT_EQ("ab...j: ", Format("abcdefghij", "0123456789"));
[email protected]09083eb2012-09-20 05:58:4357}
58
Daniel Hosseiniand8f4bc72019-12-16 20:13:1759TEST(PrintingUtilsTest, GetDefaultPaperSizeFromLocaleMicrons) {
60 // Valid locales
61 EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en-US"));
62 EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en_US"));
63 EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("fr-CA"));
64 EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("es-CL"));
65 EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("en_UK"));
66 EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("fa-IR"));
67
68 // Empty locale
69 EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons(""));
70
71 // Non-existing locale
72 EXPECT_EQ(kIsoA4Microns,
73 GetDefaultPaperSizeFromLocaleMicrons("locale-does-not-exist"));
74}
75
76TEST(PrintingUtilsTest, SizesEqualWithinEpsilon) {
77 constexpr int kMaxInt = std::numeric_limits<int>::max();
78
79 // Large sizes
80 EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
81 gfx::Size(kMaxInt - 1, kMaxInt - 1), 1));
82 EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
83 gfx::Size(kMaxInt - 1, kMaxInt - 2), 1));
84 EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
85 gfx::Size(0, 0), kMaxInt));
86 EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
87 gfx::Size(0, 0), kMaxInt - 1));
88
89 // Empty sizes
90 EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(0, 0), gfx::Size(0, 0), 0));
91 EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, 0), gfx::Size(0, 2), 0));
92 EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, -2), gfx::Size(-1, 2), 0));
93
94 // Common paper sizes
95 EXPECT_FALSE(SizesEqualWithinEpsilon(kNaLetterMicrons, kIsoA4Microns, 1000));
96 EXPECT_TRUE(SizesEqualWithinEpsilon(kNaLetterMicrons,
97 gfx::Size(215900, 279400), 500));
98 EXPECT_TRUE(
99 SizesEqualWithinEpsilon(kIsoA4Microns, gfx::Size(210500, 296500), 500));
100}
101
[email protected]09083eb2012-09-20 05:58:43102} // namespace printing