| // Copyright 2014 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef THERMALD_MOCK_TEMPERATURE_MONITOR_H_ |
| #define THERMALD_MOCK_TEMPERATURE_MONITOR_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/callback.h" |
| #include "base/callback_list.h" |
| #include "base/macros.h" |
| #include "gmock/gmock.h" |
| |
| #include "thermald/temperature_monitor_interface.h" |
| |
| namespace thermald { |
| |
| class MockTemperatureMonitor : public TemperatureMonitorInterface { |
| public: |
| MockTemperatureMonitor(const std::string &name) : name_(name) { |
| subscribers_.set_removal_callback( |
| base::Bind(&MockTemperatureMonitor::OnSubscriberRemoved, |
| base::Unretained(this))); |
| } |
| |
| #if BASE_VER < 860220 |
| std::unique_ptr<Subscription> Subscribe(const TemperatureMonitorCallback &cb) { |
| #else |
| base::CallbackListSubscription Subscribe( |
| const TemperatureMonitorCallback &cb) { |
| #endif |
| // Call mockable Subscribe(). |
| Subscribe(); |
| |
| return subscribers_.Add(cb); |
| } |
| |
| void NotifySubscribers(int temperature) { |
| subscribers_.Notify(temperature); |
| } |
| |
| std::string name() const { return name_; } |
| |
| MOCK_METHOD0(Subscribe, void()); |
| MOCK_METHOD0(OnSubscriberRemoved, void()); |
| |
| protected: |
| base::CallbackList<void(int)> subscribers_; |
| |
| private: |
| const std::string name_; |
| |
| DISALLOW_COPY_AND_ASSIGN(MockTemperatureMonitor); |
| }; |
| |
| } // namespace thermald |
| |
| #endif // THERMALD_MOCK_TEMPERATURE_MONITOR_H_ |