blob: 3a8fe7135a5d045fdea27cf0a42df0de4e7ac66c [file] [log] [blame]
// 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());
}
}