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

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc

Issue 2555923002: Changed TextDirection to an enum class and renamed its members (Closed)
Patch Set: Rebase after reopen Created 3 years, 12 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/layout/ng/ng_inline_node.h" 5 #include "core/layout/ng/ng_inline_node.h"
6 6
7 #include "core/layout/ng/ng_constraint_space.h" 7 #include "core/layout/ng/ng_constraint_space.h"
8 #include "core/layout/ng/ng_constraint_space_builder.h" 8 #include "core/layout/ng/ng_constraint_space_builder.h"
9 #include "core/layout/ng/ng_fragment_builder.h" 9 #include "core/layout/ng/ng_fragment_builder.h"
10 #include "core/layout/ng/ng_physical_text_fragment.h" 10 #include "core/layout/ng/ng_physical_text_fragment.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 EXPECT_EQ(start, item.StartOffset()); \ 78 EXPECT_EQ(start, item.StartOffset()); \
79 EXPECT_EQ(end, item.EndOffset()); \ 79 EXPECT_EQ(end, item.EndOffset()); \
80 EXPECT_EQ(direction, item.Direction()) 80 EXPECT_EQ(direction, item.Direction())
81 81
82 TEST_F(NGInlineNodeTest, SegmentASCII) { 82 TEST_F(NGInlineNodeTest, SegmentASCII) {
83 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get()); 83 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get());
84 node->Append("Hello"); 84 node->Append("Hello");
85 node->SegmentText(); 85 node->SegmentText();
86 Vector<NGLayoutInlineItem>& items = node->Items(); 86 Vector<NGLayoutInlineItem>& items = node->Items();
87 ASSERT_EQ(1u, items.size()); 87 ASSERT_EQ(1u, items.size());
88 TEST_ITEM_OFFSET_DIR(items[0], 0u, 5u, LTR); 88 TEST_ITEM_OFFSET_DIR(items[0], 0u, 5u, TextDirection::Ltr);
89 } 89 }
90 90
91 TEST_F(NGInlineNodeTest, SegmentHebrew) { 91 TEST_F(NGInlineNodeTest, SegmentHebrew) {
92 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get()); 92 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get());
93 node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA"); 93 node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA");
94 node->SegmentText(); 94 node->SegmentText();
95 ASSERT_EQ(1u, node->Items().size()); 95 ASSERT_EQ(1u, node->Items().size());
96 Vector<NGLayoutInlineItem>& items = node->Items(); 96 Vector<NGLayoutInlineItem>& items = node->Items();
97 ASSERT_EQ(1u, items.size()); 97 ASSERT_EQ(1u, items.size());
98 TEST_ITEM_OFFSET_DIR(items[0], 0u, 5u, RTL); 98 TEST_ITEM_OFFSET_DIR(items[0], 0u, 5u, TextDirection::Rtl);
99 } 99 }
100 100
101 TEST_F(NGInlineNodeTest, SegmentSplit1To2) { 101 TEST_F(NGInlineNodeTest, SegmentSplit1To2) {
102 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get()); 102 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get());
103 node->Append(u"Hello \u05E2\u05D1\u05E8\u05D9\u05EA"); 103 node->Append(u"Hello \u05E2\u05D1\u05E8\u05D9\u05EA");
104 node->SegmentText(); 104 node->SegmentText();
105 ASSERT_EQ(2u, node->Items().size()); 105 ASSERT_EQ(2u, node->Items().size());
106 Vector<NGLayoutInlineItem>& items = node->Items(); 106 Vector<NGLayoutInlineItem>& items = node->Items();
107 ASSERT_EQ(2u, items.size()); 107 ASSERT_EQ(2u, items.size());
108 TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, LTR); 108 TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, TextDirection::Ltr);
109 TEST_ITEM_OFFSET_DIR(items[1], 6u, 11u, RTL); 109 TEST_ITEM_OFFSET_DIR(items[1], 6u, 11u, TextDirection::Rtl);
110 } 110 }
111 111
112 TEST_F(NGInlineNodeTest, SegmentSplit3To4) { 112 TEST_F(NGInlineNodeTest, SegmentSplit3To4) {
113 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get()); 113 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get());
114 node->Append("Hel"); 114 node->Append("Hel");
115 node->Append(u"lo \u05E2"); 115 node->Append(u"lo \u05E2");
116 node->Append(u"\u05D1\u05E8\u05D9\u05EA"); 116 node->Append(u"\u05D1\u05E8\u05D9\u05EA");
117 node->SegmentText(); 117 node->SegmentText();
118 Vector<NGLayoutInlineItem>& items = node->Items(); 118 Vector<NGLayoutInlineItem>& items = node->Items();
119 ASSERT_EQ(4u, items.size()); 119 ASSERT_EQ(4u, items.size());
120 TEST_ITEM_OFFSET_DIR(items[0], 0u, 3u, LTR); 120 TEST_ITEM_OFFSET_DIR(items[0], 0u, 3u, TextDirection::Ltr);
121 TEST_ITEM_OFFSET_DIR(items[1], 3u, 6u, LTR); 121 TEST_ITEM_OFFSET_DIR(items[1], 3u, 6u, TextDirection::Ltr);
122 TEST_ITEM_OFFSET_DIR(items[2], 6u, 7u, RTL); 122 TEST_ITEM_OFFSET_DIR(items[2], 6u, 7u, TextDirection::Rtl);
123 TEST_ITEM_OFFSET_DIR(items[3], 7u, 11u, RTL); 123 TEST_ITEM_OFFSET_DIR(items[3], 7u, 11u, TextDirection::Rtl);
124 } 124 }
125 125
126 TEST_F(NGInlineNodeTest, SegmentBidiOverride) { 126 TEST_F(NGInlineNodeTest, SegmentBidiOverride) {
127 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get()); 127 NGInlineNodeForTest* node = new NGInlineNodeForTest(style_.get());
128 node->Append("Hello "); 128 node->Append("Hello ");
129 node->Append(rightToLeftOverrideCharacter); 129 node->Append(rightToLeftOverrideCharacter);
130 node->Append("ABC"); 130 node->Append("ABC");
131 node->Append(popDirectionalFormattingCharacter); 131 node->Append(popDirectionalFormattingCharacter);
132 node->SegmentText(); 132 node->SegmentText();
133 Vector<NGLayoutInlineItem>& items = node->Items(); 133 Vector<NGLayoutInlineItem>& items = node->Items();
134 ASSERT_EQ(4u, items.size()); 134 ASSERT_EQ(4u, items.size());
135 TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, LTR); 135 TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, TextDirection::Ltr);
136 TEST_ITEM_OFFSET_DIR(items[1], 6u, 7u, RTL); 136 TEST_ITEM_OFFSET_DIR(items[1], 6u, 7u, TextDirection::Rtl);
137 TEST_ITEM_OFFSET_DIR(items[2], 7u, 10u, RTL); 137 TEST_ITEM_OFFSET_DIR(items[2], 7u, 10u, TextDirection::Rtl);
138 TEST_ITEM_OFFSET_DIR(items[3], 10u, 11u, LTR); 138 TEST_ITEM_OFFSET_DIR(items[3], 10u, 11u, TextDirection::Ltr);
139 } 139 }
140 140
141 static NGInlineNodeForTest* CreateBidiIsolateNode(const ComputedStyle* style) { 141 static NGInlineNodeForTest* CreateBidiIsolateNode(const ComputedStyle* style) {
142 NGInlineNodeForTest* node = new NGInlineNodeForTest(style); 142 NGInlineNodeForTest* node = new NGInlineNodeForTest(style);
143 node->Append("Hello ", style); 143 node->Append("Hello ", style);
144 node->Append(rightToLeftIsolateCharacter); 144 node->Append(rightToLeftIsolateCharacter);
145 node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA ", style); 145 node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA ", style);
146 node->Append(leftToRightIsolateCharacter); 146 node->Append(leftToRightIsolateCharacter);
147 node->Append("A", style); 147 node->Append("A", style);
148 node->Append(popDirectionalIsolateCharacter); 148 node->Append(popDirectionalIsolateCharacter);
149 node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA", style); 149 node->Append(u"\u05E2\u05D1\u05E8\u05D9\u05EA", style);
150 node->Append(popDirectionalIsolateCharacter); 150 node->Append(popDirectionalIsolateCharacter);
151 node->Append(" World", style); 151 node->Append(" World", style);
152 node->SegmentText(); 152 node->SegmentText();
153 return node; 153 return node;
154 } 154 }
155 155
156 TEST_F(NGInlineNodeTest, SegmentBidiIsolate) { 156 TEST_F(NGInlineNodeTest, SegmentBidiIsolate) {
157 NGInlineNodeForTest* node = CreateBidiIsolateNode(style_.get()); 157 NGInlineNodeForTest* node = CreateBidiIsolateNode(style_.get());
158 Vector<NGLayoutInlineItem>& items = node->Items(); 158 Vector<NGLayoutInlineItem>& items = node->Items();
159 ASSERT_EQ(9u, items.size()); 159 ASSERT_EQ(9u, items.size());
160 TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, LTR); 160 TEST_ITEM_OFFSET_DIR(items[0], 0u, 6u, TextDirection::Ltr);
161 TEST_ITEM_OFFSET_DIR(items[1], 6u, 7u, LTR); 161 TEST_ITEM_OFFSET_DIR(items[1], 6u, 7u, TextDirection::Ltr);
162 TEST_ITEM_OFFSET_DIR(items[2], 7u, 13u, RTL); 162 TEST_ITEM_OFFSET_DIR(items[2], 7u, 13u, TextDirection::Rtl);
163 TEST_ITEM_OFFSET_DIR(items[3], 13u, 14u, RTL); 163 TEST_ITEM_OFFSET_DIR(items[3], 13u, 14u, TextDirection::Rtl);
164 TEST_ITEM_OFFSET_DIR(items[4], 14u, 15u, LTR); 164 TEST_ITEM_OFFSET_DIR(items[4], 14u, 15u, TextDirection::Ltr);
165 TEST_ITEM_OFFSET_DIR(items[5], 15u, 16u, RTL); 165 TEST_ITEM_OFFSET_DIR(items[5], 15u, 16u, TextDirection::Rtl);
166 TEST_ITEM_OFFSET_DIR(items[6], 16u, 21u, RTL); 166 TEST_ITEM_OFFSET_DIR(items[6], 16u, 21u, TextDirection::Rtl);
167 TEST_ITEM_OFFSET_DIR(items[7], 21u, 22u, LTR); 167 TEST_ITEM_OFFSET_DIR(items[7], 21u, 22u, TextDirection::Ltr);
168 TEST_ITEM_OFFSET_DIR(items[8], 22u, 28u, LTR); 168 TEST_ITEM_OFFSET_DIR(items[8], 22u, 28u, TextDirection::Ltr);
169 } 169 }
170 170
171 #define TEST_TEXT_FRAGMENT(fragment, node, start_index, end_index, dir) \ 171 #define TEST_TEXT_FRAGMENT(fragment, node, start_index, end_index, dir) \
172 EXPECT_EQ(node, fragment->Node()); \ 172 EXPECT_EQ(node, fragment->Node()); \
173 EXPECT_EQ(start_index, fragment->StartIndex()); \ 173 EXPECT_EQ(start_index, fragment->StartIndex()); \
174 EXPECT_EQ(end_index, fragment->EndIndex()); \ 174 EXPECT_EQ(end_index, fragment->EndIndex()); \
175 EXPECT_EQ(dir, node->Items()[fragment->StartIndex()].Direction()) 175 EXPECT_EQ(dir, node->Items()[fragment->StartIndex()].Direction())
176 176
177 TEST_F(NGInlineNodeTest, CreateLineBidiIsolate) { 177 TEST_F(NGInlineNodeTest, CreateLineBidiIsolate) {
178 NGInlineNodeForTest* node = CreateBidiIsolateNode(style_.get()); 178 NGInlineNodeForTest* node = CreateBidiIsolateNode(style_.get());
179 HeapVector<Member<NGPhysicalTextFragment>> fragments; 179 HeapVector<Member<NGPhysicalTextFragment>> fragments;
180 CreateLine(node, 0, node->Items().size(), &fragments); 180 CreateLine(node, 0, node->Items().size(), &fragments);
181 ASSERT_EQ(5u, fragments.size()); 181 ASSERT_EQ(5u, fragments.size());
182 TEST_TEXT_FRAGMENT(fragments[0], node, 0u, 1u, LTR); 182 TEST_TEXT_FRAGMENT(fragments[0], node, 0u, 1u, TextDirection::Ltr);
183 TEST_TEXT_FRAGMENT(fragments[1], node, 6u, 7u, RTL); 183 TEST_TEXT_FRAGMENT(fragments[1], node, 6u, 7u, TextDirection::Rtl);
184 TEST_TEXT_FRAGMENT(fragments[2], node, 4u, 5u, LTR); 184 TEST_TEXT_FRAGMENT(fragments[2], node, 4u, 5u, TextDirection::Ltr);
185 TEST_TEXT_FRAGMENT(fragments[3], node, 2u, 3u, RTL); 185 TEST_TEXT_FRAGMENT(fragments[3], node, 2u, 3u, TextDirection::Rtl);
186 TEST_TEXT_FRAGMENT(fragments[4], node, 8u, 9u, LTR); 186 TEST_TEXT_FRAGMENT(fragments[4], node, 8u, 9u, TextDirection::Ltr);
187 } 187 }
188 188
189 TEST_F(NGInlineNodeTest, CreateLineRangeBidiIsolate) { 189 TEST_F(NGInlineNodeTest, CreateLineRangeBidiIsolate) {
190 NGInlineNodeForTest* node = CreateBidiIsolateNode(style_.get()); 190 NGInlineNodeForTest* node = CreateBidiIsolateNode(style_.get());
191 HeapVector<Member<NGPhysicalTextFragment>> fragments; 191 HeapVector<Member<NGPhysicalTextFragment>> fragments;
192 CreateLine(node, 2, 7, &fragments); 192 CreateLine(node, 2, 7, &fragments);
193 ASSERT_EQ(3u, fragments.size()); 193 ASSERT_EQ(3u, fragments.size());
194 TEST_TEXT_FRAGMENT(fragments[0], node, 6u, 7u, RTL); 194 TEST_TEXT_FRAGMENT(fragments[0], node, 6u, 7u, TextDirection::Rtl);
195 TEST_TEXT_FRAGMENT(fragments[1], node, 4u, 5u, LTR); 195 TEST_TEXT_FRAGMENT(fragments[1], node, 4u, 5u, TextDirection::Ltr);
196 TEST_TEXT_FRAGMENT(fragments[2], node, 2u, 3u, RTL); 196 TEST_TEXT_FRAGMENT(fragments[2], node, 2u, 3u, TextDirection::Rtl);
197 } 197 }
198 198
199 } // namespace blink 199 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698