//
// Copyright (C) 2012 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#include "shill/cellular/modem_info.h"
#include <base/stl_util.h>
#include <gtest/gtest.h>
#include "shill/cellular/mock_dbus_objectmanager_proxy.h"
#include "shill/cellular/mock_modem_manager_proxy.h"
#include "shill/cellular/modem_manager.h"
#include "shill/manager.h"
#include "shill/mock_control.h"
#include "shill/mock_manager.h"
#include "shill/mock_metrics.h"
#include "shill/test_event_dispatcher.h"
using testing::_;
using testing::Return;
using testing::Test;
namespace shill {
class ModemInfoTest : public Test {
public:
ModemInfoTest()
: metrics_(&dispatcher_),
manager_(&control_interface_, &dispatcher_, &metrics_),
modem_info_(&control_interface_, &dispatcher_, &metrics_, &manager_) {}
protected:
MockControl control_interface_;
EventDispatcherForTest dispatcher_;
MockMetrics metrics_;
MockManager manager_;
ModemInfo modem_info_;
};
TEST_F(ModemInfoTest, StartStop) {
EXPECT_EQ(0, modem_info_.modem_managers_.size());
EXPECT_CALL(control_interface_,
CreateModemManagerProxy(_, _, "org.chromium.ModemManager", _, _))
.WillOnce(Return(new MockModemManagerProxy()));
EXPECT_CALL(control_interface_,
CreateDBusObjectManagerProxy(
_, "org.freedesktop.ModemManager1", _, _))
.WillOnce(Return(new MockDBusObjectManagerProxy()));
modem_info_.Start();
EXPECT_EQ(2, modem_info_.modem_managers_.size());
modem_info_.Stop();
EXPECT_EQ(0, modem_info_.modem_managers_.size());
}
TEST_F(ModemInfoTest, RegisterModemManager) {
static const char kService[] = "some.dbus.service";
EXPECT_CALL(control_interface_,
CreateModemManagerProxy(_, _, kService, _, _))
.WillOnce(Return(new MockModemManagerProxy()));
modem_info_.RegisterModemManager(
new ModemManagerClassic(&control_interface_,
kService,
"/dbus/service/path",
&modem_info_));
ASSERT_EQ(1, modem_info_.modem_managers_.size());
ModemManager* manager = modem_info_.modem_managers_[0];
EXPECT_EQ(kService, manager->service_);
EXPECT_EQ(&modem_info_, manager->modem_info_);
}
} // namespace shill