// 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 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 delegate( new HandleNotificationClickedDelegate(base::Closure())); EXPECT_FALSE(delegate->HasClickedListener()); delegate->Click(); EXPECT_EQ(0, GetClickedCallbackAndReset()); delegate->ButtonClick(0); EXPECT_EQ(0, GetClickedCallbackAndReset()); } }