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

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: add missing test file 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 float 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 InitializeBoxToInvalidValues(ClipBox* box) {
35 box->left = box->right = box->top = box->bottom = -1;
36 }
37
38 void InitializeBoxToDefaultPortraitValues(ClipBox* box) {
39 box->left = 0;
40 box->right = kDefaultWidth;
41 box->top = kDefaultHeight;
42 box->bottom = 0;
43 }
44
45 void InitializeBoxToDefaultLandscapeValue(ClipBox* box) {
46 box->left = 0;
47 box->right = kDefaultHeight;
48 box->top = kDefaultWidth;
49 box->bottom = 0;
50 }
51
52 } // namespace
53
54 TEST(PdfTransformTest, CalculateScaleFactor) {
55 gfx::Rect rect(kDefaultWidth, kDefaultHeight);
56 double scale;
57
58 // 1:1
59 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
60 EXPECT_NEAR(1, scale, kTolerance);
61 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
62 EXPECT_NEAR(kDefaultRatio, scale, kTolerance);
63
64 // 1:2
65 rect = gfx::Rect(kDefaultWidth / 2, kDefaultHeight / 2);
66 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
67 EXPECT_NEAR(0.5, scale, kTolerance);
68 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
69 EXPECT_NEAR(kDefaultRatio / 2, scale, kTolerance);
70
71 // 3:1
72 rect = gfx::Rect(kDefaultWidth * 3, kDefaultHeight * 3);
73 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
74 EXPECT_NEAR(3, scale, kTolerance);
75 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
76 EXPECT_NEAR(kDefaultRatio * 3, scale, kTolerance);
77
78 // 3:1, rotated.
79 rect = gfx::Rect(kDefaultHeight * 3, kDefaultWidth * 3);
80 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
81 EXPECT_NEAR(kDefaultRatio * 3, scale, kTolerance);
82 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
83 EXPECT_NEAR(3, scale, kTolerance);
84
85 // Odd size
86 rect = gfx::Rect(10, 1000);
87 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, false);
88 EXPECT_NEAR(0.01634, scale, kTolerance);
89 scale = CalculateScaleFactor(rect, kDefaultWidth, kDefaultHeight, true);
90 EXPECT_NEAR(0.01263, scale, kTolerance);
91 }
92
93 TEST(PdfTransformTest, SetDefaultClipBox) {
94 ClipBox box;
95
96 SetDefaultClipBox(false, &box);
97 ExpectDefaultPortraitBox(box);
98
99 SetDefaultClipBox(true, &box);
100 ExpectDefaultLandscapeBox(box);
101 }
102
103 TEST(PdfTransformTest, CalculateMediaBoxAndCropBox) {
104 ClipBox media_box;
105 ClipBox crop_box;
106
107 // Assume both boxes are there.
108 InitializeBoxToDefaultPortraitValues(&media_box);
109 InitializeBoxToDefaultLandscapeValue(&crop_box);
110 CalculateMediaBoxAndCropBox(true, true, true, &media_box, &crop_box);
111 ExpectDefaultPortraitBox(media_box);
112 ExpectDefaultLandscapeBox(crop_box);
113
114 // Assume both boxes are missing.
115 InitializeBoxToInvalidValues(&media_box);
116 InitializeBoxToInvalidValues(&crop_box);
117 CalculateMediaBoxAndCropBox(false, false, false, &media_box, &crop_box);
118 ExpectDefaultPortraitBox(media_box);
119 ExpectDefaultPortraitBox(crop_box);
120 CalculateMediaBoxAndCropBox(true, false, false, &media_box, &crop_box);
121 ExpectDefaultLandscapeBox(media_box);
122 ExpectDefaultLandscapeBox(crop_box);
123
124 // Assume crop box is missing.
125 InitializeBoxToInvalidValues(&crop_box);
126 CalculateMediaBoxAndCropBox(false, true, false, &media_box, &crop_box);
127 ExpectDefaultLandscapeBox(media_box);
128 ExpectDefaultLandscapeBox(crop_box);
129
130 // Assume media box is missing.
131 InitializeBoxToInvalidValues(&media_box);
132 CalculateMediaBoxAndCropBox(false, false, true, &media_box, &crop_box);
133 ExpectDefaultLandscapeBox(media_box);
134 ExpectDefaultLandscapeBox(crop_box);
135 }
136
137 TEST(PdfTransformTest, CalculateClipBoxBoundary) {
138 ClipBox media_box;
139 ClipBox crop_box;
140 ClipBox result;
141
142 // media box and crop box are the same.
143 InitializeBoxToDefaultPortraitValues(&media_box);
144 InitializeBoxToDefaultPortraitValues(&crop_box);
145 result = CalculateClipBoxBoundary(media_box, crop_box);
146 ExpectDefaultPortraitBox(result);
147
148 // media box is portrait and crop box is landscape.
149 InitializeBoxToDefaultLandscapeValue(&crop_box);
150 result = CalculateClipBoxBoundary(media_box, crop_box);
151 EXPECT_FLOAT_EQ(0, result.left);
152 EXPECT_FLOAT_EQ(kDefaultWidth, result.right);
153 EXPECT_FLOAT_EQ(kDefaultWidth, result.top);
154 EXPECT_FLOAT_EQ(0, result.bottom);
155
156 // crop box is smaller than media box.
157 crop_box.left = 0;
158 crop_box.right = 100;
159 crop_box.bottom = 0;
160 crop_box.top = 200;
161 result = CalculateClipBoxBoundary(media_box, crop_box);
162 EXPECT_FLOAT_EQ(0, result.left);
163 EXPECT_FLOAT_EQ(100, result.right);
164 EXPECT_FLOAT_EQ(200, result.top);
165 EXPECT_FLOAT_EQ(0, result.bottom);
166
167 // crop box is smaller than the media box in one dimension and longer in the
168 // other.
169 crop_box.left = 0;
170 crop_box.right = 100;
171 crop_box.bottom = 0;
172 crop_box.top = 2000;
173 result = CalculateClipBoxBoundary(media_box, crop_box);
174 EXPECT_FLOAT_EQ(0, result.left);
175 EXPECT_FLOAT_EQ(100, result.right);
176 EXPECT_FLOAT_EQ(kDefaultHeight, result.top);
177 EXPECT_FLOAT_EQ(0, result.bottom);
178 }
179
180 TEST(PdfTransformTest, CalculateScaledClipBoxOffset) {
181 gfx::Rect rect(kDefaultWidth, kDefaultHeight);
182 ClipBox clip_box;
183 double offset_x;
184 double offset_y;
185
186 // |rect| and |clip_box| are the same size.
187 InitializeBoxToDefaultPortraitValues(&clip_box);
188 CalculateScaledClipBoxOffset(rect, clip_box, &offset_x, &offset_y);
189 EXPECT_DOUBLE_EQ(0, offset_x);
190 EXPECT_DOUBLE_EQ(0, offset_y);
191
192 // |rect| is larger than |clip_box|.
193 clip_box.top /= 2;
194 clip_box.right /= 4;
195 CalculateScaledClipBoxOffset(rect, clip_box, &offset_x, &offset_y);
196 EXPECT_DOUBLE_EQ(229.5, offset_x);
197 EXPECT_DOUBLE_EQ(198, offset_y);
198 }
199
200 TEST(PdfTransformTest, CalculateNonScaledClipBoxOffset) {
201 int page_width = kDefaultWidth;
202 int page_height = kDefaultHeight;
203 gfx::Rect rect(kDefaultWidth, kDefaultHeight);
204 ClipBox clip_box;
205 double offset_x;
206 double offset_y;
207
208 // |rect|, page size and |clip_box| are the same.
209 InitializeBoxToDefaultPortraitValues(&clip_box);
210 CalculateNonScaledClipBoxOffset(
211 rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
212 EXPECT_DOUBLE_EQ(0, offset_x);
213 EXPECT_DOUBLE_EQ(0, offset_y);
214 CalculateNonScaledClipBoxOffset(
215 rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
216 EXPECT_DOUBLE_EQ(0, offset_x);
217 EXPECT_DOUBLE_EQ(0, offset_y);
218 CalculateNonScaledClipBoxOffset(
219 rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
220 EXPECT_DOUBLE_EQ(0, offset_x);
221 EXPECT_DOUBLE_EQ(0, offset_y);
222 CalculateNonScaledClipBoxOffset(
223 rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
224 EXPECT_DOUBLE_EQ(180, offset_x);
225 EXPECT_DOUBLE_EQ(-180, offset_y);
226
227 // Smaller |clip_box|.
228 clip_box.top /= 4;
229 clip_box.right /= 2;
230 CalculateNonScaledClipBoxOffset(
231 rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
232 EXPECT_DOUBLE_EQ(0, offset_x);
233 EXPECT_DOUBLE_EQ(594, offset_y);
234 CalculateNonScaledClipBoxOffset(
235 rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
236 EXPECT_DOUBLE_EQ(0, offset_x);
237 EXPECT_DOUBLE_EQ(0, offset_y);
238 CalculateNonScaledClipBoxOffset(
239 rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
240 EXPECT_DOUBLE_EQ(306, offset_x);
241 EXPECT_DOUBLE_EQ(0, offset_y);
242 CalculateNonScaledClipBoxOffset(
243 rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
244 EXPECT_DOUBLE_EQ(486, offset_x);
245 EXPECT_DOUBLE_EQ(414, offset_y);
246
247 // Larger page size.
248 InitializeBoxToDefaultPortraitValues(&clip_box);
249 page_width += 10;
250 page_height += 20;
251 CalculateNonScaledClipBoxOffset(
252 rect, 0, page_width, page_height, clip_box, &offset_x, &offset_y);
253 EXPECT_DOUBLE_EQ(0, offset_x);
254 EXPECT_DOUBLE_EQ(20, offset_y);
255 CalculateNonScaledClipBoxOffset(
256 rect, 1, page_width, page_height, clip_box, &offset_x, &offset_y);
257 EXPECT_DOUBLE_EQ(0, offset_x);
258 EXPECT_DOUBLE_EQ(0, offset_y);
259 CalculateNonScaledClipBoxOffset(
260 rect, 2, page_width, page_height, clip_box, &offset_x, &offset_y);
261 EXPECT_DOUBLE_EQ(10, offset_x);
262 EXPECT_DOUBLE_EQ(0, offset_y);
263 CalculateNonScaledClipBoxOffset(
264 rect, 3, page_width, page_height, clip_box, &offset_x, &offset_y);
265 EXPECT_DOUBLE_EQ(200, offset_x);
266 EXPECT_DOUBLE_EQ(-170, offset_y);
267 }
268
269 } // namespace printing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698