[go: nahoru, domu]

blob: ef8a2da8f93bcfdbf783fa6bd37a482b6d6493f6 [file] [log] [blame]
Avi Drissmandb497b32022-09-15 19:47:281// Copyright 2019 The Chromium Authors
K Moonbd80ce72019-07-26 19:27:502// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "pdf/document_layout.h"
6
K. Moone2dda8f22021-10-05 00:37:297#include "base/i18n/rtl.h"
8#include "base/test/values_test_util.h"
9#include "base/values.h"
10#include "pdf/page_orientation.h"
11#include "testing/gmock/include/gmock/gmock.h"
K Moonbd80ce72019-07-26 19:27:5012#include "testing/gtest/include/gtest/gtest.h"
Ankit Kumar 🌪️00798692020-08-26 22:57:1413#include "ui/gfx/geometry/rect.h"
Ankit Kumar 🌪️e35101152020-07-30 09:57:5914#include "ui/gfx/geometry/size.h"
K Moonbd80ce72019-07-26 19:27:5015
16namespace chrome_pdf {
17
18namespace {
19
K Mooneb9e0002019-08-06 19:25:3220class DocumentLayoutOptionsTest : public testing::Test {
21 protected:
22 DocumentLayout::Options options_;
23};
24
K Mooneb9e0002019-08-06 19:25:3225TEST_F(DocumentLayoutOptionsTest, DefaultConstructor) {
K. Moone2dda8f22021-10-05 00:37:2926 EXPECT_EQ(options_.direction(), base::i18n::UNKNOWN_DIRECTION);
K Moon9a62bf42019-08-07 20:05:3627 EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kOriginal);
Daniel Hosseinianbe882062021-04-22 01:22:3928 EXPECT_EQ(options_.page_spread(), DocumentLayout::PageSpread::kOneUp);
K Mooneb9e0002019-08-06 19:25:3229}
30
31TEST_F(DocumentLayoutOptionsTest, CopyConstructor) {
K. Moone2dda8f22021-10-05 00:37:2932 options_.set_direction(base::i18n::RIGHT_TO_LEFT);
K Mooneb9e0002019-08-06 19:25:3233 options_.RotatePagesClockwise();
Daniel Hosseinianbe882062021-04-22 01:22:3934 options_.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
K Mooneb9e0002019-08-06 19:25:3235
36 DocumentLayout::Options copy(options_);
K. Moone2dda8f22021-10-05 00:37:2937 EXPECT_EQ(copy.direction(), base::i18n::RIGHT_TO_LEFT);
K Moon9a62bf42019-08-07 20:05:3638 EXPECT_EQ(copy.default_page_orientation(), PageOrientation::kClockwise90);
Daniel Hosseinianbe882062021-04-22 01:22:3939 EXPECT_EQ(copy.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
K Mooneb9e0002019-08-06 19:25:3240
K. Moone2dda8f22021-10-05 00:37:2941 options_.set_direction(base::i18n::LEFT_TO_RIGHT);
K Mooneb9e0002019-08-06 19:25:3242 options_.RotatePagesClockwise();
Daniel Hosseinianbe882062021-04-22 01:22:3943 options_.set_page_spread(DocumentLayout::PageSpread::kOneUp);
K. Moone2dda8f22021-10-05 00:37:2944 EXPECT_EQ(copy.direction(), base::i18n::RIGHT_TO_LEFT);
K Moon9a62bf42019-08-07 20:05:3645 EXPECT_EQ(copy.default_page_orientation(), PageOrientation::kClockwise90);
Daniel Hosseinianbe882062021-04-22 01:22:3946 EXPECT_EQ(copy.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
K Mooneb9e0002019-08-06 19:25:3247}
48
49TEST_F(DocumentLayoutOptionsTest, CopyAssignment) {
K. Moone2dda8f22021-10-05 00:37:2950 options_.set_direction(base::i18n::RIGHT_TO_LEFT);
K Mooneb9e0002019-08-06 19:25:3251 options_.RotatePagesClockwise();
Daniel Hosseinianbe882062021-04-22 01:22:3952 options_.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
K Mooneb9e0002019-08-06 19:25:3253
Hui Yingst28f9f5c2020-01-16 19:52:5654 DocumentLayout::Options copy = options_;
K. Moone2dda8f22021-10-05 00:37:2955 EXPECT_EQ(copy.direction(), base::i18n::RIGHT_TO_LEFT);
K Moon9a62bf42019-08-07 20:05:3656 EXPECT_EQ(copy.default_page_orientation(), PageOrientation::kClockwise90);
Daniel Hosseinianbe882062021-04-22 01:22:3957 EXPECT_EQ(copy.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
K Mooneb9e0002019-08-06 19:25:3258
K. Moone2dda8f22021-10-05 00:37:2959 options_.set_direction(base::i18n::LEFT_TO_RIGHT);
K Mooneb9e0002019-08-06 19:25:3260 options_.RotatePagesClockwise();
Daniel Hosseinianbe882062021-04-22 01:22:3961 options_.set_page_spread(DocumentLayout::PageSpread::kOneUp);
K. Moone2dda8f22021-10-05 00:37:2962 EXPECT_EQ(copy.direction(), base::i18n::RIGHT_TO_LEFT);
K Moon9a62bf42019-08-07 20:05:3663 EXPECT_EQ(copy.default_page_orientation(), PageOrientation::kClockwise90);
Daniel Hosseinianbe882062021-04-22 01:22:3964 EXPECT_EQ(copy.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
Hui Yingst28f9f5c2020-01-16 19:52:5665}
66
67TEST_F(DocumentLayoutOptionsTest, Equals) {
68 EXPECT_TRUE(options_ == options_);
69
70 DocumentLayout::Options copy;
71 EXPECT_TRUE(copy == options_);
72
K. Moone2dda8f22021-10-05 00:37:2973 options_.set_direction(base::i18n::RIGHT_TO_LEFT);
74 EXPECT_FALSE(copy == options_);
75
76 copy.set_direction(base::i18n::RIGHT_TO_LEFT);
77 EXPECT_TRUE(copy == options_);
78
Hui Yingst28f9f5c2020-01-16 19:52:5679 options_.RotatePagesClockwise();
80 EXPECT_FALSE(copy == options_);
81
82 copy.RotatePagesClockwise();
83 EXPECT_TRUE(copy == options_);
84
85 options_.RotatePagesCounterclockwise();
86 EXPECT_FALSE(copy == options_);
87
88 copy.RotatePagesCounterclockwise();
89 EXPECT_TRUE(copy == options_);
90
Daniel Hosseinianbe882062021-04-22 01:22:3991 options_.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
Hui Yingst28f9f5c2020-01-16 19:52:5692 EXPECT_FALSE(copy == options_);
93
Daniel Hosseinianbe882062021-04-22 01:22:3994 copy.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
Hui Yingst28f9f5c2020-01-16 19:52:5695 EXPECT_TRUE(copy == options_);
Hui Yingst28f9f5c2020-01-16 19:52:5696}
97
98TEST_F(DocumentLayoutOptionsTest, NotEquals) {
99 // Given that "!=" is defined as "!(==)", minimal tests should be sufficient
100 // here.
101 EXPECT_FALSE(options_ != options_);
102
103 DocumentLayout::Options copy;
104 EXPECT_FALSE(copy != options_);
105
106 options_.RotatePagesClockwise();
107 EXPECT_TRUE(copy != options_);
108
109 copy.RotatePagesClockwise();
110 EXPECT_FALSE(copy != options_);
K Mooneb9e0002019-08-06 19:25:32111}
112
K. Moone2dda8f22021-10-05 00:37:29113TEST_F(DocumentLayoutOptionsTest, ToValueDefault) {
Lei Zhang277b156c2022-04-11 22:58:51114 base::Value value(options_.ToValue());
K. Moone2dda8f22021-10-05 00:37:29115
116 EXPECT_THAT(value, base::test::IsJson(R"({
117 "direction": 0,
118 "defaultPageOrientation": 0,
119 "twoUpViewEnabled": false,
120 })"));
121}
122
123TEST_F(DocumentLayoutOptionsTest, ToValueModified) {
124 options_.set_direction(base::i18n::LEFT_TO_RIGHT);
125 options_.RotatePagesClockwise();
126 options_.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
Lei Zhang277b156c2022-04-11 22:58:51127 base::Value value(options_.ToValue());
K. Moone2dda8f22021-10-05 00:37:29128
129 EXPECT_THAT(value, base::test::IsJson(R"({
130 "direction": 2,
131 "defaultPageOrientation": 1,
132 "twoUpViewEnabled": true,
133 })"));
134}
135
136TEST_F(DocumentLayoutOptionsTest, FromValueDefault) {
Lei Zhang277b156c2022-04-11 22:58:51137 base::Value value = base::test::ParseJson(R"({
K. Moone2dda8f22021-10-05 00:37:29138 "direction": 0,
139 "defaultPageOrientation": 0,
140 "twoUpViewEnabled": false,
Lei Zhang277b156c2022-04-11 22:58:51141 })");
142 options_.FromValue(value.GetDict());
K. Moone2dda8f22021-10-05 00:37:29143
144 EXPECT_EQ(options_, DocumentLayout::Options());
145}
146
147TEST_F(DocumentLayoutOptionsTest, FromValueModified) {
Lei Zhang277b156c2022-04-11 22:58:51148 base::Value value = base::test::ParseJson(R"({
K. Moone2dda8f22021-10-05 00:37:29149 "direction": 2,
150 "defaultPageOrientation": 1,
151 "twoUpViewEnabled": true,
Lei Zhang277b156c2022-04-11 22:58:51152 })");
153 options_.FromValue(value.GetDict());
K. Moone2dda8f22021-10-05 00:37:29154
155 EXPECT_EQ(options_.direction(), base::i18n::LEFT_TO_RIGHT);
156 EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kClockwise90);
157 EXPECT_EQ(options_.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
158}
159
K Mooneb9e0002019-08-06 19:25:32160TEST_F(DocumentLayoutOptionsTest, RotatePagesClockwise) {
161 options_.RotatePagesClockwise();
K Moon9a62bf42019-08-07 20:05:36162 EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kClockwise90);
K Mooneb9e0002019-08-06 19:25:32163
164 options_.RotatePagesClockwise();
K Moon9a62bf42019-08-07 20:05:36165 EXPECT_EQ(options_.default_page_orientation(),
166 PageOrientation::kClockwise180);
K Mooneb9e0002019-08-06 19:25:32167
168 options_.RotatePagesClockwise();
K Moon9a62bf42019-08-07 20:05:36169 EXPECT_EQ(options_.default_page_orientation(),
170 PageOrientation::kClockwise270);
K Mooneb9e0002019-08-06 19:25:32171
172 options_.RotatePagesClockwise();
K Moon9a62bf42019-08-07 20:05:36173 EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kOriginal);
K Mooneb9e0002019-08-06 19:25:32174}
175
176TEST_F(DocumentLayoutOptionsTest, RotatePagesCounterclockwise) {
177 options_.RotatePagesCounterclockwise();
K Moon9a62bf42019-08-07 20:05:36178 EXPECT_EQ(options_.default_page_orientation(),
179 PageOrientation::kClockwise270);
K Mooneb9e0002019-08-06 19:25:32180
181 options_.RotatePagesCounterclockwise();
K Moon9a62bf42019-08-07 20:05:36182 EXPECT_EQ(options_.default_page_orientation(),
183 PageOrientation::kClockwise180);
K Mooneb9e0002019-08-06 19:25:32184
185 options_.RotatePagesCounterclockwise();
K Moon9a62bf42019-08-07 20:05:36186 EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kClockwise90);
K Mooneb9e0002019-08-06 19:25:32187
188 options_.RotatePagesCounterclockwise();
K Moon9a62bf42019-08-07 20:05:36189 EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kOriginal);
K Mooneb9e0002019-08-06 19:25:32190}
191
Daniel Hosseinianbcbedda2021-04-23 19:09:51192class DocumentLayoutTest : public testing::Test {
193 protected:
194 void SetPageSpread(DocumentLayout::PageSpread page_spread) {
195 DocumentLayout::Options options;
196 options.set_page_spread(page_spread);
197 layout_.SetOptions(options);
198 }
199
200 DocumentLayout layout_;
201};
202
K Moonbd80ce72019-07-26 19:27:50203TEST_F(DocumentLayoutTest, DefaultConstructor) {
K Moon9a62bf42019-08-07 20:05:36204 EXPECT_EQ(layout_.options().default_page_orientation(),
205 PageOrientation::kOriginal);
Daniel Hosseinianbe882062021-04-22 01:22:39206 EXPECT_EQ(layout_.options().page_spread(),
207 DocumentLayout::PageSpread::kOneUp);
K Moon6d326b92019-09-19 22:42:07208 EXPECT_FALSE(layout_.dirty());
Ankit Kumar 🌪️e35101152020-07-30 09:57:59209 EXPECT_EQ(layout_.size(), gfx::Size(0, 0));
K Moonff7ec672019-08-14 19:19:56210 EXPECT_EQ(layout_.page_count(), 0u);
K Moonbd80ce72019-07-26 19:27:50211}
212
K Mooneb9e0002019-08-06 19:25:32213TEST_F(DocumentLayoutTest, SetOptionsDoesNotRecomputeLayout) {
Daniel Hosseinianbcbedda2021-04-23 19:09:51214 layout_.ComputeLayout({{100, 200}});
Ankit Kumar 🌪️e35101152020-07-30 09:57:59215 EXPECT_EQ(layout_.size(), gfx::Size(100, 200));
K Moonbd80ce72019-07-26 19:27:50216
K Mooneb9e0002019-08-06 19:25:32217 DocumentLayout::Options options;
218 options.RotatePagesClockwise();
K Moon6d326b92019-09-19 22:42:07219 layout_.SetOptions(options);
K Moon9a62bf42019-08-07 20:05:36220 EXPECT_EQ(layout_.options().default_page_orientation(),
221 PageOrientation::kClockwise90);
Ankit Kumar 🌪️e35101152020-07-30 09:57:59222 EXPECT_EQ(layout_.size(), gfx::Size(100, 200));
K Moonbd80ce72019-07-26 19:27:50223}
224
Hui Yingst28f9f5c2020-01-16 19:52:56225TEST_F(DocumentLayoutTest, DirtySetOnOptionsChange) {
K Moon6d326b92019-09-19 22:42:07226 DocumentLayout::Options options;
227 layout_.SetOptions(options);
228 EXPECT_FALSE(layout_.dirty());
229
230 options.RotatePagesClockwise();
231 layout_.SetOptions(options);
232 EXPECT_TRUE(layout_.dirty());
Hui Yingst28f9f5c2020-01-16 19:52:56233
234 layout_.clear_dirty();
235
Daniel Hosseinianbe882062021-04-22 01:22:39236 options.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
Hui Yingst28f9f5c2020-01-16 19:52:56237 layout_.SetOptions(options);
238 EXPECT_TRUE(layout_.dirty());
239}
240
241TEST_F(DocumentLayoutTest, DirtyNotSetOnSameOptions) {
242 DocumentLayout::Options options;
Daniel Hosseinianbe882062021-04-22 01:22:39243 options.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
Hui Yingst28f9f5c2020-01-16 19:52:56244 layout_.SetOptions(options);
245 EXPECT_TRUE(layout_.dirty());
246
247 layout_.clear_dirty();
248
Daniel Hosseinianbe882062021-04-22 01:22:39249 options.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
Hui Yingst28f9f5c2020-01-16 19:52:56250 layout_.SetOptions(options);
251 EXPECT_FALSE(layout_.dirty());
K Moon6d326b92019-09-19 22:42:07252}
253
Daniel Hosseinianbcbedda2021-04-23 19:09:51254TEST_F(DocumentLayoutTest, ComputeLayoutOneUp) {
255 SetPageSpread(DocumentLayout::PageSpread::kOneUp);
256
Ankit Kumar 🌪️e35101152020-07-30 09:57:59257 std::vector<gfx::Size> page_sizes{
Jeremy Chinsen08beb482019-08-07 01:58:54258 {300, 400}, {400, 500}, {300, 400}, {200, 300}};
Daniel Hosseinianbcbedda2021-04-23 19:09:51259 layout_.ComputeLayout(page_sizes);
K Moonff7ec672019-08-14 19:19:56260 ASSERT_EQ(4u, layout_.page_count());
Ankit Kumar 🌪️00798692020-08-26 22:57:14261 EXPECT_EQ(gfx::Rect(50, 0, 300, 400), layout_.page_rect(0));
262 EXPECT_EQ(gfx::Rect(0, 404, 400, 500), layout_.page_rect(1));
263 EXPECT_EQ(gfx::Rect(50, 908, 300, 400), layout_.page_rect(2));
264 EXPECT_EQ(gfx::Rect(100, 1312, 200, 300), layout_.page_rect(3));
265 EXPECT_EQ(gfx::Rect(55, 3, 290, 390), layout_.page_bounds_rect(0));
266 EXPECT_EQ(gfx::Rect(5, 407, 390, 490), layout_.page_bounds_rect(1));
267 EXPECT_EQ(gfx::Rect(55, 911, 290, 390), layout_.page_bounds_rect(2));
268 EXPECT_EQ(gfx::Rect(105, 1315, 190, 290), layout_.page_bounds_rect(3));
Ankit Kumar 🌪️e35101152020-07-30 09:57:59269 EXPECT_EQ(gfx::Size(400, 1612), layout_.size());
Jeremy Chinsen08beb482019-08-07 01:58:54270
271 page_sizes = {{240, 300}, {320, 400}, {250, 360}, {300, 600}, {270, 555}};
Daniel Hosseinianbcbedda2021-04-23 19:09:51272 layout_.ComputeLayout(page_sizes);
K Moonff7ec672019-08-14 19:19:56273 ASSERT_EQ(5u, layout_.page_count());
Ankit Kumar 🌪️00798692020-08-26 22:57:14274 EXPECT_EQ(gfx::Rect(40, 0, 240, 300), layout_.page_rect(0));
275 EXPECT_EQ(gfx::Rect(0, 304, 320, 400), layout_.page_rect(1));
276 EXPECT_EQ(gfx::Rect(35, 708, 250, 360), layout_.page_rect(2));
277 EXPECT_EQ(gfx::Rect(10, 1072, 300, 600), layout_.page_rect(3));
278 EXPECT_EQ(gfx::Rect(25, 1676, 270, 555), layout_.page_rect(4));
279 EXPECT_EQ(gfx::Rect(45, 3, 230, 290), layout_.page_bounds_rect(0));
280 EXPECT_EQ(gfx::Rect(5, 307, 310, 390), layout_.page_bounds_rect(1));
281 EXPECT_EQ(gfx::Rect(40, 711, 240, 350), layout_.page_bounds_rect(2));
282 EXPECT_EQ(gfx::Rect(15, 1075, 290, 590), layout_.page_bounds_rect(3));
283 EXPECT_EQ(gfx::Rect(30, 1679, 260, 545), layout_.page_bounds_rect(4));
Ankit Kumar 🌪️e35101152020-07-30 09:57:59284 EXPECT_EQ(gfx::Size(320, 2231), layout_.size());
Jeremy Chinsen08beb482019-08-07 01:58:54285}
286
K. Moonc5825602021-11-01 23:34:55287TEST_F(DocumentLayoutTest, ComputeLayoutOneUpWithNoPages) {
288 SetPageSpread(DocumentLayout::PageSpread::kOneUp);
289
290 layout_.ComputeLayout({});
291 ASSERT_EQ(0u, layout_.page_count());
292}
293
Daniel Hosseinianbcbedda2021-04-23 19:09:51294TEST_F(DocumentLayoutTest, DirtySetOnLayoutInputChangeOneUp) {
295 SetPageSpread(DocumentLayout::PageSpread::kOneUp);
296
297 layout_.ComputeLayout({{100, 200}});
298 EXPECT_TRUE(layout_.dirty());
299 layout_.clear_dirty();
300 EXPECT_FALSE(layout_.dirty());
301
302 layout_.ComputeLayout({{100, 200}});
303 EXPECT_FALSE(layout_.dirty());
304
305 layout_.ComputeLayout({{200, 100}});
306 EXPECT_TRUE(layout_.dirty());
307 layout_.clear_dirty();
308
309 layout_.ComputeLayout({{200, 100}, {300, 300}});
310 EXPECT_TRUE(layout_.dirty());
311 layout_.clear_dirty();
312
313 layout_.ComputeLayout({{200, 100}});
314 EXPECT_TRUE(layout_.dirty());
315}
316
317TEST_F(DocumentLayoutTest, ComputeLayoutTwoUpOdd) {
318 SetPageSpread(DocumentLayout::PageSpread::kTwoUpOdd);
319
Jeremy Chinsend6fd27ce2019-08-06 00:40:17320 // Test case where the widest page is on the right.
Ankit Kumar 🌪️e35101152020-07-30 09:57:59321 std::vector<gfx::Size> page_sizes{
Jeremy Chinsen4a65aad2019-08-07 00:14:33322 {826, 1066}, {1066, 826}, {826, 1066}, {826, 900}};
Daniel Hosseinianbcbedda2021-04-23 19:09:51323 layout_.ComputeLayout(page_sizes);
K Moonff7ec672019-08-14 19:19:56324 ASSERT_EQ(4u, layout_.page_count());
Ankit Kumar 🌪️00798692020-08-26 22:57:14325 EXPECT_EQ(gfx::Rect(240, 0, 826, 1066), layout_.page_rect(0));
326 EXPECT_EQ(gfx::Rect(1066, 0, 1066, 826), layout_.page_rect(1));
327 EXPECT_EQ(gfx::Rect(240, 1066, 826, 1066), layout_.page_rect(2));
328 EXPECT_EQ(gfx::Rect(1066, 1066, 826, 900), layout_.page_rect(3));
329 EXPECT_EQ(gfx::Rect(245, 3, 820, 1056), layout_.page_bounds_rect(0));
330 EXPECT_EQ(gfx::Rect(1067, 3, 1060, 816), layout_.page_bounds_rect(1));
331 EXPECT_EQ(gfx::Rect(245, 1069, 820, 1056), layout_.page_bounds_rect(2));
332 EXPECT_EQ(gfx::Rect(1067, 1069, 820, 890), layout_.page_bounds_rect(3));
Ankit Kumar 🌪️e35101152020-07-30 09:57:59333 EXPECT_EQ(gfx::Size(2132, 2132), layout_.size());
Jeremy Chinsend6fd27ce2019-08-06 00:40:17334
335 // Test case where the widest page is on the left.
Jeremy Chinsen4a65aad2019-08-07 00:14:33336 page_sizes = {{1066, 826}, {820, 1056}, {820, 890}, {826, 1066}};
Daniel Hosseinianbcbedda2021-04-23 19:09:51337 layout_.ComputeLayout(page_sizes);
K Moonff7ec672019-08-14 19:19:56338 ASSERT_EQ(4u, layout_.page_count());
Ankit Kumar 🌪️00798692020-08-26 22:57:14339 EXPECT_EQ(gfx::Rect(0, 0, 1066, 826), layout_.page_rect(0));
340 EXPECT_EQ(gfx::Rect(1066, 0, 820, 1056), layout_.page_rect(1));
341 EXPECT_EQ(gfx::Rect(246, 1056, 820, 890), layout_.page_rect(2));
342 EXPECT_EQ(gfx::Rect(1066, 1056, 826, 1066), layout_.page_rect(3));
343 EXPECT_EQ(gfx::Rect(5, 3, 1060, 816), layout_.page_bounds_rect(0));
344 EXPECT_EQ(gfx::Rect(1067, 3, 814, 1046), layout_.page_bounds_rect(1));
345 EXPECT_EQ(gfx::Rect(251, 1059, 814, 880), layout_.page_bounds_rect(2));
346 EXPECT_EQ(gfx::Rect(1067, 1059, 820, 1056), layout_.page_bounds_rect(3));
Ankit Kumar 🌪️e35101152020-07-30 09:57:59347 EXPECT_EQ(gfx::Size(2132, 2122), layout_.size());
Jeremy Chinsend6fd27ce2019-08-06 00:40:17348
349 // Test case where there's an odd # of pages.
Jeremy Chinsen4a65aad2019-08-07 00:14:33350 page_sizes = {{200, 300}, {400, 200}, {300, 600}, {250, 500}, {300, 400}};
Daniel Hosseinianbcbedda2021-04-23 19:09:51351 layout_.ComputeLayout(page_sizes);
K Moonff7ec672019-08-14 19:19:56352 ASSERT_EQ(5u, layout_.page_count());
Ankit Kumar 🌪️00798692020-08-26 22:57:14353 EXPECT_EQ(gfx::Rect(200, 0, 200, 300), layout_.page_rect(0));
354 EXPECT_EQ(gfx::Rect(400, 0, 400, 200), layout_.page_rect(1));
355 EXPECT_EQ(gfx::Rect(100, 300, 300, 600), layout_.page_rect(2));
356 EXPECT_EQ(gfx::Rect(400, 300, 250, 500), layout_.page_rect(3));
357 EXPECT_EQ(gfx::Rect(100, 900, 300, 400), layout_.page_rect(4));
358 EXPECT_EQ(gfx::Rect(205, 3, 194, 290), layout_.page_bounds_rect(0));
359 EXPECT_EQ(gfx::Rect(401, 3, 394, 190), layout_.page_bounds_rect(1));
360 EXPECT_EQ(gfx::Rect(105, 303, 294, 590), layout_.page_bounds_rect(2));
361 EXPECT_EQ(gfx::Rect(401, 303, 244, 490), layout_.page_bounds_rect(3));
362 EXPECT_EQ(gfx::Rect(105, 903, 290, 390), layout_.page_bounds_rect(4));
Ankit Kumar 🌪️e35101152020-07-30 09:57:59363 EXPECT_EQ(gfx::Size(800, 1300), layout_.size());
Jeremy Chinsend6fd27ce2019-08-06 00:40:17364}
365
K. Moonc5825602021-11-01 23:34:55366TEST_F(DocumentLayoutTest, ComputeLayoutTwoUpOddWithNoPages) {
367 SetPageSpread(DocumentLayout::PageSpread::kTwoUpOdd);
368
369 layout_.ComputeLayout({});
370 ASSERT_EQ(0u, layout_.page_count());
371}
372
Daniel Hosseinianbcbedda2021-04-23 19:09:51373TEST_F(DocumentLayoutTest, DirtySetOnLayoutInputChangeTwoUpOdd) {
374 SetPageSpread(DocumentLayout::PageSpread::kTwoUpOdd);
375
376 layout_.ComputeLayout({{100, 200}, {200, 100}});
K Moon6d326b92019-09-19 22:42:07377 EXPECT_TRUE(layout_.dirty());
378 layout_.clear_dirty();
379 EXPECT_FALSE(layout_.dirty());
380
Daniel Hosseinianbcbedda2021-04-23 19:09:51381 layout_.ComputeLayout({{100, 200}, {200, 100}});
K Moon6d326b92019-09-19 22:42:07382 EXPECT_FALSE(layout_.dirty());
383
Daniel Hosseinianbcbedda2021-04-23 19:09:51384 layout_.ComputeLayout({{200, 100}, {100, 200}});
K Moon6d326b92019-09-19 22:42:07385 EXPECT_TRUE(layout_.dirty());
386 layout_.clear_dirty();
387
Daniel Hosseinianbcbedda2021-04-23 19:09:51388 layout_.ComputeLayout({{200, 100}, {100, 200}, {300, 300}});
K Moon6d326b92019-09-19 22:42:07389 EXPECT_TRUE(layout_.dirty());
390 layout_.clear_dirty();
391
Daniel Hosseinianbcbedda2021-04-23 19:09:51392 layout_.ComputeLayout({{200, 100}, {100, 200}});
K Moon6d326b92019-09-19 22:42:07393 EXPECT_TRUE(layout_.dirty());
394}
395
K Moonbd80ce72019-07-26 19:27:50396} // namespace
397
398} // namespace chrome_pdf