printing_utils_unittest.cc 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. // Copyright 2013 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "printing/printing_utils.h"
  5. #include <stddef.h>
  6. #include <limits>
  7. #include <string>
  8. #include "base/strings/utf_string_conversions.h"
  9. #include "build/build_config.h"
  10. #include "build/chromeos_buildflags.h"
  11. #include "testing/gtest/include/gtest/gtest.h"
  12. #include "ui/gfx/geometry/size.h"
  13. #if BUILDFLAG(IS_WIN)
  14. #include "ui/gfx/geometry/rect.h"
  15. #endif
  16. namespace printing {
  17. namespace {
  18. constexpr size_t kTestLength = 8;
  19. #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
  20. constexpr gfx::Size kIsoA4Microns(210000, 297000);
  21. constexpr gfx::Size kNaLetterMicrons(216000, 279000);
  22. #endif
  23. std::string Simplify(const std::string& title) {
  24. return base::UTF16ToUTF8(
  25. SimplifyDocumentTitleWithLength(base::UTF8ToUTF16(title), kTestLength));
  26. }
  27. std::string Format(const std::string& owner, const std::string& title) {
  28. return base::UTF16ToUTF8(FormatDocumentTitleWithOwnerAndLength(
  29. base::UTF8ToUTF16(owner), base::UTF8ToUTF16(title), kTestLength));
  30. }
  31. } // namespace
  32. TEST(PrintingUtilsTest, SimplifyDocumentTitle) {
  33. EXPECT_EQ("", Simplify(""));
  34. EXPECT_EQ("abcdefgh", Simplify("abcdefgh"));
  35. EXPECT_EQ("abc...ij", Simplify("abcdefghij"));
  36. EXPECT_EQ("Controls", Simplify("C\ron\nt\15rols"));
  37. EXPECT_EQ("C__foo_", Simplify("C:\\foo\\"));
  38. EXPECT_EQ("C__foo_", Simplify("C:/foo/"));
  39. EXPECT_EQ("a_b_c", Simplify("a<b\"c"));
  40. EXPECT_EQ("d_e_f_", Simplify("d*e?f~"));
  41. EXPECT_EQ("", Simplify("\n\r\n\r\t\r"));
  42. }
  43. TEST(PrintingUtilsTest, FormatDocumentTitleWithOwner) {
  44. EXPECT_EQ(": ", Format("", ""));
  45. EXPECT_EQ("abc: ", Format("abc", ""));
  46. EXPECT_EQ(": 123", Format("", "123"));
  47. EXPECT_EQ("abc: 123", Format("abc", "123"));
  48. EXPECT_EQ("abc: 0.9", Format("abc", "0123456789"));
  49. EXPECT_EQ("ab...j: ", Format("abcdefghij", "123"));
  50. EXPECT_EQ("xyz: _.o", Format("xyz", "\\f\\oo"));
  51. EXPECT_EQ("ab...j: ", Format("abcdefghij", "0123456789"));
  52. }
  53. #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
  54. TEST(PrintingUtilsTest, GetDefaultPaperSizeFromLocaleMicrons) {
  55. // Valid locales
  56. EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en-US"));
  57. EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en_US"));
  58. EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("fr-CA"));
  59. EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("es-CL"));
  60. EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("en_UK"));
  61. EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("fa-IR"));
  62. // Empty locale
  63. EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons(""));
  64. // Non-existing locale
  65. EXPECT_EQ(kIsoA4Microns,
  66. GetDefaultPaperSizeFromLocaleMicrons("locale-does-not-exist"));
  67. }
  68. TEST(PrintingUtilsTest, SizesEqualWithinEpsilon) {
  69. constexpr int kMaxInt = std::numeric_limits<int>::max();
  70. // Large sizes
  71. EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
  72. gfx::Size(kMaxInt - 1, kMaxInt - 1), 1));
  73. EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
  74. gfx::Size(kMaxInt - 1, kMaxInt - 2), 1));
  75. EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
  76. gfx::Size(0, 0), kMaxInt));
  77. EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
  78. gfx::Size(0, 0), kMaxInt - 1));
  79. // Empty sizes
  80. EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(0, 0), gfx::Size(0, 0), 0));
  81. EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, 0), gfx::Size(0, 2), 0));
  82. EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, -2), gfx::Size(-1, 2), 0));
  83. // Common paper sizes
  84. EXPECT_FALSE(SizesEqualWithinEpsilon(kNaLetterMicrons, kIsoA4Microns, 1000));
  85. EXPECT_TRUE(SizesEqualWithinEpsilon(kNaLetterMicrons,
  86. gfx::Size(215900, 279400), 500));
  87. EXPECT_TRUE(
  88. SizesEqualWithinEpsilon(kIsoA4Microns, gfx::Size(210500, 296500), 500));
  89. }
  90. #endif // defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH)
  91. #if BUILDFLAG(IS_WIN)
  92. TEST(PrintingUtilsTest, GetCenteredPageContentRect) {
  93. gfx::Rect page_content;
  94. // No centering.
  95. gfx::Size page_size = gfx::Size(1200, 1200);
  96. gfx::Rect page_content_rect = gfx::Rect(0, 0, 400, 1100);
  97. page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
  98. page_content_rect);
  99. EXPECT_EQ(0, page_content.x());
  100. EXPECT_EQ(0, page_content.y());
  101. EXPECT_EQ(400, page_content.width());
  102. EXPECT_EQ(1100, page_content.height());
  103. // X centered.
  104. page_size = gfx::Size(500, 1200);
  105. page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
  106. page_content_rect);
  107. EXPECT_EQ(250, page_content.x());
  108. EXPECT_EQ(0, page_content.y());
  109. EXPECT_EQ(400, page_content.width());
  110. EXPECT_EQ(1100, page_content.height());
  111. // Y centered.
  112. page_size = gfx::Size(1200, 500);
  113. page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
  114. page_content_rect);
  115. EXPECT_EQ(0, page_content.x());
  116. EXPECT_EQ(250, page_content.y());
  117. EXPECT_EQ(400, page_content.width());
  118. EXPECT_EQ(1100, page_content.height());
  119. // Both X and Y centered.
  120. page_size = gfx::Size(500, 500),
  121. page_content = GetCenteredPageContentRect(gfx::Size(1000, 1000), page_size,
  122. page_content_rect);
  123. EXPECT_EQ(250, page_content.x());
  124. EXPECT_EQ(250, page_content.y());
  125. EXPECT_EQ(400, page_content.width());
  126. EXPECT_EQ(1100, page_content.height());
  127. }
  128. #endif // BUILDFLAG(IS_WIN)
  129. } // namespace printing