[email protected] | ec91bfa | 2013-11-09 17:24:27 | [diff] [blame] | 1 | // Copyright 2013 The Chromium Authors. All rights reserved. |
[email protected] | 09083eb | 2012-09-20 05:58:43 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 5 | #include "printing/printing_utils.h" |
| 6 | |
avi | 126e93c | 2015-12-21 21:48:16 | [diff] [blame] | 7 | #include <stddef.h> |
| 8 | |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 9 | #include <limits> |
| 10 | #include <string> |
| 11 | |
[email protected] | 90626587 | 2013-06-07 22:40:45 | [diff] [blame] | 12 | #include "base/strings/utf_string_conversions.h" |
[email protected] | 09083eb | 2012-09-20 05:58:43 | [diff] [blame] | 13 | #include "testing/gtest/include/gtest/gtest.h" |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 14 | #include "ui/gfx/geometry/size.h" |
[email protected] | 09083eb | 2012-09-20 05:58:43 | [diff] [blame] | 15 | |
| 16 | namespace printing { |
| 17 | |
vitalybuka | 27e401c | 2015-07-07 18:21:16 | [diff] [blame] | 18 | namespace { |
| 19 | |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 20 | constexpr size_t kTestLength = 8; |
| 21 | constexpr gfx::Size kIsoA4Microns(210000, 297000); |
| 22 | constexpr gfx::Size kNaLetterMicrons(216000, 279000); |
vitalybuka | 27e401c | 2015-07-07 18:21:16 | [diff] [blame] | 23 | |
| 24 | std::string Simplify(const std::string& title) { |
| 25 | return base::UTF16ToUTF8( |
| 26 | SimplifyDocumentTitleWithLength(base::UTF8ToUTF16(title), kTestLength)); |
[email protected] | 09083eb | 2012-09-20 05:58:43 | [diff] [blame] | 27 | } |
| 28 | |
vitalybuka | 27e401c | 2015-07-07 18:21:16 | [diff] [blame] | 29 | std::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] | ec91bfa | 2013-11-09 17:24:27 | [diff] [blame] | 36 | TEST(PrintingUtilsTest, SimplifyDocumentTitle) { |
vitalybuka | 27e401c | 2015-07-07 18:21:16 | [diff] [blame] | 37 | 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 Zhang | 67bfd2e | 2020-02-05 18:02:06 | [diff] [blame^] | 41 | 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~")); |
vitalybuka | 27e401c | 2015-07-07 18:21:16 | [diff] [blame] | 45 | EXPECT_EQ("", Simplify("\n\r\n\r\t\r")); |
| 46 | } |
| 47 | |
| 48 | TEST(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")); |
thestig | 3ccfd1f | 2016-02-03 21:46:31 | [diff] [blame] | 55 | EXPECT_EQ("xyz: _.o", Format("xyz", "\\f\\oo")); |
vitalybuka | 27e401c | 2015-07-07 18:21:16 | [diff] [blame] | 56 | EXPECT_EQ("ab...j: ", Format("abcdefghij", "0123456789")); |
[email protected] | 09083eb | 2012-09-20 05:58:43 | [diff] [blame] | 57 | } |
| 58 | |
Daniel Hosseinian | d8f4bc7 | 2019-12-16 20:13:17 | [diff] [blame] | 59 | TEST(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 | |
| 76 | TEST(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] | 09083eb | 2012-09-20 05:58:43 | [diff] [blame] | 102 | } // namespace printing |