diff options
Diffstat (limited to 'chrome/browser/status_icons/status_icon_unittest.cc')
-rw-r--r-- | chrome/browser/status_icons/status_icon_unittest.cc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/chrome/browser/status_icons/status_icon_unittest.cc b/chrome/browser/status_icons/status_icon_unittest.cc new file mode 100644 index 0000000..de791c9c0 --- /dev/null +++ b/chrome/browser/status_icons/status_icon_unittest.cc @@ -0,0 +1,47 @@ +// Copyright (c) 2010 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 "chrome/browser/status_icons/status_icon.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +class MockStatusIconObserver : public StatusIcon::StatusIconObserver { + public: + MOCK_METHOD0(OnClicked, void()); +}; + +// Define pure virtual functions so we can test base class functionality. +class TestStatusIcon : public StatusIcon { + public: + TestStatusIcon() {} + virtual void SetImage(const SkBitmap& image) {} + virtual void SetPressedImage(const SkBitmap& image) {} + virtual void SetToolTip(const string16& tool_tip) {} +}; + +TEST(StatusIconTest, ObserverAdd) { + // Make sure that observers are invoked when we click items. + TestStatusIcon icon; + MockStatusIconObserver observer, observer2; + EXPECT_CALL(observer, OnClicked()).Times(2); + EXPECT_CALL(observer2, OnClicked()); + icon.AddObserver(&observer); + icon.DispatchClickEvent(); + icon.AddObserver(&observer2); + icon.DispatchClickEvent(); + icon.RemoveObserver(&observer); + icon.RemoveObserver(&observer2); +} + +TEST(StatusIconTest, ObserverRemove) { + // Make sure that observers are no longer invoked after they are removed. + TestStatusIcon icon; + MockStatusIconObserver observer; + EXPECT_CALL(observer, OnClicked()); + icon.AddObserver(&observer); + icon.DispatchClickEvent(); + icon.RemoveObserver(&observer); + icon.DispatchClickEvent(); +} + |