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

Side by Side Diff: ui/views/controls/button/image_button_unittest.cc

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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
« no previous file with comments | « ui/views/controls/button/image_button.cc ('k') | ui/views/controls/button/label_button.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "testing/gtest/include/gtest/gtest.h"
6 #include "ui/base/layout.h"
7 #include "ui/views/border.h"
8 #include "ui/views/controls/button/image_button.h"
9 #include "ui/views/test/views_test_base.h"
10
11 namespace {
12
13 gfx::ImageSkia CreateTestImage(int width, int height) {
14 SkBitmap bitmap;
15 bitmap.allocN32Pixels(width, height);
16 return gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
17 }
18
19 } // namespace
20
21 namespace views {
22
23 typedef ViewsTestBase ImageButtonTest;
24
25 TEST_F(ImageButtonTest, Basics) {
26 ImageButton button(NULL);
27
28 // Our image to paint starts empty.
29 EXPECT_TRUE(button.GetImageToPaint().isNull());
30
31 // Without an image, buttons are 16x14 by default.
32 EXPECT_EQ("16x14", button.GetPreferredSize().ToString());
33
34 // The minimum image size should be applied even when there is no image.
35 button.SetMinimumImageSize(gfx::Size(5, 15));
36 EXPECT_EQ("5x15", button.minimum_image_size().ToString());
37 EXPECT_EQ("16x15", button.GetPreferredSize().ToString());
38
39 // Set a normal image.
40 gfx::ImageSkia normal_image = CreateTestImage(10, 20);
41 button.SetImage(CustomButton::STATE_NORMAL, &normal_image);
42
43 // Image uses normal image for painting.
44 EXPECT_FALSE(button.GetImageToPaint().isNull());
45 EXPECT_EQ(10, button.GetImageToPaint().width());
46 EXPECT_EQ(20, button.GetImageToPaint().height());
47
48 // Preferred size is the normal button size.
49 EXPECT_EQ("10x20", button.GetPreferredSize().ToString());
50
51 // Set a pushed image.
52 gfx::ImageSkia pushed_image = CreateTestImage(11, 21);
53 button.SetImage(CustomButton::STATE_PRESSED, &pushed_image);
54
55 // By convention, preferred size doesn't change, even though pushed image
56 // is bigger.
57 EXPECT_EQ("10x20", button.GetPreferredSize().ToString());
58
59 // We're still painting the normal image.
60 EXPECT_FALSE(button.GetImageToPaint().isNull());
61 EXPECT_EQ(10, button.GetImageToPaint().width());
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());
71 }
72
73 TEST_F(ImageButtonTest, SetAndGetImage) {
74 ImageButton button(NULL);
75
76 // Images start as null.
77 EXPECT_TRUE(button.GetImage(Button::STATE_NORMAL).isNull());
78 EXPECT_TRUE(button.GetImage(Button::STATE_HOVERED).isNull());
79 EXPECT_TRUE(button.GetImage(Button::STATE_PRESSED).isNull());
80 EXPECT_TRUE(button.GetImage(Button::STATE_DISABLED).isNull());
81
82 // Setting images works as expected.
83 gfx::ImageSkia image1 = CreateTestImage(10, 11);
84 gfx::ImageSkia image2 = CreateTestImage(20, 21);
85 button.SetImage(Button::STATE_NORMAL, &image1);
86 button.SetImage(Button::STATE_HOVERED, &image2);
87 EXPECT_TRUE(
88 button.GetImage(Button::STATE_NORMAL).BackedBySameObjectAs(image1));
89 EXPECT_TRUE(
90 button.GetImage(Button::STATE_HOVERED).BackedBySameObjectAs(image2));
91 EXPECT_TRUE(button.GetImage(Button::STATE_PRESSED).isNull());
92 EXPECT_TRUE(button.GetImage(Button::STATE_DISABLED).isNull());
93
94 // ImageButton supports NULL image pointers.
95 button.SetImage(Button::STATE_NORMAL, NULL);
96 EXPECT_TRUE(button.GetImage(Button::STATE_NORMAL).isNull());
97 }
98
99 TEST_F(ImageButtonTest, ImagePositionWithBorder) {
100 ImageButton button(NULL);
101 gfx::ImageSkia image = CreateTestImage(20, 30);
102 button.SetImage(CustomButton::STATE_NORMAL, &image);
103
104 // The image should be painted at the top-left corner.
105 EXPECT_EQ(gfx::Point().ToString(),
106 button.ComputeImagePaintPosition(image).ToString());
107
108 button.SetBorder(views::Border::CreateEmptyBorder(10, 5, 0, 0));
109 EXPECT_EQ(gfx::Point(5, 10).ToString(),
110 button.ComputeImagePaintPosition(image).ToString());
111
112 button.SetBorder(Border::NullBorder());
113 button.SetBounds(0, 0, 50, 50);
114 EXPECT_EQ(gfx::Point().ToString(),
115 button.ComputeImagePaintPosition(image).ToString());
116
117 button.SetImageAlignment(ImageButton::ALIGN_CENTER,
118 ImageButton::ALIGN_MIDDLE);
119 EXPECT_EQ(gfx::Point(15, 10).ToString(),
120 button.ComputeImagePaintPosition(image).ToString());
121 button.SetBorder(views::Border::CreateEmptyBorder(10, 10, 0, 0));
122 EXPECT_EQ(gfx::Point(20, 15).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());
131 }
132
133 TEST_F(ImageButtonTest, LeftAlignedMirrored) {
134 ImageButton button(NULL);
135 gfx::ImageSkia image = CreateTestImage(20, 30);
136 button.SetImage(CustomButton::STATE_NORMAL, &image);
137 button.SetBounds(0, 0, 50, 30);
138 button.SetImageAlignment(ImageButton::ALIGN_LEFT,
139 ImageButton::ALIGN_BOTTOM);
140 button.SetDrawImageMirrored(true);
141
142 // Because the coordinates are flipped, we should expect this to draw as if
143 // it were ALIGN_RIGHT.
144 EXPECT_EQ(gfx::Point(30, 0).ToString(),
145 button.ComputeImagePaintPosition(image).ToString());
146 }
147
148 TEST_F(ImageButtonTest, RightAlignedMirrored) {
149 ImageButton button(NULL);
150 gfx::ImageSkia image = CreateTestImage(20, 30);
151 button.SetImage(CustomButton::STATE_NORMAL, &image);
152 button.SetBounds(0, 0, 50, 30);
153 button.SetImageAlignment(ImageButton::ALIGN_RIGHT,
154 ImageButton::ALIGN_BOTTOM);
155 button.SetDrawImageMirrored(true);
156
157 // Because the coordinates are flipped, we should expect this to draw as if
158 // it were ALIGN_LEFT.
159 EXPECT_EQ(gfx::Point(0, 0).ToString(),
160 button.ComputeImagePaintPosition(image).ToString());
161 }
162
163 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/button/image_button.cc ('k') | ui/views/controls/button/label_button.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698