blob: 8090a0e4c41a571d752105047039d95cc4d20eb8 [file] [log] [blame]
// Copyright 2019 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 "ui/gfx/overlay_transform_utils.h"
#include "cc/base/math_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/rect.h"
namespace gfx {
namespace {
TEST(OverlayTransformUtilTest, All) {
const Size viewport_bounds(100, 200);
const Rect original(10, 10, 50, 100);
struct TestCase {
OverlayTransform overlay_transform;
Rect transformed;
};
TestCase test_cases[] = {
{OVERLAY_TRANSFORM_NONE, Rect(10, 10, 50, 100)},
{OVERLAY_TRANSFORM_FLIP_HORIZONTAL, Rect(40, 10, 50, 100)},
{OVERLAY_TRANSFORM_FLIP_VERTICAL, Rect(10, 90, 50, 100)},
{OVERLAY_TRANSFORM_ROTATE_90, Rect(90, 10, 100, 50)},
{OVERLAY_TRANSFORM_ROTATE_180, Rect(40, 90, 50, 100)},
{OVERLAY_TRANSFORM_ROTATE_270, Rect(10, 40, 100, 50)},
};
for (const auto& test_case : test_cases) {
SCOPED_TRACE(test_case.overlay_transform);
auto transform = OverlayTransformToTransform(test_case.overlay_transform,
gfx::SizeF(viewport_bounds));
EXPECT_EQ(test_case.transformed,
cc::MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(
transform, original));
auto transformed_viewport_size =
cc::MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(
transform, gfx::Rect(viewport_bounds))
.size();
auto inverse_transform = OverlayTransformToTransform(
InvertOverlayTransform(test_case.overlay_transform),
gfx::SizeF(transformed_viewport_size));
EXPECT_EQ(original, cc::MathUtil::MapEnclosedRectWith2dAxisAlignedTransform(
inverse_transform, test_case.transformed));
}
}
} // namespace
} // namespace gfx