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

Unified Diff: ui/views/layout/box_layout_unittest.cc

Issue 284753002: Add main axis alignment for BoxLayout. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove set_spread_blank_space, rename to MainAxisAlignment Created 6 years, 7 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
« no previous file with comments | « ui/views/layout/box_layout.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/layout/box_layout_unittest.cc
diff --git a/ui/views/layout/box_layout_unittest.cc b/ui/views/layout/box_layout_unittest.cc
index 2c12090685eb4f4d7af95a26fc7702de82e6a9f5..659f39e66e458cbdd2671b9100ebd4003c770e26 100644
--- a/ui/views/layout/box_layout_unittest.cc
+++ b/ui/views/layout/box_layout_unittest.cc
@@ -75,6 +75,25 @@ TEST_F(BoxLayoutTest, Overflow) {
View* v2 = new StaticSizedView(gfx::Size(10, 20));
host_->AddChildView(v2);
host_->SetBounds(0, 0, 10, 10);
+
+ // Overflows by positioning views at the start and truncating anything that
+ // doesn't fit.
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(0, 0, 10, 10), v1->bounds());
+ EXPECT_EQ(gfx::Rect(0, 0, 0, 0), v2->bounds());
+
+ // All values of main axis alignment should overflow in the same manner.
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_START);
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(0, 0, 10, 10), v1->bounds());
+ EXPECT_EQ(gfx::Rect(0, 0, 0, 0), v2->bounds());
+
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_CENTER);
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(0, 0, 10, 10), v1->bounds());
+ EXPECT_EQ(gfx::Rect(0, 0, 0, 0), v2->bounds());
+
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_END);
layout_->Layout(host_.get());
EXPECT_EQ(gfx::Rect(0, 0, 10, 10), v1->bounds());
EXPECT_EQ(gfx::Rect(0, 0, 0, 0), v2->bounds());
@@ -102,9 +121,9 @@ TEST_F(BoxLayoutTest, InvisibleChild) {
EXPECT_EQ(gfx::Rect(10, 10, 10, 10), v2->bounds());
}
-TEST_F(BoxLayoutTest, DistributeEmptySpace) {
+TEST_F(BoxLayoutTest, MainAxisAlignmentFill) {
layout_.reset(new BoxLayout(BoxLayout::kHorizontal, 10, 10, 10));
- layout_->set_spread_blank_space(true);
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_FILL);
View* v1 = new StaticSizedView(gfx::Size(20, 20));
host_->AddChildView(v1);
@@ -156,4 +175,74 @@ TEST_F(BoxLayoutTest, EmptyPreferredSize) {
}
}
+TEST_F(BoxLayoutTest, MainAxisAlignmentHorizontal) {
+ layout_.reset(new BoxLayout(BoxLayout::kHorizontal, 10, 10, 10));
+
+ View* v1 = new StaticSizedView(gfx::Size(20, 20));
+ host_->AddChildView(v1);
+ View* v2 = new StaticSizedView(gfx::Size(10, 10));
+ host_->AddChildView(v2);
+
+ host_->SetBounds(0, 0, 100, 40);
+
+ // Align children to the horizontal start by default.
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(10, 10, 20, 20).ToString(), v1->bounds().ToString());
+ EXPECT_EQ(gfx::Rect(40, 10, 10, 20).ToString(), v2->bounds().ToString());
+
+ // Ensure same results for MAIN_AXIS_ALIGNMENT_START.
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_START);
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(10, 10, 20, 20).ToString(), v1->bounds().ToString());
+ EXPECT_EQ(gfx::Rect(40, 10, 10, 20).ToString(), v2->bounds().ToString());
+
+ // Aligns children to the center horizontally.
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_CENTER);
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(30, 10, 20, 20).ToString(), v1->bounds().ToString());
+ EXPECT_EQ(gfx::Rect(60, 10, 10, 20).ToString(), v2->bounds().ToString());
+
+ // Aligns children to the end of the host horizontally, accounting for the
+ // inside border spacing.
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_END);
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(50, 10, 20, 20).ToString(), v1->bounds().ToString());
+ EXPECT_EQ(gfx::Rect(80, 10, 10, 20).ToString(), v2->bounds().ToString());
+}
+
+TEST_F(BoxLayoutTest, MainAxisAlignmentVertical) {
+ layout_.reset(new BoxLayout(BoxLayout::kVertical, 10, 10, 10));
+
+ View* v1 = new StaticSizedView(gfx::Size(20, 20));
+ host_->AddChildView(v1);
+ View* v2 = new StaticSizedView(gfx::Size(10, 10));
+ host_->AddChildView(v2);
+
+ host_->SetBounds(0, 0, 40, 100);
+
+ // Align children to the vertical start by default.
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(10, 10, 20, 20).ToString(), v1->bounds().ToString());
+ EXPECT_EQ(gfx::Rect(10, 40, 20, 10).ToString(), v2->bounds().ToString());
+
+ // Ensure same results for MAIN_AXIS_ALIGNMENT_START.
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_START);
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(10, 10, 20, 20).ToString(), v1->bounds().ToString());
+ EXPECT_EQ(gfx::Rect(10, 40, 20, 10).ToString(), v2->bounds().ToString());
+
+ // Aligns children to the center vertically.
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_CENTER);
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(10, 30, 20, 20).ToString(), v1->bounds().ToString());
+ EXPECT_EQ(gfx::Rect(10, 60, 20, 10).ToString(), v2->bounds().ToString());
+
+ // Aligns children to the end of the host vertically, accounting for the
+ // inside border spacing.
+ layout_->set_main_axis_alignment(BoxLayout::MAIN_AXIS_ALIGNMENT_END);
+ layout_->Layout(host_.get());
+ EXPECT_EQ(gfx::Rect(10, 50, 20, 20).ToString(), v1->bounds().ToString());
+ EXPECT_EQ(gfx::Rect(10, 80, 20, 10).ToString(), v2->bounds().ToString());
+}
+
} // namespace views
« no previous file with comments | « ui/views/layout/box_layout.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698