Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1259)

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_layout_inline_items_builder_test.cc

Issue 2811783002: [LayoutNG] Move inline files to the inline directory (Closed)
Patch Set: Fix unit tests Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/ng/ng_layout_inline_items_builder_test.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_layout_inline_items_builder_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_layout_inline_items_builder_test.cc
deleted file mode 100644
index b54ec89f672a1b0773f67fafb08b7b2d5e15757a..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/layout/ng/ng_layout_inline_items_builder_test.cc
+++ /dev/null
@@ -1,338 +0,0 @@
-// 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 "core/layout/ng/ng_layout_inline_items_builder.h"
-
-#include "core/layout/LayoutInline.h"
-#include "core/layout/ng/ng_inline_node.h"
-#include "core/style/ComputedStyle.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace blink {
-
-namespace {
-
-static PassRefPtr<ComputedStyle> CreateWhitespaceStyle(EWhiteSpace whitespace) {
- RefPtr<ComputedStyle> style(ComputedStyle::Create());
- style->SetWhiteSpace(whitespace);
- return style.Release();
-}
-
-class NGLayoutInlineItemsBuilderTest : public ::testing::Test {
- protected:
- void SetUp() override { style_ = ComputedStyle::Create(); }
-
- void SetWhiteSpace(EWhiteSpace whitespace) {
- style_->SetWhiteSpace(whitespace);
- }
-
- const String& TestAppend(const String inputs[], int size) {
- items_.Clear();
- NGLayoutInlineItemsBuilder builder(&items_);
- for (int i = 0; i < size; i++)
- builder.Append(inputs[i], style_.Get());
- text_ = builder.ToString();
- ValidateItems();
- return text_;
- }
-
- const String& TestAppend(const String& input) {
- String inputs[] = {input};
- return TestAppend(inputs, 1);
- }
-
- const String& TestAppend(const String& input1, const String& input2) {
- String inputs[] = {input1, input2};
- return TestAppend(inputs, 2);
- }
-
- const String& TestAppend(const String& input1,
- const String& input2,
- const String& input3) {
- String inputs[] = {input1, input2, input3};
- return TestAppend(inputs, 3);
- }
-
- void ValidateItems() {
- unsigned current_offset = 0;
- for (unsigned i = 0; i < items_.size(); i++) {
- const NGLayoutInlineItem& item = items_[i];
- EXPECT_EQ(current_offset, item.StartOffset());
- EXPECT_LT(item.StartOffset(), item.EndOffset());
- current_offset = item.EndOffset();
- }
- EXPECT_EQ(current_offset, text_.length());
- }
-
- Vector<NGLayoutInlineItem> items_;
- String text_;
- RefPtr<ComputedStyle> style_;
-};
-
-#define TestWhitespaceValue(expected, input, whitespace) \
- SetWhiteSpace(whitespace); \
- EXPECT_EQ(expected, TestAppend(input)) << "white-space: " #whitespace;
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseSpaces) {
- String input("text text text text");
- String collapsed("text text text text");
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kNormal);
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kNowrap);
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kWebkitNowrap);
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kPreLine);
- TestWhitespaceValue(input, input, EWhiteSpace::kPre);
- TestWhitespaceValue(input, input, EWhiteSpace::kPreWrap);
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseTabs) {
- String input("text\ttext\t text \t text");
- String collapsed("text text text text");
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kNormal);
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kNowrap);
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kWebkitNowrap);
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kPreLine);
- TestWhitespaceValue(input, input, EWhiteSpace::kPre);
- TestWhitespaceValue(input, input, EWhiteSpace::kPreWrap);
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseNewLines) {
- String input("text\ntext \n text\n\ntext");
- String collapsed("text text text text");
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kNormal);
- TestWhitespaceValue(collapsed, input, EWhiteSpace::kNowrap);
- TestWhitespaceValue("text\ntext\ntext\n\ntext", input, EWhiteSpace::kPreLine);
- TestWhitespaceValue(input, input, EWhiteSpace::kPre);
- TestWhitespaceValue(input, input, EWhiteSpace::kPreWrap);
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseNewlinesAsSpaces) {
- EXPECT_EQ("text text", TestAppend("text\ntext"));
- EXPECT_EQ("text text", TestAppend("text\n\ntext"));
- EXPECT_EQ("text text", TestAppend("text \n\n text"));
- EXPECT_EQ("text text", TestAppend("text \n \n text"));
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseAcrossElements) {
- EXPECT_EQ("text text", TestAppend("text ", " text"))
- << "Spaces are collapsed even when across elements.";
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseLeadingSpaces) {
- EXPECT_EQ("text", TestAppend(" text"));
- EXPECT_EQ("text", TestAppend(" ", "text"));
- EXPECT_EQ("text", TestAppend(" ", " text"));
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseTrailingSpaces) {
- EXPECT_EQ("text", TestAppend("text "));
- EXPECT_EQ("text", TestAppend("text", " "));
- EXPECT_EQ("text", TestAppend("text ", " "));
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseAllSpaces) {
- EXPECT_EQ("", TestAppend(" "));
- EXPECT_EQ("", TestAppend(" ", " "));
- EXPECT_EQ("", TestAppend(" ", "\n"));
- EXPECT_EQ("", TestAppend("\n", " "));
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseLeadingNewlines) {
- EXPECT_EQ("text", TestAppend("\ntext"));
- EXPECT_EQ("text", TestAppend("\n\ntext"));
- EXPECT_EQ("text", TestAppend("\n", "text"));
- EXPECT_EQ("text", TestAppend("\n\n", "text"));
- EXPECT_EQ("text", TestAppend(" \n", "text"));
- EXPECT_EQ("text", TestAppend("\n", " text"));
- EXPECT_EQ("text", TestAppend("\n\n", " text"));
- EXPECT_EQ("text", TestAppend(" \n", " text"));
- EXPECT_EQ("text", TestAppend("\n", "\ntext"));
- EXPECT_EQ("text", TestAppend("\n\n", "\ntext"));
- EXPECT_EQ("text", TestAppend(" \n", "\ntext"));
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseTrailingNewlines) {
- EXPECT_EQ("text", TestAppend("text\n"));
- EXPECT_EQ("text", TestAppend("text", "\n"));
- EXPECT_EQ("text", TestAppend("text\n", "\n"));
- EXPECT_EQ("text", TestAppend("text\n", " "));
- EXPECT_EQ("text", TestAppend("text ", "\n"));
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseBeforeNewlineAcrossElements) {
- EXPECT_EQ("text text", TestAppend("text ", "\ntext"));
- EXPECT_EQ("text text", TestAppend("text", " ", "\ntext"));
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseBeforeAndAfterNewline) {
- SetWhiteSpace(EWhiteSpace::kPreLine);
- EXPECT_EQ("text\ntext", TestAppend("text \n text"))
- << "Spaces before and after newline are removed.";
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest,
- CollapsibleSpaceAfterNonCollapsibleSpaceAcrossElements) {
- NGLayoutInlineItemsBuilder builder(&items_);
- RefPtr<ComputedStyle> pre_wrap(CreateWhitespaceStyle(EWhiteSpace::kPreWrap));
- builder.Append("text ", pre_wrap.Get());
- builder.Append(" text", style_.Get());
- EXPECT_EQ("text text", builder.ToString())
- << "The whitespace in constructions like '<span style=\"white-space: "
- "pre-wrap\">text <span><span> text</span>' does not collapse.";
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseZeroWidthSpaces) {
- EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\u200B\ntext"))
- << "Newline is removed if the character before is ZWS.";
- EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\n\u200Btext"))
- << "Newline is removed if the character after is ZWS.";
- EXPECT_EQ(String(u"text\u200B\u200Btext"),
- TestAppend(u"text\u200B\n\u200Btext"))
- << "Newline is removed if the character before/after is ZWS.";
-
- EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\n", u"\u200Btext"))
- << "Newline is removed if the character after across elements is ZWS.";
- EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\u200B", u"\ntext"))
- << "Newline is removed if the character before is ZWS even across "
- "elements.";
-
- EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text \n", u"\u200Btext"))
- << "Collapsible space before newline does not affect the result.";
-
- EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\u200B\n", u" text"))
- << "Collapsible space after newline is removed even when the "
- "newline was removed.";
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseEastAsianWidth) {
- EXPECT_EQ(String(u"\u4E00\u4E00"), TestAppend(u"\u4E00\n\u4E00"))
- << "Newline is removed when both sides are Wide.";
-
- EXPECT_EQ(String(u"\u4E00 A"), TestAppend(u"\u4E00\nA"))
- << "Newline is not removed when after is Narrow.";
- EXPECT_EQ(String(u"A \u4E00"), TestAppend(u"A\n\u4E00"))
- << "Newline is not removed when before is Narrow.";
-
- EXPECT_EQ(String(u"\u4E00\u4E00"), TestAppend(u"\u4E00\n", u"\u4E00"))
- << "Newline at the end of elements is removed when both sides are Wide.";
- EXPECT_EQ(String(u"\u4E00\u4E00"), TestAppend(u"\u4E00", u"\n\u4E00"))
- << "Newline at the beginning of elements is removed "
- "when both sides are Wide.";
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseAroundReplacedElement) {
- NGLayoutInlineItemsBuilder builder(&items_);
- builder.Append("Hello ", style_.Get());
- builder.Append(NGLayoutInlineItem::kAtomicInline,
- kObjectReplacementCharacter);
- builder.Append(" World", style_.Get());
- EXPECT_EQ(String(u"Hello \uFFFC World"), builder.ToString());
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, CollapseNewlineAfterObject) {
- NGLayoutInlineItemsBuilder builder(&items_);
- builder.Append(NGLayoutInlineItem::kAtomicInline,
- kObjectReplacementCharacter);
- builder.Append("\n", style_.Get());
- builder.Append(NGLayoutInlineItem::kAtomicInline,
- kObjectReplacementCharacter);
- EXPECT_EQ(String(u"\uFFFC \uFFFC"), builder.ToString());
- EXPECT_EQ(3u, items_.size());
- EXPECT_EQ(nullptr, items_[0].Style());
- EXPECT_EQ(style_.Get(), items_[1].Style());
- EXPECT_EQ(nullptr, items_[2].Style());
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, AppendEmptyString) {
- EXPECT_EQ("", TestAppend(""));
- EXPECT_EQ(0u, items_.size());
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, Empty) {
- Vector<NGLayoutInlineItem> items;
- NGLayoutInlineItemsBuilder builder(&items);
- RefPtr<ComputedStyle> block_style(ComputedStyle::Create());
- builder.EnterBlock(block_style.Get());
- builder.ExitBlock();
-
- EXPECT_EQ("", builder.ToString());
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, BidiBlockOverride) {
- Vector<NGLayoutInlineItem> items;
- NGLayoutInlineItemsBuilder builder(&items);
- RefPtr<ComputedStyle> block_style(ComputedStyle::Create());
- block_style->SetUnicodeBidi(UnicodeBidi::kBidiOverride);
- block_style->SetDirection(TextDirection::kRtl);
- builder.EnterBlock(block_style.Get());
- builder.Append("Hello", style_.Get());
- builder.ExitBlock();
-
- // Expected control characters as defined in:
- // https://drafts.csswg.org/css-writing-modes-3/#bidi-control-codes-injection-table
- EXPECT_EQ(String(u"\u202E"
- u"Hello"
- u"\u202C"),
- builder.ToString());
-}
-
-static std::unique_ptr<LayoutInline> CreateLayoutInline(
- void (*initialize_style)(ComputedStyle*)) {
- RefPtr<ComputedStyle> style(ComputedStyle::Create());
- initialize_style(style.Get());
- std::unique_ptr<LayoutInline> node = WTF::MakeUnique<LayoutInline>(nullptr);
- node->SetStyleInternal(std::move(style));
- return node;
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, BidiIsolate) {
- Vector<NGLayoutInlineItem> items;
- NGLayoutInlineItemsBuilder builder(&items);
- builder.Append("Hello ", style_.Get());
- std::unique_ptr<LayoutInline> isolate_rtl(
- CreateLayoutInline([](ComputedStyle* style) {
- style->SetUnicodeBidi(UnicodeBidi::kIsolate);
- style->SetDirection(TextDirection::kRtl);
- }));
- builder.EnterInline(isolate_rtl.get());
- builder.Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA", style_.Get());
- builder.ExitInline(isolate_rtl.get());
- builder.Append(" World", style_.Get());
-
- // Expected control characters as defined in:
- // https://drafts.csswg.org/css-writing-modes-3/#bidi-control-codes-injection-table
- EXPECT_EQ(String(u"Hello "
- u"\u2067"
- u"\u05E2\u05D1\u05E8\u05D9\u05EA"
- u"\u2069"
- u" World"),
- builder.ToString());
-}
-
-TEST_F(NGLayoutInlineItemsBuilderTest, BidiIsolateOverride) {
- Vector<NGLayoutInlineItem> items;
- NGLayoutInlineItemsBuilder builder(&items);
- builder.Append("Hello ", style_.Get());
- std::unique_ptr<LayoutInline> isolate_override_rtl(
- CreateLayoutInline([](ComputedStyle* style) {
- style->SetUnicodeBidi(UnicodeBidi::kIsolateOverride);
- style->SetDirection(TextDirection::kRtl);
- }));
- builder.EnterInline(isolate_override_rtl.get());
- builder.Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA", style_.Get());
- builder.ExitInline(isolate_override_rtl.get());
- builder.Append(" World", style_.Get());
-
- // Expected control characters as defined in:
- // https://drafts.csswg.org/css-writing-modes-3/#bidi-control-codes-injection-table
- EXPECT_EQ(String(u"Hello "
- u"\u2068\u202E"
- u"\u05E2\u05D1\u05E8\u05D9\u05EA"
- u"\u202C\u2069"
- u" World"),
- builder.ToString());
-}
-
-} // namespace
-
-} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698