// 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 #include #include #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::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