shill: Create Modem instances for ModemManager.Modem paths.
Each Modem instance will manage a single ModemManager.Modem and a single
Cellular device.
BUG=chromium-os:17818
TEST=unit tests, tested on device
Change-Id: I4798224f0bc824bd6d1177e6a6b89f65ca4725ba
Reviewed-on: http://gerrit.chromium.org/gerrit/4356
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
diff --git a/modem_manager_unittest.cc b/modem_manager_unittest.cc
index 89362f7..3ad94ee 100644
--- a/modem_manager_unittest.cc
+++ b/modem_manager_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <base/stl_util-inl.h>
#include <gtest/gtest.h>
#include "shill/manager.h"
@@ -12,6 +13,7 @@
#include "shill/proxy_factory.h"
using std::string;
+using std::vector;
using testing::_;
using testing::Return;
using testing::StrEq;
@@ -45,6 +47,13 @@
public:
TestProxyFactory(ModemManagerProxyInterface *proxy) : proxy_(proxy) {}
+ virtual DBusPropertiesProxyInterface *CreateDBusPropertiesProxy(
+ Modem *modem,
+ const string &path,
+ const string &service) {
+ return NULL;
+ }
+
virtual ModemManagerProxyInterface *CreateModemManagerProxy(
ModemManager *manager,
const string &path,
@@ -58,6 +67,8 @@
static const char kService[];
static const char kPath[];
+ static const char kOwner[];
+ static const char kModemPath[];
MockGLib glib_;
MockControl control_interface_;
@@ -68,8 +79,10 @@
TestProxyFactory proxy_factory_;
};
-const char ModemManagerTest::kService[] = "test.dbus.service";
-const char ModemManagerTest::kPath[] = "/dbus/service/test/path";
+const char ModemManagerTest::kService[] = "org.chromium.ModemManager";
+const char ModemManagerTest::kPath[] = "/org/chromium/ModemManager";
+const char ModemManagerTest::kOwner[] = ":1.17";
+const char ModemManagerTest::kModemPath[] = "/org/chromium/ModemManager/Gobi/0";
TEST_F(ModemManagerTest, Start) {
const int kWatcher = 123;
@@ -88,7 +101,6 @@
TEST_F(ModemManagerTest, Stop) {
const int kWatcher = 345;
- static const char kOwner[] = ":1.30";
modem_manager_.watcher_id_ = kWatcher;
modem_manager_.owner_ = kOwner;
EXPECT_CALL(glib_, BusUnwatchName(kWatcher)).Times(1);
@@ -99,13 +111,15 @@
TEST_F(ModemManagerTest, Connect) {
EXPECT_EQ("", modem_manager_.owner_);
- static const char kOwner[] = ":1.20";
+ EXPECT_CALL(proxy_, EnumerateDevices())
+ .WillOnce(Return(vector<DBus::Path>(1, kModemPath)));
modem_manager_.Connect(kOwner);
EXPECT_EQ(kOwner, modem_manager_.owner_);
+ EXPECT_EQ(1, modem_manager_.modems_.size());
+ EXPECT_TRUE(ContainsKey(modem_manager_.modems_, kModemPath));
}
TEST_F(ModemManagerTest, Disconnect) {
- static const char kOwner[] = ":1.22";
modem_manager_.owner_ = kOwner;
modem_manager_.Disconnect();
EXPECT_EQ("", modem_manager_.owner_);
@@ -113,16 +127,25 @@
TEST_F(ModemManagerTest, OnAppear) {
EXPECT_EQ("", modem_manager_.owner_);
- static const char kOwner[] = ":1.17";
- ModemManager::OnAppear(NULL, NULL, kOwner, &modem_manager_);
+ EXPECT_CALL(proxy_, EnumerateDevices())
+ .WillOnce(Return(vector<DBus::Path>()));
+ ModemManager::OnAppear(NULL, kService, kOwner, &modem_manager_);
EXPECT_EQ(kOwner, modem_manager_.owner_);
}
TEST_F(ModemManagerTest, OnVanish) {
- static const char kOwner[] = ":1.18";
modem_manager_.owner_ = kOwner;
- ModemManager::OnVanish(NULL, NULL, &modem_manager_);
+ ModemManager::OnVanish(NULL, kService, &modem_manager_);
EXPECT_EQ("", modem_manager_.owner_);
}
+TEST_F(ModemManagerTest, AddRemoveModem) {
+ modem_manager_.owner_ = kOwner;
+ modem_manager_.AddModem(kModemPath);
+ EXPECT_EQ(1, modem_manager_.modems_.size());
+ EXPECT_TRUE(ContainsKey(modem_manager_.modems_, kModemPath));
+ modem_manager_.RemoveModem(kModemPath);
+ EXPECT_EQ(0, modem_manager_.modems_.size());
+}
+
} // namespace shill