123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- // Copyright 2013 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "printing/printing_utils.h"
- #include <stddef.h>
- #include <limits>
- #include <string>
- #include "base/strings/utf_string_conversions.h"
- #include "build/build_config.h"
- #include "build/chromeos_buildflags.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "ui/gfx/geometry/size.h"
- #if BUILDFLAG(IS_WIN)
- #include "ui/gfx/geometry/rect.h"
- #endif
- namespace printing {
- namespace {
- constexpr size_t kTestLength = 8;
- #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
- constexpr gfx::Size kIsoA4Microns(210000, 297000);
- constexpr gfx::Size kNaLetterMicrons(216000, 279000);
- #endif
- std::string Simplify(const std::string& title) {
- return base::UTF16ToUTF8(
- SimplifyDocumentTitleWithLength(base::UTF8ToUTF16(title), kTestLength));
- }
- std::string Format(const std::string& owner, const std::string& title) {
- return base::UTF16ToUTF8(FormatDocumentTitleWithOwnerAndLength(
- base::UTF8ToUTF16(owner), base::UTF8ToUTF16(title), kTestLength));
- }
- } // namespace
- TEST(PrintingUtilsTest, SimplifyDocumentTitle) {
- EXPECT_EQ("", Simplify(""));
- EXPECT_EQ("abcdefgh", Simplify("abcdefgh"));
- EXPECT_EQ("abc...ij", Simplify("abcdefghij"));
- EXPECT_EQ("Controls", Simplify("C\ron\nt\15rols"));
- EXPECT_EQ("C__foo_", Simplify("C:\\foo\\"));
- EXPECT_EQ("C__foo_", Simplify("C:/foo/"));
- EXPECT_EQ("a_b_c", Simplify("a<b\"c"));
- EXPECT_EQ("d_e_f_", Simplify("d*e?f~"));
- EXPECT_EQ("", Simplify("\n\r\n\r\t\r"));
- }
- TEST(PrintingUtilsTest, FormatDocumentTitleWithOwner) {
- EXPECT_EQ(": ", Format("", ""));
- EXPECT_EQ("abc: ", Format("abc", ""));
- EXPECT_EQ(": 123", Format("", "123"));
- EXPECT_EQ("abc: 123", Format("abc", "123"));
- EXPECT_EQ("abc: 0.9", Format("abc", "0123456789"));
- EXPECT_EQ("ab...j: ", Format("abcdefghij", "123"));
- EXPECT_EQ("xyz: _.o", Format("xyz", "\\f\\oo"));
- EXPECT_EQ("ab...j: ", Format("abcdefghij", "0123456789"));
- }
- #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
- TEST(PrintingUtilsTest, GetDefaultPaperSizeFromLocaleMicrons) {
- // Valid locales
- EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en-US"));
- EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en_US"));
- EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("fr-CA"));
- EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("es-CL"));
- EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("en_UK"));
- EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("fa-IR"));
- // Empty locale
- EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons(""));
- // Non-existing locale
- EXPECT_EQ(kIsoA4Microns,
- GetDefaultPaperSizeFromLocaleMicrons("locale-does-not-exist"));
- }
- TEST(PrintingUtilsTest, SizesEqualWithinEpsilon) {
- constexpr int kMaxInt = std::numeric_limits<int>::max();
- // Large sizes
- EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
- gfx::Size(kMaxInt - 1, kMaxInt - 1), 1));
- EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
- gfx::Size(kMaxInt - 1, kMaxInt - 2), 1));
- EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
- gfx::Size(0, 0), kMaxInt));
- EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
- gfx::Size(0, 0), kMaxInt - 1));
- // Empty sizes
- EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(0, 0), gfx::Size(0, 0), 0));
- EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, 0), gfx::Size(0, 2), 0));
- EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, -2), gfx::Size(-1, 2), 0));
- // Common paper sizes
- EXPECT_FALSE(SizesEqualWithinEpsilon(kNaLetterMicrons, kIsoA4Microns, 1000));
- EXPECT_TRUE(SizesEqualWithinEpsilon(kNaLetterMicrons,
- gfx::Size(215900, 279400), 500));
- EXPECT_TRUE(
- SizesEqualWithinEpsilon(kIsoA4Microns, gfx::Size(210500, 296500), 500));
- }
- #endif // defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
- #if BUILDFLAG(IS_WIN)
- TEST(PrintingUtilsTest, GetCenteredPageContentRect) {
- gfx::Rect page_content;
- // No centering.
- gfx::Size page_size = gfx::Size(1200, 1200);
- gfx::Rect page_content_rect = gfx::Rect(0, 0, 400, 1100);
- page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
- page_content_rect);
- EXPECT_EQ(0, page_content.x());
- EXPECT_EQ(0, page_content.y());
- EXPECT_EQ(400, page_content.width());
- EXPECT_EQ(1100, page_content.height());
- // X centered.
- page_size = gfx::Size(500, 1200);
- page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
- page_content_rect);
- EXPECT_EQ(250, page_content.x());
- EXPECT_EQ(0, page_content.y());
- EXPECT_EQ(400, page_content.width());
- EXPECT_EQ(1100, page_content.height());
- // Y centered.
- page_size = gfx::Size(1200, 500);
- page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
- page_content_rect);
- EXPECT_EQ(0, page_content.x());
- EXPECT_EQ(250, page_content.y());
- EXPECT_EQ(400, page_content.width());
- EXPECT_EQ(1100, page_content.height());
- // Both X and Y centered.
- page_size = gfx::Size(500, 500),
- page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
- page_content_rect);
- EXPECT_EQ(250, page_content.x());
- EXPECT_EQ(250, page_content.y());
- EXPECT_EQ(400, page_content.width());
- EXPECT_EQ(1100, page_content.height());
- }
- #endif // BUILDFLAG(IS_WIN)
- } // namespace printing
|