Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(475)

Unified Diff: printing/pdf_transform_unittest.cc

Issue 1421493002: Printing: Move some printing code out of pdf/ and into printing/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add missing test file Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: printing/pdf_transform_unittest.cc
diff --git a/printing/pdf_transform_unittest.cc b/printing/pdf_transform_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..12e9ad72df547f13257750bdbd9dadcea856712e
--- /dev/null
+++ b/printing/pdf_transform_unittest.cc
@@ -0,0 +1,269 @@
+// Copyright 2015 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/pdf_transform.h"
+
+#include "printing/units.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gfx/geometry/rect.h"
+
+namespace printing {
+
+namespace {
+
+const float kDefaultWidth = 8.5 * kPointsPerInch;
+const float kDefaultHeight = 11.0 * kPointsPerInch;
+const float kDefaultRatio = kDefaultWidth / kDefaultHeight;
+const float kTolerance = 0.0001;
+
+void ExpectDefaultPortraitBox(const ClipBox& box) {
+ EXPECT_FLOAT_EQ(0, box.left);
+ EXPECT_FLOAT_EQ(kDefaultWidth, box.right);
+ EXPECT_FLOAT_EQ(kDefaultHeight, box.top);
+ EXPECT_FLOAT_EQ(0, box.bottom);
+}
+
+void ExpectDefaultLandscapeBox(const ClipBox& box) {
+ EXPECT_FLOAT_EQ(0, box.left);
+ EXPECT_FLOAT_EQ(kDefaultHeight, box.right);
+ EXPECT_FLOAT_EQ(kDefaultWidth, box.top);
+ EXPECT_FLOAT_EQ(0, box.bottom);
+}
+
+void InitializeBoxToInvalidValues(ClipBox* box) {
+ box->left = box->right = box->top = box->bottom = -1;
+}
+
+void InitializeBoxToDefaultPortraitValues(ClipBox* box) {
+ box->left = 0;
+ box->right = kDefaultWidth;
+ box->top = kDefaultHeight;
+ box->bottom = 0;
+}
+
+void InitializeBoxToDefaultLandscapeValue(ClipBox* box) {
+ box->left = 0;
+ box->right = kDefaultHeight;
+ box->top = kDefaultWidth;
+ box->bottom = 0;
+}
+
+} // namespace
+
+TEST(PdfTransformTest, CalculateScaleFactor) {
+ gfx::Rect rect(kDefaultWidth, kDefaultHeight);
+ double scale;
+
+ // 1:1
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
+ EXPECT_NEAR(1, scale, kTolerance);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
+ EXPECT_NEAR(kDefaultRatio, scale, kTolerance);
+
+ // 1:2
+ rect = gfx::Rect(kDefaultWidth / 2, kDefaultHeight / 2);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
+ EXPECT_NEAR(0.5, scale, kTolerance);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
+ EXPECT_NEAR(kDefaultRatio / 2, scale, kTolerance);
+
+ // 3:1
+ rect = gfx::Rect(kDefaultWidth * 3, kDefaultHeight * 3);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
+ EXPECT_NEAR(3, scale, kTolerance);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
+ EXPECT_NEAR(kDefaultRatio * 3, scale, kTolerance);
+
+ // 3:1, rotated.
+ rect = gfx::Rect(kDefaultHeight * 3, kDefaultWidth * 3);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
+ EXPECT_NEAR(kDefaultRatio * 3, scale, kTolerance);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
+ EXPECT_NEAR(3, scale, kTolerance);
+
+ // Odd size
+ rect = gfx::Rect(10, 1000);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
+ EXPECT_NEAR(0.01634, scale, kTolerance);
+ scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
+ EXPECT_NEAR(0.01263, scale, kTolerance);
+}
+
+TEST(PdfTransformTest, SetDefaultClipBox) {
+ ClipBox box;
+
+ SetDefaultClipBox(false, &box);
+ ExpectDefaultPortraitBox(box);
+
+ SetDefaultClipBox(true, &box);
+ ExpectDefaultLandscapeBox(box);
+}
+
+TEST(PdfTransformTest, CalculateMediaBoxAndCropBox) {
+ ClipBox media_box;
+ ClipBox crop_box;
+
+ // Assume both boxes are there.
+ InitializeBoxToDefaultPortraitValues(&media_box);
+ InitializeBoxToDefaultLandscapeValue(&crop_box);
+ CalculateMediaBoxAndCropBox(true, true, true, &media_box, &crop_box);
+ ExpectDefaultPortraitBox(media_box);
+ ExpectDefaultLandscapeBox(crop_box);
+
+ // Assume both boxes are missing.
+ InitializeBoxToInvalidValues(&media_box);
+ InitializeBoxToInvalidValues(&crop_box);
+ CalculateMediaBoxAndCropBox(false, false, false, &media_box, &crop_box);
+ ExpectDefaultPortraitBox(media_box);
+ ExpectDefaultPortraitBox(crop_box);
+ CalculateMediaBoxAndCropBox(true, false, false, &media_box, &crop_box);
+ ExpectDefaultLandscapeBox(media_box);
+ ExpectDefaultLandscapeBox(crop_box);
+
+ // Assume crop box is missing.
+ InitializeBoxToInvalidValues(&crop_box);
+ CalculateMediaBoxAndCropBox(false, true, false, &media_box, &crop_box);
+ ExpectDefaultLandscapeBox(media_box);
+ ExpectDefaultLandscapeBox(crop_box);
+
+ // Assume media box is missing.
+ InitializeBoxToInvalidValues(&media_box);
+ CalculateMediaBoxAndCropBox(false, false, true, &media_box, &crop_box);
+ ExpectDefaultLandscapeBox(media_box);
+ ExpectDefaultLandscapeBox(crop_box);
+}
+
+TEST(PdfTransformTest, CalculateClipBoxBoundary) {
+ ClipBox media_box;
+ ClipBox crop_box;
+ ClipBox result;
+
+ // media box and crop box are the same.
+ InitializeBoxToDefaultPortraitValues(&media_box);
+ InitializeBoxToDefaultPortraitValues(&crop_box);
+ result = CalculateClipBoxBoundary(media_box, crop_box);
+ ExpectDefaultPortraitBox(result);
+
+ // media box is portrait and crop box is landscape.
+ InitializeBoxToDefaultLandscapeValue(&crop_box);
+ result = CalculateClipBoxBoundary(media_box, crop_box);
+ EXPECT_FLOAT_EQ(0, result.left);
+ EXPECT_FLOAT_EQ(kDefaultWidth, result.right);
+ EXPECT_FLOAT_EQ(kDefaultWidth, result.top);
+ EXPECT_FLOAT_EQ(0, result.bottom);
+
+ // crop box is smaller than media box.
+ crop_box.left = 0;
+ crop_box.right = 100;
+ crop_box.bottom = 0;
+ crop_box.top = 200;
+ result = CalculateClipBoxBoundary(media_box, crop_box);
+ EXPECT_FLOAT_EQ(0, result.left);
+ EXPECT_FLOAT_EQ(100, result.right);
+ EXPECT_FLOAT_EQ(200, result.top);
+ EXPECT_FLOAT_EQ(0, result.bottom);
+
+ // crop box is smaller than the media box in one dimension and longer in the
+ // other.
+ crop_box.left = 0;
+ crop_box.right = 100;
+ crop_box.bottom = 0;
+ crop_box.top = 2000;
+ result = CalculateClipBoxBoundary(media_box, crop_box);
+ EXPECT_FLOAT_EQ(0, result.left);
+ EXPECT_FLOAT_EQ(100, result.right);
+ EXPECT_FLOAT_EQ(kDefaultHeight, result.top);
+ EXPECT_FLOAT_EQ(0, result.bottom);
+}
+
+TEST(PdfTransformTest, CalculateScaledClipBoxOffset) {
+ gfx::Rect rect(kDefaultWidth, kDefaultHeight);
+ ClipBox clip_box;
+ double offset_x;
+ double offset_y;
+
+ // |rect| and |clip_box| are the same size.
+ InitializeBoxToDefaultPortraitValues(&clip_box);
+ CalculateScaledClipBoxOffset(rect, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(0, offset_x);
+ EXPECT_DOUBLE_EQ(0, offset_y);
+
+ // |rect| is larger than |clip_box|.
+ clip_box.top /= 2;
+ clip_box.right /= 4;
+ CalculateScaledClipBoxOffset(rect, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(229.5, offset_x);
+ EXPECT_DOUBLE_EQ(198, offset_y);
+}
+
+TEST(PdfTransformTest, CalculateNonScaledClipBoxOffset) {
+ int page_width = kDefaultWidth;
+ int page_height = kDefaultHeight;
+ gfx::Rect rect(kDefaultWidth, kDefaultHeight);
+ ClipBox clip_box;
+ double offset_x;
+ double offset_y;
+
+ // |rect|, page size and |clip_box| are the same.
+ InitializeBoxToDefaultPortraitValues(&clip_box);
+ CalculateNonScaledClipBoxOffset(
+ rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(0, offset_x);
+ EXPECT_DOUBLE_EQ(0, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(0, offset_x);
+ EXPECT_DOUBLE_EQ(0, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(0, offset_x);
+ EXPECT_DOUBLE_EQ(0, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(180, offset_x);
+ EXPECT_DOUBLE_EQ(-180, offset_y);
+
+ // Smaller |clip_box|.
+ clip_box.top /= 4;
+ clip_box.right /= 2;
+ CalculateNonScaledClipBoxOffset(
+ rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(0, offset_x);
+ EXPECT_DOUBLE_EQ(594, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(0, offset_x);
+ EXPECT_DOUBLE_EQ(0, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(306, offset_x);
+ EXPECT_DOUBLE_EQ(0, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(486, offset_x);
+ EXPECT_DOUBLE_EQ(414, offset_y);
+
+ // Larger page size.
+ InitializeBoxToDefaultPortraitValues(&clip_box);
+ page_width += 10;
+ page_height += 20;
+ CalculateNonScaledClipBoxOffset(
+ rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(0, offset_x);
+ EXPECT_DOUBLE_EQ(20, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(0, offset_x);
+ EXPECT_DOUBLE_EQ(0, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(10, offset_x);
+ EXPECT_DOUBLE_EQ(0, offset_y);
+ CalculateNonScaledClipBoxOffset(
+ rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
+ EXPECT_DOUBLE_EQ(200, offset_x);
+ EXPECT_DOUBLE_EQ(-170, offset_y);
+}
+
+} // namespace printing

Powered by Google App Engine
This is Rietveld 408576698