blob: f5b969a88f09277c52b2912b6f7c038eeda9b76d [file] [log] [blame]
// Copyright 2017 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 "core/layout/ng/geometry/ng_physical_offset_rect.h"
#include "platform/wtf/allocator/Partitions.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
namespace {
struct UniteTestData {
NGPhysicalOffsetRect a;
NGPhysicalOffsetRect b;
NGPhysicalOffsetRect expected;
} unite_test_data[] = {
{{}, {}, {}},
{{},
{{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}},
{{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}}},
{{{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}},
{},
{{LayoutUnit(1), LayoutUnit(2)}, {LayoutUnit(3), LayoutUnit(4)}}},
{{{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}},
{{LayoutUnit(200), LayoutUnit(50)}, {LayoutUnit(200), LayoutUnit(200)}},
{{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}}},
{{{LayoutUnit(200), LayoutUnit(50)}, {LayoutUnit(200), LayoutUnit(200)}},
{{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}},
{{LayoutUnit(100), LayoutUnit(50)}, {LayoutUnit(300), LayoutUnit(200)}}},
};
std::ostream& operator<<(std::ostream& os, const UniteTestData& data) {
WTF::Partitions::Initialize(nullptr);
return os << "Unite " << data.a << " and " << data.b;
}
class NGPhysicalOffsetRectUniteTest
: public ::testing::Test,
public ::testing::WithParamInterface<UniteTestData> {};
INSTANTIATE_TEST_CASE_P(NGGeometryUnitsTest,
NGPhysicalOffsetRectUniteTest,
::testing::ValuesIn(unite_test_data));
TEST_P(NGPhysicalOffsetRectUniteTest, Data) {
const auto& data = GetParam();
NGPhysicalOffsetRect actual = data.a;
actual.Unite(data.b);
EXPECT_EQ(data.expected, actual);
}
} // namespace
} // namespace blink