| Index: ui/views/controls/button/image_button_unittest.cc
|
| diff --git a/ui/views/controls/button/image_button_unittest.cc b/ui/views/controls/button/image_button_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9d9a9b1ee01ba9b138e94b1512a91d9b7b172705
|
| --- /dev/null
|
| +++ b/ui/views/controls/button/image_button_unittest.cc
|
| @@ -0,0 +1,82 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include "ui/views/controls/button/image_button.h"
|
| +#include "ui/views/test/views_test_base.h"
|
| +
|
| +namespace {
|
| +
|
| +SkBitmap CreateTestBitmap(int width, int height) {
|
| + SkBitmap bitmap;
|
| + bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height);
|
| + bitmap.allocPixels();
|
| + return bitmap;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +namespace views {
|
| +
|
| +typedef ViewsTestBase ImageButtonTest;
|
| +
|
| +TEST_F(ImageButtonTest, Basics) {
|
| + ImageButton button(NULL);
|
| +
|
| + // Our image to paint starts empty.
|
| + EXPECT_TRUE(button.GetImageToPaint().empty());
|
| +
|
| + // Without a theme, buttons are 16x14 by default.
|
| + EXPECT_EQ("16x14", button.GetPreferredSize().ToString());
|
| +
|
| + // We can set a preferred size when we have no image.
|
| + button.SetPreferredSize(gfx::Size(5, 15));
|
| + EXPECT_EQ("5x15", button.GetPreferredSize().ToString());
|
| +
|
| + // Set a normal image.
|
| + SkBitmap normal_bitmap = CreateTestBitmap(10, 20);
|
| + button.SetImage(CustomButton::BS_NORMAL, &normal_bitmap);
|
| +
|
| + // Image uses normal image for painting.
|
| + EXPECT_FALSE(button.GetImageToPaint().empty());
|
| + EXPECT_EQ(10, button.GetImageToPaint().width());
|
| + EXPECT_EQ(20, button.GetImageToPaint().height());
|
| +
|
| + // Preferred size is the normal button size.
|
| + EXPECT_EQ("10x20", button.GetPreferredSize().ToString());
|
| +
|
| + // Set a pushed image.
|
| + SkBitmap pushed_bitmap = CreateTestBitmap(11, 21);
|
| + button.SetImage(CustomButton::BS_PUSHED, &pushed_bitmap);
|
| +
|
| + // By convention, preferred size doesn't change, even though pushed image
|
| + // is bigger.
|
| + EXPECT_EQ("10x20", button.GetPreferredSize().ToString());
|
| +
|
| + // We're still painting the normal image.
|
| + EXPECT_FALSE(button.GetImageToPaint().empty());
|
| + EXPECT_EQ(10, button.GetImageToPaint().width());
|
| + EXPECT_EQ(20, button.GetImageToPaint().height());
|
| +
|
| + // Set an overlay bitmap.
|
| + SkBitmap overlay_bitmap = CreateTestBitmap(12, 22);
|
| + button.SetOverlayImage(&overlay_bitmap);
|
| + EXPECT_EQ(12, button.overlay_image_.width());
|
| + EXPECT_EQ(22, button.overlay_image_.height());
|
| +
|
| + // By convention, preferred size doesn't change, even though pushed image
|
| + // is bigger.
|
| + EXPECT_EQ("10x20", button.GetPreferredSize().ToString());
|
| +
|
| + // We're still painting the normal image.
|
| + EXPECT_FALSE(button.GetImageToPaint().empty());
|
| + EXPECT_EQ(10, button.GetImageToPaint().width());
|
| + EXPECT_EQ(20, button.GetImageToPaint().height());
|
| +
|
| + // Reset the overlay bitmap.
|
| + button.SetOverlayImage(NULL);
|
| + EXPECT_TRUE(button.overlay_image_.empty());
|
| +}
|
| +
|
| +} // namespace views
|
|
|