blob: 89362f74f78ab2c4517a59f279434a40aa9c1a97 [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 <gtest/gtest.h>
6
7#include "shill/manager.h"
8#include "shill/mock_control.h"
9#include "shill/mock_glib.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070010#include "shill/mock_modem_manager_proxy.h"
Darin Petkov887f2982011-07-14 16:10:17 -070011#include "shill/modem_manager.h"
Darin Petkovc90fe522011-07-15 13:59:47 -070012#include "shill/proxy_factory.h"
Darin Petkov887f2982011-07-14 16:10:17 -070013
Darin Petkovc90fe522011-07-15 13:59:47 -070014using std::string;
Darin Petkov887f2982011-07-14 16:10:17 -070015using testing::_;
16using testing::Return;
17using testing::StrEq;
18using testing::Test;
19
20namespace shill {
21
22class ModemManagerTest : public Test {
23 public:
24 ModemManagerTest()
25 : manager_(&control_interface_, &dispatcher_, &glib_),
26 modem_manager_(kService,
27 kPath,
28 &control_interface_,
29 &dispatcher_,
30 &manager_,
Darin Petkovc90fe522011-07-15 13:59:47 -070031 &glib_),
32 proxy_factory_(&proxy_) {
33 ProxyFactory::set_factory(&proxy_factory_);
34 }
Darin Petkov887f2982011-07-14 16:10:17 -070035
36 virtual void TearDown() {
37 modem_manager_.watcher_id_ = 0;
Darin Petkovc90fe522011-07-15 13:59:47 -070038 ModemManagerProxyInterface *proxy = modem_manager_.proxy_.release();
39 EXPECT_TRUE(proxy == NULL || proxy == &proxy_);
40 ProxyFactory::set_factory(NULL);
Darin Petkov887f2982011-07-14 16:10:17 -070041 }
42
43 protected:
Darin Petkovc90fe522011-07-15 13:59:47 -070044 class TestProxyFactory : public ProxyFactory {
45 public:
46 TestProxyFactory(ModemManagerProxyInterface *proxy) : proxy_(proxy) {}
47
48 virtual ModemManagerProxyInterface *CreateModemManagerProxy(
49 ModemManager *manager,
50 const string &path,
51 const string &service) {
52 return proxy_;
53 }
54
55 private:
56 ModemManagerProxyInterface *proxy_;
57 };
58
Darin Petkov887f2982011-07-14 16:10:17 -070059 static const char kService[];
60 static const char kPath[];
61
62 MockGLib glib_;
63 MockControl control_interface_;
64 EventDispatcher dispatcher_;
65 Manager manager_;
66 ModemManager modem_manager_;
Darin Petkovc90fe522011-07-15 13:59:47 -070067 MockModemManagerProxy proxy_;
68 TestProxyFactory proxy_factory_;
Darin Petkov887f2982011-07-14 16:10:17 -070069};
70
71const char ModemManagerTest::kService[] = "test.dbus.service";
72const char ModemManagerTest::kPath[] = "/dbus/service/test/path";
73
74TEST_F(ModemManagerTest, Start) {
75 const int kWatcher = 123;
76 EXPECT_CALL(glib_, BusWatchName(G_BUS_TYPE_SYSTEM,
77 StrEq(kService),
78 G_BUS_NAME_WATCHER_FLAGS_NONE,
79 ModemManager::OnAppear,
80 ModemManager::OnVanish,
81 &modem_manager_,
82 NULL))
83 .WillOnce(Return(kWatcher));
84 EXPECT_EQ(0, modem_manager_.watcher_id_);
85 modem_manager_.Start();
86 EXPECT_EQ(kWatcher, modem_manager_.watcher_id_);
87}
88
89TEST_F(ModemManagerTest, Stop) {
90 const int kWatcher = 345;
91 static const char kOwner[] = ":1.30";
92 modem_manager_.watcher_id_ = kWatcher;
93 modem_manager_.owner_ = kOwner;
94 EXPECT_CALL(glib_, BusUnwatchName(kWatcher)).Times(1);
95 modem_manager_.Stop();
96 EXPECT_EQ(0, modem_manager_.watcher_id_);
97 EXPECT_EQ("", modem_manager_.owner_);
98}
99
100TEST_F(ModemManagerTest, Connect) {
101 EXPECT_EQ("", modem_manager_.owner_);
102 static const char kOwner[] = ":1.20";
103 modem_manager_.Connect(kOwner);
104 EXPECT_EQ(kOwner, modem_manager_.owner_);
105}
106
107TEST_F(ModemManagerTest, Disconnect) {
108 static const char kOwner[] = ":1.22";
109 modem_manager_.owner_ = kOwner;
110 modem_manager_.Disconnect();
111 EXPECT_EQ("", modem_manager_.owner_);
112}
113
114TEST_F(ModemManagerTest, OnAppear) {
115 EXPECT_EQ("", modem_manager_.owner_);
116 static const char kOwner[] = ":1.17";
117 ModemManager::OnAppear(NULL, NULL, kOwner, &modem_manager_);
118 EXPECT_EQ(kOwner, modem_manager_.owner_);
119}
120
121TEST_F(ModemManagerTest, OnVanish) {
122 static const char kOwner[] = ":1.18";
123 modem_manager_.owner_ = kOwner;
124 ModemManager::OnVanish(NULL, NULL, &modem_manager_);
125 EXPECT_EQ("", modem_manager_.owner_);
126}
127
128} // namespace shill