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

Side by Side 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: address comments Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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
5 #include "printing/pdf_transform.h"
6
7 #include "printing/units.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/gfx/geometry/rect.h"
10
11 namespace printing {
12
13 namespace {
14
15 const float kDefaultWidth = 8.5 * kPointsPerInch;
16 const float kDefaultHeight = 11.0 * kPointsPerInch;
17 const float kDefaultRatio = kDefaultWidth / kDefaultHeight;
18 const double kTolerance = 0.0001;
19
20 void ExpectDefaultPortraitBox(const ClipBox& box) {
21 EXPECT_FLOAT_EQ(0, box.left);
22 EXPECT_FLOAT_EQ(kDefaultWidth, box.right);
23 EXPECT_FLOAT_EQ(kDefaultHeight, box.top);
24 EXPECT_FLOAT_EQ(0, box.bottom);
25 }
26
27 void ExpectDefaultLandscapeBox(const ClipBox& box) {
28 EXPECT_FLOAT_EQ(0, box.left);
29 EXPECT_FLOAT_EQ(kDefaultHeight, box.right);
30 EXPECT_FLOAT_EQ(kDefaultWidth, box.top);
31 EXPECT_FLOAT_EQ(0, box.bottom);
32 }
33
34 void ExpectBoxesAreEqual(const ClipBox& expected, const ClipBox& actual) {
35 EXPECT_FLOAT_EQ(expected.left, actual.left);
36 EXPECT_FLOAT_EQ(expected.right, actual.right);
37 EXPECT_FLOAT_EQ(expected.top, actual.top);
38 EXPECT_FLOAT_EQ(expected.bottom, actual.bottom);
39 }
40
41 void InitializeBoxToInvalidValues(ClipBox* box) {
42 box->left = box->right = box->top = box->bottom = -1;
43 }
44
45 void InitializeBoxToDefaultPortraitValues(ClipBox* box) {
46 box->left = 0;
47 box->right = kDefaultWidth;
48 box->top = kDefaultHeight;
49 box->bottom = 0;
50 }
51
52 void InitializeBoxToDefaultLandscapeValue(ClipBox* box) {
53 box->left = 0;
54 box->right = kDefaultHeight;
55 box->top = kDefaultWidth;
56 box->bottom = 0;
57 }
58
59 } // namespace
60
61 TEST(PdfTransformTest, CalculateScaleFactor) {
62 gfx::Rect rect(kDefaultWidth, kDefaultHeight);
63 double scale;
64
65 // 1:1
66 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
67 EXPECT_NEAR(1, scale, kTolerance);
68 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
69 EXPECT_NEAR(kDefaultRatio, scale, kTolerance);
70
71 // 1:2
72 rect = gfx::Rect(kDefaultWidth / 2, kDefaultHeight / 2);
73 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
74 EXPECT_NEAR(0.5, scale, kTolerance);
75 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
76 EXPECT_NEAR(kDefaultRatio / 2, scale, kTolerance);
77
78 // 3:1
79 rect = gfx::Rect(kDefaultWidth * 3, kDefaultHeight * 3);
80 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
81 EXPECT_NEAR(3, scale, kTolerance);
82 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
83 EXPECT_NEAR(kDefaultRatio * 3, scale, kTolerance);
84
85 // 3:1, rotated.
86 rect = gfx::Rect(kDefaultHeight * 3, kDefaultWidth * 3);
87 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
88 EXPECT_NEAR(kDefaultRatio * 3, scale, kTolerance);
89 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
90 EXPECT_NEAR(3, scale, kTolerance);
91
92 // Odd size
93 rect = gfx::Rect(10, 1000);
94 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
95 EXPECT_NEAR(0.01634, scale, kTolerance);
96 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
97 EXPECT_NEAR(0.01263, scale, kTolerance);
98 }
99
100 TEST(PdfTransformTest, SetDefaultClipBox) {
101 ClipBox box;
102
103 SetDefaultClipBox(false, &box);
104 ExpectDefaultPortraitBox(box);
105
106 SetDefaultClipBox(true, &box);
107 ExpectDefaultLandscapeBox(box);
108 }
109
110 TEST(PdfTransformTest, CalculateMediaBoxAndCropBox) {
111 ClipBox media_box;
112 ClipBox crop_box;
113
114 // Assume both boxes are there.
115 InitializeBoxToDefaultPortraitValues(&media_box);
116 InitializeBoxToDefaultLandscapeValue(&crop_box);
117 CalculateMediaBoxAndCropBox(true, true, true, &media_box, &crop_box);
118 ExpectDefaultPortraitBox(media_box);
119 ExpectDefaultLandscapeBox(crop_box);
120
121 // Assume both boxes are missing.
122 InitializeBoxToInvalidValues(&media_box);
123 InitializeBoxToInvalidValues(&crop_box);
124 CalculateMediaBoxAndCropBox(false, false, false, &media_box, &crop_box);
125 ExpectDefaultPortraitBox(media_box);
126 ExpectDefaultPortraitBox(crop_box);
127 CalculateMediaBoxAndCropBox(true, false, false, &media_box, &crop_box);
128 ExpectDefaultLandscapeBox(media_box);
129 ExpectDefaultLandscapeBox(crop_box);
130
131 // Assume crop box is missing.
132 ClipBox expected_box;
133 expected_box.left = 0;
134 expected_box.right = 42;
135 expected_box.top = 420;
136 expected_box.bottom = 0;
137 media_box = expected_box;
138 InitializeBoxToInvalidValues(&crop_box);
139 CalculateMediaBoxAndCropBox(false, true, false, &media_box, &crop_box);
140 ExpectBoxesAreEqual(expected_box, media_box);
141 ExpectBoxesAreEqual(expected_box, crop_box);
142
143 // Assume media box is missing.
144 InitializeBoxToInvalidValues(&media_box);
145 CalculateMediaBoxAndCropBox(false, false, true, &media_box, &crop_box);
146 ExpectBoxesAreEqual(expected_box, media_box);
147 ExpectBoxesAreEqual(expected_box, crop_box);
148 }
149
150 TEST(PdfTransformTest, CalculateClipBoxBoundary) {
151 ClipBox media_box;
152 ClipBox crop_box;
153 ClipBox result;
154
155 // media box and crop box are the same.
156 InitializeBoxToDefaultPortraitValues(&media_box);
157 InitializeBoxToDefaultPortraitValues(&crop_box);
158 result = CalculateClipBoxBoundary(media_box, crop_box);
159 ExpectDefaultPortraitBox(result);
160
161 // media box is portrait and crop box is landscape.
162 InitializeBoxToDefaultLandscapeValue(&crop_box);
163 result = CalculateClipBoxBoundary(media_box, crop_box);
164 EXPECT_FLOAT_EQ(0, result.left);
165 EXPECT_FLOAT_EQ(kDefaultWidth, result.right);
166 EXPECT_FLOAT_EQ(kDefaultWidth, result.top);
167 EXPECT_FLOAT_EQ(0, result.bottom);
168
169 // crop box is smaller than media box.
170 crop_box.left = 0;
171 crop_box.right = 100;
172 crop_box.bottom = 0;
173 crop_box.top = 200;
174 result = CalculateClipBoxBoundary(media_box, crop_box);
175 EXPECT_FLOAT_EQ(0, result.left);
176 EXPECT_FLOAT_EQ(100, result.right);
177 EXPECT_FLOAT_EQ(200, result.top);
178 EXPECT_FLOAT_EQ(0, result.bottom);
179
180 // crop box is smaller than the media box in one dimension and longer in the
181 // other.
182 crop_box.left = 0;
183 crop_box.right = 100;
184 crop_box.bottom = 0;
185 crop_box.top = 2000;
186 result = CalculateClipBoxBoundary(media_box, crop_box);
187 EXPECT_FLOAT_EQ(0, result.left);
188 EXPECT_FLOAT_EQ(100, result.right);
189 EXPECT_FLOAT_EQ(kDefaultHeight, result.top);
190 EXPECT_FLOAT_EQ(0, result.bottom);
191 }
192
193 TEST(PdfTransformTest, CalculateScaledClipBoxOffset) {
194 gfx::Rect rect(kDefaultWidth, kDefaultHeight);
195 ClipBox clip_box;
196 double offset_x;
197 double offset_y;
198
199 // |rect| and |clip_box| are the same size.
200 InitializeBoxToDefaultPortraitValues(&clip_box);
201 CalculateScaledClipBoxOffset(rect, clip_box, &offset_x, &offset_y);
202 EXPECT_DOUBLE_EQ(0, offset_x);
203 EXPECT_DOUBLE_EQ(0, offset_y);
204
205 // |rect| is larger than |clip_box|.
206 clip_box.top /= 2;
207 clip_box.right /= 4;
208 CalculateScaledClipBoxOffset(rect, clip_box, &offset_x, &offset_y);
209 EXPECT_DOUBLE_EQ(229.5, offset_x);
210 EXPECT_DOUBLE_EQ(198, offset_y);
211 }
212
213 TEST(PdfTransformTest, CalculateNonScaledClipBoxOffset) {
214 int page_width = kDefaultWidth;
215 int page_height = kDefaultHeight;
216 gfx::Rect rect(kDefaultWidth, kDefaultHeight);
217 ClipBox clip_box;
218 double offset_x;
219 double offset_y;
220
221 // |rect|, page size and |clip_box| are the same.
222 InitializeBoxToDefaultPortraitValues(&clip_box);
223 CalculateNonScaledClipBoxOffset(
224 rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
225 EXPECT_DOUBLE_EQ(0, offset_x);
226 EXPECT_DOUBLE_EQ(0, offset_y);
227 CalculateNonScaledClipBoxOffset(
228 rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
229 EXPECT_DOUBLE_EQ(0, offset_x);
230 EXPECT_DOUBLE_EQ(0, offset_y);
231 CalculateNonScaledClipBoxOffset(
232 rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
233 EXPECT_DOUBLE_EQ(0, offset_x);
234 EXPECT_DOUBLE_EQ(0, offset_y);
235 CalculateNonScaledClipBoxOffset(
236 rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
237 EXPECT_DOUBLE_EQ(180, offset_x);
238 EXPECT_DOUBLE_EQ(-180, offset_y);
239
240 // Smaller |clip_box|.
241 clip_box.top /= 4;
242 clip_box.right /= 2;
243 CalculateNonScaledClipBoxOffset(
244 rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
245 EXPECT_DOUBLE_EQ(0, offset_x);
246 EXPECT_DOUBLE_EQ(594, offset_y);
247 CalculateNonScaledClipBoxOffset(
248 rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
249 EXPECT_DOUBLE_EQ(0, offset_x);
250 EXPECT_DOUBLE_EQ(0, offset_y);
251 CalculateNonScaledClipBoxOffset(
252 rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
253 EXPECT_DOUBLE_EQ(306, offset_x);
254 EXPECT_DOUBLE_EQ(0, offset_y);
255 CalculateNonScaledClipBoxOffset(
256 rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
257 EXPECT_DOUBLE_EQ(486, offset_x);
258 EXPECT_DOUBLE_EQ(414, offset_y);
259
260 // Larger page size.
261 InitializeBoxToDefaultPortraitValues(&clip_box);
262 page_width += 10;
263 page_height += 20;
264 CalculateNonScaledClipBoxOffset(
265 rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
266 EXPECT_DOUBLE_EQ(0, offset_x);
267 EXPECT_DOUBLE_EQ(20, offset_y);
268 CalculateNonScaledClipBoxOffset(
269 rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
270 EXPECT_DOUBLE_EQ(0, offset_x);
271 EXPECT_DOUBLE_EQ(0, offset_y);
272 CalculateNonScaledClipBoxOffset(
273 rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
274 EXPECT_DOUBLE_EQ(10, offset_x);
275 EXPECT_DOUBLE_EQ(0, offset_y);
276 CalculateNonScaledClipBoxOffset(
277 rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
278 EXPECT_DOUBLE_EQ(200, offset_x);
279 EXPECT_DOUBLE_EQ(-170, offset_y);
280 }
281
282 } // namespace printing
OLDNEW
« pdf/DEPS ('K') | « printing/pdf_transform.cc ('k') | printing/printing.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698