blob: 9ff283d175dd1428f686ec676f517decd480b6b9 [file] [log] [blame]
// Copyright 2016 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 "third_party/blink/renderer/core/layout/geometry/writing_mode_converter.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/core/testing/core_unit_test_helper.h"
namespace blink {
namespace {
TEST(WritingModeConverterTest, ConvertLogicalOffsetToPhysicalOffset) {
LogicalOffset logical_offset(20, 30);
PhysicalSize outer_size(300, 400);
PhysicalSize inner_size(5, 65);
PhysicalOffset offset;
offset = WritingModeConverter(
{WritingMode::kHorizontalTb, TextDirection::kLtr}, outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(20, 30), offset);
offset = WritingModeConverter(
{WritingMode::kHorizontalTb, TextDirection::kRtl}, outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(275, 30), offset);
offset = WritingModeConverter({WritingMode::kVerticalRl, TextDirection::kLtr},
outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(265, 20), offset);
offset = WritingModeConverter({WritingMode::kVerticalRl, TextDirection::kRtl},
outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(265, 315), offset);
offset = WritingModeConverter({WritingMode::kSidewaysRl, TextDirection::kLtr},
outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(265, 20), offset);
offset = WritingModeConverter({WritingMode::kSidewaysRl, TextDirection::kRtl},
outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(265, 315), offset);
offset = WritingModeConverter({WritingMode::kVerticalLr, TextDirection::kLtr},
outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(30, 20), offset);
offset = WritingModeConverter({WritingMode::kVerticalLr, TextDirection::kRtl},
outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(30, 315), offset);
offset = WritingModeConverter({WritingMode::kSidewaysLr, TextDirection::kLtr},
outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(30, 315), offset);
offset = WritingModeConverter({WritingMode::kSidewaysLr, TextDirection::kRtl},
outer_size)
.ToPhysical(logical_offset, inner_size);
EXPECT_EQ(PhysicalOffset(30, 20), offset);
}
TEST(WritingModeConverterTest, ConvertPhysicalOffsetToLogicalOffset) {
PhysicalOffset physical_offset(20, 30);
PhysicalSize outer_size(300, 400);
PhysicalSize inner_size(5, 65);
LogicalOffset offset;
offset = WritingModeConverter(
{WritingMode::kHorizontalTb, TextDirection::kLtr}, outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(20, 30), offset);
offset = WritingModeConverter(
{WritingMode::kHorizontalTb, TextDirection::kRtl}, outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(275, 30), offset);
offset = WritingModeConverter({WritingMode::kVerticalRl, TextDirection::kLtr},
outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(30, 275), offset);
offset = WritingModeConverter({WritingMode::kVerticalRl, TextDirection::kRtl},
outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(305, 275), offset);
offset = WritingModeConverter({WritingMode::kSidewaysRl, TextDirection::kLtr},
outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(30, 275), offset);
offset = WritingModeConverter({WritingMode::kSidewaysRl, TextDirection::kRtl},
outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(305, 275), offset);
offset = WritingModeConverter({WritingMode::kVerticalLr, TextDirection::kLtr},
outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(30, 20), offset);
offset = WritingModeConverter({WritingMode::kVerticalLr, TextDirection::kRtl},
outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(305, 20), offset);
offset = WritingModeConverter({WritingMode::kSidewaysLr, TextDirection::kLtr},
outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(305, 20), offset);
offset = WritingModeConverter({WritingMode::kSidewaysLr, TextDirection::kRtl},
outer_size)
.ToLogical(physical_offset, inner_size);
EXPECT_EQ(LogicalOffset(30, 20), offset);
}
} // namespace
} // namespace blink