Index: third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc |
index a43f46e402149359aa6448e1b123b0f950564d80..2b12d480cddd2e10e6386d64613f5bf053e0c9c4 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc |
@@ -117,16 +117,16 @@ TEST(NGConstraintSpaceTest, LayoutOpportunitiesTopLeftExclusion) { |
// |
// Test case visual representation: |
// |
-// 100 200 300 400 500 |
-// (1)--|----|----|-(2)|----|-(3)+ |
-// 50 | | |
-// 100 | | |
-// 150 | | |
-// 200 | ********** | |
-// 250 | ********** | |
-// 300 (4) | |
-// 350 | *** | |
-// +-----------------------------+ |
+// 100 200 300 400 500 |
+// (1)--|----|-(2)-|----|----|-(3)-+ |
+// 50 | | |
+// 100 | | |
+// 150 | | |
+// 200 | ****** | |
+// 250 | ****** | |
+// 300 (4) | |
+// 350 | *** | |
+// +-------------------------------+ |
// |
// Expected: |
// Layout opportunity iterator generates the next opportunities: |
@@ -169,6 +169,54 @@ TEST(NGConstraintSpaceTest, LayoutOpportunitiesTwoInMiddle) { |
EXPECT_EQ("(empty)", OpportunityToString(iterator->Next())); |
} |
+// This test is the same as LayoutOpportunitiesTwoInMiddle with the only |
+// difference that NGLayoutOpportunityIterator takes the additional argument |
+// origin_point that changes the iterator to return Layout Opportunities that |
+// lay after the origin point. |
+// |
+// Expected: |
+// Layout opportunity iterator generates the next opportunities: |
+// - 1st Start Point (0, 200): 150x200 |
+// - 2nd Start Point (250, 200): 350x150, 250x200 |
+// - 3rd Start Point (550, 200): 50x200 |
+// - 4th Start Point (0, 300): 600x50, 500x100 |
+// All other opportunities that are located before the origin point should be |
+// filtered out. |
+TEST(NGConstraintSpaceTest, LayoutOpportunitiesTwoInMiddleWithOrigin) { |
ikilpatrick
2016/10/28 16:39:28
\o/
|
+ NGPhysicalSize physical_size; |
+ physical_size.width = LayoutUnit(600); |
+ physical_size.height = LayoutUnit(400); |
+ auto* physical_space = new NGPhysicalConstraintSpace(physical_size); |
+ |
+ // Add exclusions |
+ physical_space->AddExclusion(new NGExclusion( |
+ LayoutUnit(200), LayoutUnit(250), LayoutUnit(300), LayoutUnit(150))); |
+ physical_space->AddExclusion(new NGExclusion( |
+ LayoutUnit(350), LayoutUnit(550), LayoutUnit(400), LayoutUnit(500))); |
+ |
+ auto* space = |
+ new NGConstraintSpace(HorizontalTopBottom, LeftToRight, physical_space); |
+ const NGLogicalOffset origin_point = {LayoutUnit(0), LayoutUnit(200)}; |
+ auto* iterator = new NGLayoutOpportunityIterator(space, origin_point); |
+ |
+ // 1st Start Point |
+ EXPECT_EQ("0,200 150x200", OpportunityToString(iterator->Next())); |
+ |
+ // 2nd Start Point |
+ EXPECT_EQ("250,200 350x150", OpportunityToString(iterator->Next())); |
+ EXPECT_EQ("250,200 250x200", OpportunityToString(iterator->Next())); |
+ |
+ // 3rd Start Point |
+ EXPECT_EQ("550,200 50x200", OpportunityToString(iterator->Next())); |
+ |
+ // 4th Start Point |
+ EXPECT_EQ("0,300 600x50", OpportunityToString(iterator->Next())); |
+ EXPECT_EQ("0,300 500x100", OpportunityToString(iterator->Next())); |
+ |
+ // Iterator is exhausted. |
+ EXPECT_EQ("(empty)", OpportunityToString(iterator->Next())); |
+} |
+ |
// Verifies that Layout Opportunity iterator ignores the exclusion that is not |
// within constraint space. |
// |