blob: 8f8515a9be3fdc188275cb3201403dd960a5e2ff [file] [log] [blame]
Darin Petkov887f2982011-07-14 16:10:17 -07001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <base/stl_util-inl.h>
6#include <gtest/gtest.h>
7
8#include "shill/manager.h"
9#include "shill/mock_control.h"
10#include "shill/mock_glib.h"
11#include "shill/modem_info.h"
12#include "shill/modem_manager.h"
13
14using testing::_;
15using testing::Return;
16using testing::Test;
17
18namespace shill {
19
20class ModemInfoTest : public Test {
21 public:
22 ModemInfoTest()
23 : manager_(&control_interface_, &dispatcher_, &glib_),
24 modem_info_(&control_interface_, &dispatcher_, &manager_, &glib_) {}
25
26 protected:
27 MockGLib glib_;
28 MockControl control_interface_;
29 EventDispatcher dispatcher_;
30 Manager manager_;
31 ModemInfo modem_info_;
32};
33
34TEST_F(ModemInfoTest, StartStop) {
35 const int kWatcher1 = 123;
36 const int kWatcher2 = 456;
37 EXPECT_EQ(0, modem_info_.modem_managers_.size());
38 EXPECT_CALL(glib_, BusWatchName(_, _, _, _, _, _, _))
39 .WillOnce(Return(kWatcher1))
40 .WillOnce(Return(kWatcher2));
41 modem_info_.Start();
42 EXPECT_EQ(2, modem_info_.modem_managers_.size());
43
44 EXPECT_CALL(glib_, BusUnwatchName(kWatcher1)).Times(1);
45 EXPECT_CALL(glib_, BusUnwatchName(kWatcher2)).Times(1);
46 modem_info_.Stop();
47 EXPECT_EQ(0, modem_info_.modem_managers_.size());
48}
49
50TEST_F(ModemInfoTest, RegisterModemManager) {
51 const int kWatcher = 123;
52 static const char kService[] = "some.dbus.service";
53 EXPECT_CALL(glib_, BusWatchName(_, _, _, _, _, _, _))
54 .WillOnce(Return(kWatcher));
55 modem_info_.RegisterModemManager(kService, "/dbus/service/path");
56 ASSERT_EQ(1, modem_info_.modem_managers_.size());
57 ModemManager *manager = modem_info_.modem_managers_[0];
58 EXPECT_EQ(kService, manager->service_);
59 EXPECT_EQ(kWatcher, manager->watcher_id_);
60 manager->watcher_id_ = 0;
61}
62
63} // namespace shill