OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 #include "ui/base/layout.h" | 6 #include "ui/base/layout.h" |
7 #include "ui/views/border.h" | 7 #include "ui/views/border.h" |
8 #include "ui/views/controls/button/image_button.h" | 8 #include "ui/views/controls/button/image_button.h" |
9 #include "ui/views/test/views_test_base.h" | 9 #include "ui/views/test/views_test_base.h" |
10 | 10 |
(...skipping 10 matching lines...) Expand all Loading... |
21 namespace views { | 21 namespace views { |
22 | 22 |
23 typedef ViewsTestBase ImageButtonTest; | 23 typedef ViewsTestBase ImageButtonTest; |
24 | 24 |
25 TEST_F(ImageButtonTest, Basics) { | 25 TEST_F(ImageButtonTest, Basics) { |
26 ImageButton button(NULL); | 26 ImageButton button(NULL); |
27 | 27 |
28 // Our image to paint starts empty. | 28 // Our image to paint starts empty. |
29 EXPECT_TRUE(button.GetImageToPaint().isNull()); | 29 EXPECT_TRUE(button.GetImageToPaint().isNull()); |
30 | 30 |
31 // Without a theme, buttons are 16x14 by default. | 31 // Without an image, buttons are 16x14 by default. |
32 EXPECT_EQ("16x14", button.GetPreferredSize().ToString()); | 32 EXPECT_EQ("16x14", button.GetPreferredSize().ToString()); |
33 | 33 |
34 // We can set a preferred size when we have no image. | 34 // The minimum image size should be applied even when there is no image. |
35 button.SetPreferredSize(gfx::Size(5, 15)); | 35 button.SetMinimumImageSize(gfx::Size(5, 15)); |
36 EXPECT_EQ("5x15", button.GetPreferredSize().ToString()); | 36 EXPECT_EQ("5x15", button.minimum_image_size().ToString()); |
| 37 EXPECT_EQ("16x15", button.GetPreferredSize().ToString()); |
37 | 38 |
38 // Set a normal image. | 39 // Set a normal image. |
39 gfx::ImageSkia normal_image = CreateTestImage(10, 20); | 40 gfx::ImageSkia normal_image = CreateTestImage(10, 20); |
40 button.SetImage(CustomButton::STATE_NORMAL, &normal_image); | 41 button.SetImage(CustomButton::STATE_NORMAL, &normal_image); |
41 | 42 |
42 // Image uses normal image for painting. | 43 // Image uses normal image for painting. |
43 EXPECT_FALSE(button.GetImageToPaint().isNull()); | 44 EXPECT_FALSE(button.GetImageToPaint().isNull()); |
44 EXPECT_EQ(10, button.GetImageToPaint().width()); | 45 EXPECT_EQ(10, button.GetImageToPaint().width()); |
45 EXPECT_EQ(20, button.GetImageToPaint().height()); | 46 EXPECT_EQ(20, button.GetImageToPaint().height()); |
46 | 47 |
47 // Preferred size is the normal button size. | 48 // Preferred size is the normal button size. |
48 EXPECT_EQ("10x20", button.GetPreferredSize().ToString()); | 49 EXPECT_EQ("10x20", button.GetPreferredSize().ToString()); |
49 | 50 |
50 // Set a pushed image. | 51 // Set a pushed image. |
51 gfx::ImageSkia pushed_image = CreateTestImage(11, 21); | 52 gfx::ImageSkia pushed_image = CreateTestImage(11, 21); |
52 button.SetImage(CustomButton::STATE_PRESSED, &pushed_image); | 53 button.SetImage(CustomButton::STATE_PRESSED, &pushed_image); |
53 | 54 |
54 // By convention, preferred size doesn't change, even though pushed image | 55 // By convention, preferred size doesn't change, even though pushed image |
55 // is bigger. | 56 // is bigger. |
56 EXPECT_EQ("10x20", button.GetPreferredSize().ToString()); | 57 EXPECT_EQ("10x20", button.GetPreferredSize().ToString()); |
57 | 58 |
58 // We're still painting the normal image. | 59 // We're still painting the normal image. |
59 EXPECT_FALSE(button.GetImageToPaint().isNull()); | 60 EXPECT_FALSE(button.GetImageToPaint().isNull()); |
60 EXPECT_EQ(10, button.GetImageToPaint().width()); | 61 EXPECT_EQ(10, button.GetImageToPaint().width()); |
61 EXPECT_EQ(20, button.GetImageToPaint().height()); | 62 EXPECT_EQ(20, button.GetImageToPaint().height()); |
| 63 |
| 64 // The minimum image size should make the preferred size bigger. |
| 65 button.SetMinimumImageSize(gfx::Size(15, 5)); |
| 66 EXPECT_EQ("15x5", button.minimum_image_size().ToString()); |
| 67 EXPECT_EQ("15x20", button.GetPreferredSize().ToString()); |
| 68 button.SetMinimumImageSize(gfx::Size(15, 25)); |
| 69 EXPECT_EQ("15x25", button.minimum_image_size().ToString()); |
| 70 EXPECT_EQ("15x25", button.GetPreferredSize().ToString()); |
62 } | 71 } |
63 | 72 |
64 TEST_F(ImageButtonTest, SetAndGetImage) { | 73 TEST_F(ImageButtonTest, SetAndGetImage) { |
65 ImageButton button(NULL); | 74 ImageButton button(NULL); |
66 | 75 |
67 // Images start as null. | 76 // Images start as null. |
68 EXPECT_TRUE(button.GetImage(Button::STATE_NORMAL).isNull()); | 77 EXPECT_TRUE(button.GetImage(Button::STATE_NORMAL).isNull()); |
69 EXPECT_TRUE(button.GetImage(Button::STATE_HOVERED).isNull()); | 78 EXPECT_TRUE(button.GetImage(Button::STATE_HOVERED).isNull()); |
70 EXPECT_TRUE(button.GetImage(Button::STATE_PRESSED).isNull()); | 79 EXPECT_TRUE(button.GetImage(Button::STATE_PRESSED).isNull()); |
71 EXPECT_TRUE(button.GetImage(Button::STATE_DISABLED).isNull()); | 80 EXPECT_TRUE(button.GetImage(Button::STATE_DISABLED).isNull()); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 EXPECT_EQ(gfx::Point().ToString(), | 114 EXPECT_EQ(gfx::Point().ToString(), |
106 button.ComputeImagePaintPosition(image).ToString()); | 115 button.ComputeImagePaintPosition(image).ToString()); |
107 | 116 |
108 button.SetImageAlignment(ImageButton::ALIGN_CENTER, | 117 button.SetImageAlignment(ImageButton::ALIGN_CENTER, |
109 ImageButton::ALIGN_MIDDLE); | 118 ImageButton::ALIGN_MIDDLE); |
110 EXPECT_EQ(gfx::Point(15, 10).ToString(), | 119 EXPECT_EQ(gfx::Point(15, 10).ToString(), |
111 button.ComputeImagePaintPosition(image).ToString()); | 120 button.ComputeImagePaintPosition(image).ToString()); |
112 button.SetBorder(views::Border::CreateEmptyBorder(10, 10, 0, 0)); | 121 button.SetBorder(views::Border::CreateEmptyBorder(10, 10, 0, 0)); |
113 EXPECT_EQ(gfx::Point(20, 15).ToString(), | 122 EXPECT_EQ(gfx::Point(20, 15).ToString(), |
114 button.ComputeImagePaintPosition(image).ToString()); | 123 button.ComputeImagePaintPosition(image).ToString()); |
| 124 |
| 125 // The entire button's size should take the border into account. |
| 126 EXPECT_EQ(gfx::Size(30, 40).ToString(), button.GetPreferredSize().ToString()); |
| 127 |
| 128 // The border should be added on top of the minimum image size. |
| 129 button.SetMinimumImageSize(gfx::Size(30, 5)); |
| 130 EXPECT_EQ(gfx::Size(40, 40).ToString(), button.GetPreferredSize().ToString()); |
115 } | 131 } |
116 | 132 |
117 TEST_F(ImageButtonTest, LeftAlignedMirrored) { | 133 TEST_F(ImageButtonTest, LeftAlignedMirrored) { |
118 ImageButton button(NULL); | 134 ImageButton button(NULL); |
119 gfx::ImageSkia image = CreateTestImage(20, 30); | 135 gfx::ImageSkia image = CreateTestImage(20, 30); |
120 button.SetImage(CustomButton::STATE_NORMAL, &image); | 136 button.SetImage(CustomButton::STATE_NORMAL, &image); |
121 button.SetBounds(0, 0, 50, 30); | 137 button.SetBounds(0, 0, 50, 30); |
122 button.SetImageAlignment(ImageButton::ALIGN_LEFT, | 138 button.SetImageAlignment(ImageButton::ALIGN_LEFT, |
123 ImageButton::ALIGN_BOTTOM); | 139 ImageButton::ALIGN_BOTTOM); |
124 button.SetDrawImageMirrored(true); | 140 button.SetDrawImageMirrored(true); |
(...skipping 13 matching lines...) Expand all Loading... |
138 ImageButton::ALIGN_BOTTOM); | 154 ImageButton::ALIGN_BOTTOM); |
139 button.SetDrawImageMirrored(true); | 155 button.SetDrawImageMirrored(true); |
140 | 156 |
141 // Because the coordinates are flipped, we should expect this to draw as if | 157 // Because the coordinates are flipped, we should expect this to draw as if |
142 // it were ALIGN_LEFT. | 158 // it were ALIGN_LEFT. |
143 EXPECT_EQ(gfx::Point(0, 0).ToString(), | 159 EXPECT_EQ(gfx::Point(0, 0).ToString(), |
144 button.ComputeImagePaintPosition(image).ToString()); | 160 button.ComputeImagePaintPosition(image).ToString()); |
145 } | 161 } |
146 | 162 |
147 } // namespace views | 163 } // namespace views |
OLD | NEW |