blob: 8c54f41966d7841b81763dd0fe4f3f1f13676bf8 [file] [log] [blame]
// 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_