| // Copyright 2014 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 "ui/message_center/notification_delegate.h" |
| |
| #include "base/bind.h" |
| #include "base/callback.h" |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace message_center { |
| |
| class NotificationDelegateTest : public testing::Test { |
| public: |
| NotificationDelegateTest(); |
| ~NotificationDelegateTest() override; |
| |
| void ClickCallback(); |
| |
| int GetClickedCallbackAndReset(); |
| |
| private: |
| int callback_count_; |
| |
| DISALLOW_COPY_AND_ASSIGN(NotificationDelegateTest); |
| }; |
| |
| NotificationDelegateTest::NotificationDelegateTest() : callback_count_(0) {} |
| |
| NotificationDelegateTest::~NotificationDelegateTest() {} |
| |
| void NotificationDelegateTest::ClickCallback() { |
| ++callback_count_; |
| } |
| |
| int NotificationDelegateTest::GetClickedCallbackAndReset() { |
| int result = callback_count_; |
| callback_count_ = 0; |
| return result; |
| } |
| |
| TEST_F(NotificationDelegateTest, ClickedDelegate) { |
| scoped_refptr<HandleNotificationClickedDelegate> delegate( |
| new HandleNotificationClickedDelegate( |
| base::Bind(&NotificationDelegateTest::ClickCallback, |
| base::Unretained(this)))); |
| |
| EXPECT_TRUE(delegate->HasClickedListener()); |
| delegate->Click(); |
| EXPECT_EQ(1, GetClickedCallbackAndReset()); |
| |
| // ButtonClick doesn't call the callback. |
| delegate->ButtonClick(0); |
| EXPECT_EQ(0, GetClickedCallbackAndReset()); |
| } |
| |
| TEST_F(NotificationDelegateTest, NullClickedDelegate) { |
| scoped_refptr<HandleNotificationClickedDelegate> delegate( |
| new HandleNotificationClickedDelegate(base::Closure())); |
| |
| EXPECT_FALSE(delegate->HasClickedListener()); |
| delegate->Click(); |
| EXPECT_EQ(0, GetClickedCallbackAndReset()); |
| |
| delegate->ButtonClick(0); |
| EXPECT_EQ(0, GetClickedCallbackAndReset()); |
| } |
| |
| } |