-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "pdf/document_layout.h"
+#include "base/i18n/rtl.h"
+#include "base/test/values_test_util.h"
+#include "base/values.h"
+#include "pdf/page_orientation.h"
+#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
};
TEST_F(DocumentLayoutOptionsTest, DefaultConstructor) {
+ EXPECT_EQ(options_.direction(), base::i18n::UNKNOWN_DIRECTION);
EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kOriginal);
EXPECT_EQ(options_.page_spread(), DocumentLayout::PageSpread::kOneUp);
}
TEST_F(DocumentLayoutOptionsTest, CopyConstructor) {
+ options_.set_direction(base::i18n::RIGHT_TO_LEFT);
options_.RotatePagesClockwise();
options_.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
DocumentLayout::Options copy(options_);
+ EXPECT_EQ(copy.direction(), base::i18n::RIGHT_TO_LEFT);
EXPECT_EQ(copy.default_page_orientation(), PageOrientation::kClockwise90);
EXPECT_EQ(copy.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
+ options_.set_direction(base::i18n::LEFT_TO_RIGHT);
options_.RotatePagesClockwise();
options_.set_page_spread(DocumentLayout::PageSpread::kOneUp);
+ EXPECT_EQ(copy.direction(), base::i18n::RIGHT_TO_LEFT);
EXPECT_EQ(copy.default_page_orientation(), PageOrientation::kClockwise90);
EXPECT_EQ(copy.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
}
TEST_F(DocumentLayoutOptionsTest, CopyAssignment) {
+ options_.set_direction(base::i18n::RIGHT_TO_LEFT);
options_.RotatePagesClockwise();
options_.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
DocumentLayout::Options copy = options_;
+ EXPECT_EQ(copy.direction(), base::i18n::RIGHT_TO_LEFT);
EXPECT_EQ(copy.default_page_orientation(), PageOrientation::kClockwise90);
EXPECT_EQ(copy.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
+ options_.set_direction(base::i18n::LEFT_TO_RIGHT);
options_.RotatePagesClockwise();
options_.set_page_spread(DocumentLayout::PageSpread::kOneUp);
+ EXPECT_EQ(copy.direction(), base::i18n::RIGHT_TO_LEFT);
EXPECT_EQ(copy.default_page_orientation(), PageOrientation::kClockwise90);
EXPECT_EQ(copy.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
}
DocumentLayout::Options copy;
EXPECT_TRUE(copy == options_);
+ options_.set_direction(base::i18n::RIGHT_TO_LEFT);
+ EXPECT_FALSE(copy == options_);
+
+ copy.set_direction(base::i18n::RIGHT_TO_LEFT);
+ EXPECT_TRUE(copy == options_);
+
options_.RotatePagesClockwise();
EXPECT_FALSE(copy == options_);
copy.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
EXPECT_TRUE(copy == options_);
-
- options_.set_page_spread(DocumentLayout::PageSpread::kOneUp);
- EXPECT_FALSE(copy == options_);
-
- copy.set_page_spread(DocumentLayout::PageSpread::kOneUp);
- EXPECT_TRUE(copy == options_);
}
TEST_F(DocumentLayoutOptionsTest, NotEquals) {
EXPECT_FALSE(copy != options_);
}
+TEST_F(DocumentLayoutOptionsTest, ToValueDefault) {
+ base::Value value(options_.ToValue());
+
+ EXPECT_THAT(value, base::test::IsJson(R"({
+ "direction": 0,
+ "defaultPageOrientation": 0,
+ "twoUpViewEnabled": false,
+ })"));
+}
+
+TEST_F(DocumentLayoutOptionsTest, ToValueModified) {
+ options_.set_direction(base::i18n::LEFT_TO_RIGHT);
+ options_.RotatePagesClockwise();
+ options_.set_page_spread(DocumentLayout::PageSpread::kTwoUpOdd);
+ base::Value value(options_.ToValue());
+
+ EXPECT_THAT(value, base::test::IsJson(R"({
+ "direction": 2,
+ "defaultPageOrientation": 1,
+ "twoUpViewEnabled": true,
+ })"));
+}
+
+TEST_F(DocumentLayoutOptionsTest, FromValueDefault) {
+ base::Value value = base::test::ParseJson(R"({
+ "direction": 0,
+ "defaultPageOrientation": 0,
+ "twoUpViewEnabled": false,
+ })");
+ options_.FromValue(value.GetDict());
+
+ EXPECT_EQ(options_, DocumentLayout::Options());
+}
+
+TEST_F(DocumentLayoutOptionsTest, FromValueModified) {
+ base::Value value = base::test::ParseJson(R"({
+ "direction": 2,
+ "defaultPageOrientation": 1,
+ "twoUpViewEnabled": true,
+ })");
+ options_.FromValue(value.GetDict());
+
+ EXPECT_EQ(options_.direction(), base::i18n::LEFT_TO_RIGHT);
+ EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kClockwise90);
+ EXPECT_EQ(options_.page_spread(), DocumentLayout::PageSpread::kTwoUpOdd);
+}
+
TEST_F(DocumentLayoutOptionsTest, RotatePagesClockwise) {
options_.RotatePagesClockwise();
EXPECT_EQ(options_.default_page_orientation(), PageOrientation::kClockwise90);
EXPECT_EQ(gfx::Size(320, 2231), layout_.size());
}
+TEST_F(DocumentLayoutTest, ComputeLayoutOneUpWithNoPages) {
+ SetPageSpread(DocumentLayout::PageSpread::kOneUp);
+
+ layout_.ComputeLayout({});
+ ASSERT_EQ(0u, layout_.page_count());
+}
+
TEST_F(DocumentLayoutTest, DirtySetOnLayoutInputChangeOneUp) {
SetPageSpread(DocumentLayout::PageSpread::kOneUp);
EXPECT_EQ(gfx::Size(800, 1300), layout_.size());
}
+TEST_F(DocumentLayoutTest, ComputeLayoutTwoUpOddWithNoPages) {
+ SetPageSpread(DocumentLayout::PageSpread::kTwoUpOdd);
+
+ layout_.ComputeLayout({});
+ ASSERT_EQ(0u, layout_.page_count());
+}
+
TEST_F(DocumentLayoutTest, DirtySetOnLayoutInputChangeTwoUpOdd) {
SetPageSpread(DocumentLayout::PageSpread::kTwoUpOdd);