blob: a870321fcbf1b9cdb65ca13af1485b14c3af3073 [file] [log] [blame]
Thieu Le3426c8f2012-01-11 17:35:11 -08001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkov887f2982011-07-14 16:10:17 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Eric Shienbrood3e20a232012-02-16 11:35:56 -05005#include <base/stl_util.h>
Darin Petkov887f2982011-07-14 16:10:17 -07006#include <gtest/gtest.h>
Darin Petkov75f201f2013-03-19 13:01:28 +01007
Darin Petkov887f2982011-07-14 16:10:17 -07008#include "shill/manager.h"
9#include "shill/mock_control.h"
Ben Chan66174a12014-01-08 21:27:00 -080010#include "shill/mock_dbus_service_proxy.h"
Darin Petkov887f2982011-07-14 16:10:17 -070011#include "shill/mock_glib.h"
Chris Masone2ae797d2011-08-23 20:41:00 -070012#include "shill/mock_manager.h"
Thieu Le3426c8f2012-01-11 17:35:11 -080013#include "shill/mock_metrics.h"
Darin Petkov887f2982011-07-14 16:10:17 -070014#include "shill/modem_info.h"
15#include "shill/modem_manager.h"
16
17using testing::_;
18using testing::Return;
19using testing::Test;
20
21namespace shill {
22
23class ModemInfoTest : public Test {
24 public:
25 ModemInfoTest()
Thieu Le6c1e3bb2013-02-06 15:20:35 -080026 : metrics_(&dispatcher_),
27 manager_(&control_interface_, &dispatcher_, &metrics_, &glib_),
Ben Chan66174a12014-01-08 21:27:00 -080028 dbus_service_proxy_(NULL),
Thieu Le3426c8f2012-01-11 17:35:11 -080029 modem_info_(&control_interface_, &dispatcher_, &metrics_, &manager_,
30 &glib_) {}
Darin Petkov887f2982011-07-14 16:10:17 -070031
Ben Chan66174a12014-01-08 21:27:00 -080032 virtual void SetUp() {
33 manager_.dbus_manager_.reset(new DBusManager());
34 dbus_service_proxy_ = new MockDBusServiceProxy();
35 // Ownership of |dbus_service_proxy_| is transferred to
36 // |manager_.dbus_manager_|.
37 manager_.dbus_manager_->proxy_.reset(dbus_service_proxy_);
38 }
39
Darin Petkov887f2982011-07-14 16:10:17 -070040 protected:
41 MockGLib glib_;
42 MockControl control_interface_;
43 EventDispatcher dispatcher_;
Thieu Le3426c8f2012-01-11 17:35:11 -080044 MockMetrics metrics_;
Chris Masone2ae797d2011-08-23 20:41:00 -070045 MockManager manager_;
Ben Chan66174a12014-01-08 21:27:00 -080046 MockDBusServiceProxy *dbus_service_proxy_;
Darin Petkov887f2982011-07-14 16:10:17 -070047 ModemInfo modem_info_;
48};
49
Darin Petkov75f201f2013-03-19 13:01:28 +010050TEST_F(ModemInfoTest, StartStop) {
51 EXPECT_EQ(0, modem_info_.modem_managers_.size());
Ben Chan66174a12014-01-08 21:27:00 -080052 EXPECT_CALL(*dbus_service_proxy_,
53 GetNameOwner("org.chromium.ModemManager", _, _, _));
54 EXPECT_CALL(*dbus_service_proxy_,
55 GetNameOwner("org.freedesktop.ModemManager1", _, _, _));
Darin Petkov887f2982011-07-14 16:10:17 -070056 modem_info_.Start();
Ben Chan8799a4a2013-04-13 16:00:13 -070057 EXPECT_EQ(2, modem_info_.modem_managers_.size());
Darin Petkov887f2982011-07-14 16:10:17 -070058 modem_info_.Stop();
59 EXPECT_EQ(0, modem_info_.modem_managers_.size());
60}
61
62TEST_F(ModemInfoTest, RegisterModemManager) {
Darin Petkov887f2982011-07-14 16:10:17 -070063 static const char kService[] = "some.dbus.service";
Ben Chan66174a12014-01-08 21:27:00 -080064 EXPECT_CALL(*dbus_service_proxy_, GetNameOwner(kService, _, _, _));
Ben Chan8799a4a2013-04-13 16:00:13 -070065 modem_info_.RegisterModemManager(
66 new ModemManagerClassic(kService, "/dbus/service/path", &modem_info_));
Darin Petkov887f2982011-07-14 16:10:17 -070067 ASSERT_EQ(1, modem_info_.modem_managers_.size());
68 ModemManager *manager = modem_info_.modem_managers_[0];
69 EXPECT_EQ(kService, manager->service_);
Prathmesh Prabhu27526f12013-03-25 19:42:18 -070070 EXPECT_EQ(&modem_info_, manager->modem_info_);
Darin Petkov887f2982011-07-14 16:10:17 -070071}
72
Darin Petkov887f2982011-07-14 16:10:17 -070073} // namespace shill