blob: ac7952af2746a0bc9c2f1438d8dd0638a1fa0c02 [file] [log] [blame]
Darin Petkovb05315f2011-11-07 10:14:25 +01001// 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 "shill/cellular_capability_gsm.h"
6
Darin Petkov20c13ec2011-11-09 15:07:15 +01007#include <chromeos/dbus/service_constants.h>
Darin Petkovb05315f2011-11-07 10:14:25 +01008#include <gtest/gtest.h>
Darin Petkov20c13ec2011-11-09 15:07:15 +01009#include <mm/mm-modem.h>
Darin Petkov1272a432011-11-10 15:53:37 +010010#include <mobile_provider.h>
Darin Petkovb05315f2011-11-07 10:14:25 +010011
12#include "shill/cellular.h"
Darin Petkov3e509242011-11-10 14:46:44 +010013#include "shill/cellular_service.h"
Darin Petkovb05315f2011-11-07 10:14:25 +010014#include "shill/error.h"
15#include "shill/event_dispatcher.h"
Darin Petkov3cfbf212011-11-21 16:02:09 +010016#include "shill/mock_adaptors.h"
Darin Petkovb05315f2011-11-07 10:14:25 +010017#include "shill/mock_modem_gsm_card_proxy.h"
Darin Petkov3e509242011-11-10 14:46:44 +010018#include "shill/mock_modem_gsm_network_proxy.h"
Darin Petkovb05315f2011-11-07 10:14:25 +010019#include "shill/nice_mock_control.h"
20
Darin Petkov3cfbf212011-11-21 16:02:09 +010021using testing::NiceMock;
Darin Petkovcb547732011-11-09 13:55:26 +010022using testing::Return;
23
Darin Petkovb05315f2011-11-07 10:14:25 +010024namespace shill {
25
26class CellularCapabilityGSMTest : public testing::Test {
27 public:
28 CellularCapabilityGSMTest()
29 : cellular_(new Cellular(&control_,
30 &dispatcher_,
31 NULL,
32 "",
33 "",
34 0,
35 Cellular::kTypeGSM,
36 "",
37 "",
38 NULL)),
Darin Petkovcb547732011-11-09 13:55:26 +010039 card_proxy_(new MockModemGSMCardProxy()),
Darin Petkov3e509242011-11-10 14:46:44 +010040 network_proxy_(new MockModemGSMNetworkProxy()),
Darin Petkov721ac932011-11-16 15:43:09 +010041 capability_(NULL),
Darin Petkov3cfbf212011-11-21 16:02:09 +010042 device_adaptor_(NULL),
Darin Petkov1272a432011-11-10 15:53:37 +010043 provider_db_(NULL) {}
Darin Petkovb05315f2011-11-07 10:14:25 +010044
Darin Petkov3e509242011-11-10 14:46:44 +010045 virtual ~CellularCapabilityGSMTest() {
46 cellular_->service_ = NULL;
Darin Petkov1272a432011-11-10 15:53:37 +010047 mobile_provider_close_db(provider_db_);
48 provider_db_ = NULL;
Darin Petkov721ac932011-11-16 15:43:09 +010049 capability_ = NULL;
Darin Petkov3cfbf212011-11-21 16:02:09 +010050 device_adaptor_ = NULL;
Darin Petkov721ac932011-11-16 15:43:09 +010051 }
52
53 virtual void SetUp() {
54 capability_ =
55 dynamic_cast<CellularCapabilityGSM *>(cellular_->capability_.get());
Darin Petkov3cfbf212011-11-21 16:02:09 +010056 device_adaptor_ =
57 dynamic_cast<NiceMock<DeviceMockAdaptor> *>(cellular_->adaptor());
Darin Petkov3e509242011-11-10 14:46:44 +010058 }
59
Darin Petkovb05315f2011-11-07 10:14:25 +010060 protected:
Darin Petkov1272a432011-11-10 15:53:37 +010061 static const char kTestMobileProviderDBPath[];
Darin Petkovcb547732011-11-09 13:55:26 +010062 static const char kTestCarrier[];
Darin Petkovb05315f2011-11-07 10:14:25 +010063 static const char kPIN[];
64 static const char kPUK[];
Darin Petkovcb547732011-11-09 13:55:26 +010065 static const char kIMEI[];
66 static const char kIMSI[];
67 static const char kMSISDN[];
68
69 void SetCardProxy() {
Darin Petkov721ac932011-11-16 15:43:09 +010070 capability_->card_proxy_.reset(card_proxy_.release());
Darin Petkovcb547732011-11-09 13:55:26 +010071 }
Darin Petkovb05315f2011-11-07 10:14:25 +010072
Darin Petkov1272a432011-11-10 15:53:37 +010073 void SetNetworkProxy() {
Darin Petkov721ac932011-11-16 15:43:09 +010074 capability_->network_proxy_.reset(network_proxy_.release());
Darin Petkov1272a432011-11-10 15:53:37 +010075 }
76
Darin Petkov20c13ec2011-11-09 15:07:15 +010077 void SetAccessTechnology(uint32 technology) {
Darin Petkov721ac932011-11-16 15:43:09 +010078 capability_->access_technology_ = technology;
Darin Petkov20c13ec2011-11-09 15:07:15 +010079 }
80
81 void SetRegistrationState(uint32 state) {
Darin Petkov721ac932011-11-16 15:43:09 +010082 capability_->registration_state_ = state;
Darin Petkov20c13ec2011-11-09 15:07:15 +010083 }
84
Darin Petkov3e509242011-11-10 14:46:44 +010085 void SetService() {
86 cellular_->service_ = new CellularService(
87 &control_, &dispatcher_, NULL, cellular_);
88 }
89
Darin Petkov1272a432011-11-10 15:53:37 +010090 void InitProviderDB() {
91 provider_db_ = mobile_provider_open_db(kTestMobileProviderDBPath);
92 ASSERT_TRUE(provider_db_);
93 cellular_->provider_db_ = provider_db_;
94 }
95
Darin Petkovb05315f2011-11-07 10:14:25 +010096 NiceMockControl control_;
97 EventDispatcher dispatcher_;
98 CellularRefPtr cellular_;
Darin Petkovcb547732011-11-09 13:55:26 +010099 scoped_ptr<MockModemGSMCardProxy> card_proxy_;
Darin Petkov3e509242011-11-10 14:46:44 +0100100 scoped_ptr<MockModemGSMNetworkProxy> network_proxy_;
Darin Petkov721ac932011-11-16 15:43:09 +0100101 CellularCapabilityGSM *capability_; // Owned by |cellular_|.
Darin Petkov3cfbf212011-11-21 16:02:09 +0100102 NiceMock<DeviceMockAdaptor> *device_adaptor_; // Owned by |cellular_|.
Darin Petkov1272a432011-11-10 15:53:37 +0100103 mobile_provider_db *provider_db_;
Darin Petkovb05315f2011-11-07 10:14:25 +0100104};
105
Darin Petkov1272a432011-11-10 15:53:37 +0100106const char CellularCapabilityGSMTest::kTestMobileProviderDBPath[] =
107 "provider_db_unittest.bfd";
Darin Petkovcb547732011-11-09 13:55:26 +0100108const char CellularCapabilityGSMTest::kTestCarrier[] = "The Cellular Carrier";
Darin Petkovb05315f2011-11-07 10:14:25 +0100109const char CellularCapabilityGSMTest::kPIN[] = "9876";
110const char CellularCapabilityGSMTest::kPUK[] = "8765";
Darin Petkovcb547732011-11-09 13:55:26 +0100111const char CellularCapabilityGSMTest::kIMEI[] = "987654321098765";
Darin Petkov0a4dfeb2011-11-18 19:36:13 +0100112const char CellularCapabilityGSMTest::kIMSI[] = "310150123456789";
Darin Petkovcb547732011-11-09 13:55:26 +0100113const char CellularCapabilityGSMTest::kMSISDN[] = "12345678901";
114
Darin Petkov721ac932011-11-16 15:43:09 +0100115TEST_F(CellularCapabilityGSMTest, PropertyStore) {
116 EXPECT_TRUE(cellular_->store().Contains(flimflam::kSIMLockStatusProperty));
117}
118
Darin Petkovcb547732011-11-09 13:55:26 +0100119TEST_F(CellularCapabilityGSMTest, GetIdentifiers) {
120 EXPECT_CALL(*card_proxy_, GetIMEI()).WillOnce(Return(kIMEI));
121 EXPECT_CALL(*card_proxy_, GetIMSI()).WillOnce(Return(kIMSI));
122 EXPECT_CALL(*card_proxy_, GetSPN()).WillOnce(Return(kTestCarrier));
123 EXPECT_CALL(*card_proxy_, GetMSISDN()).WillOnce(Return(kMSISDN));
124 SetCardProxy();
Darin Petkov0a4dfeb2011-11-18 19:36:13 +0100125 InitProviderDB();
Darin Petkov721ac932011-11-16 15:43:09 +0100126 capability_->GetIdentifiers();
Darin Petkovcb547732011-11-09 13:55:26 +0100127 EXPECT_EQ(kIMEI, cellular_->imei());
128 EXPECT_EQ(kIMSI, cellular_->imsi());
Darin Petkov721ac932011-11-16 15:43:09 +0100129 EXPECT_EQ(kTestCarrier, capability_->spn());
Darin Petkovcb547732011-11-09 13:55:26 +0100130 EXPECT_EQ(kMSISDN, cellular_->mdn());
Darin Petkov0a4dfeb2011-11-18 19:36:13 +0100131 EXPECT_EQ(kTestCarrier, cellular_->home_provider().GetName());
132 EXPECT_EQ("us", cellular_->home_provider().GetCountry());
133 EXPECT_EQ("310038", cellular_->home_provider().GetCode());
Darin Petkov721ac932011-11-16 15:43:09 +0100134 capability_->GetIdentifiers();
Darin Petkovcb547732011-11-09 13:55:26 +0100135 EXPECT_EQ(kIMEI, cellular_->imei());
136 EXPECT_EQ(kIMSI, cellular_->imsi());
Darin Petkov721ac932011-11-16 15:43:09 +0100137 EXPECT_EQ(kTestCarrier, capability_->spn());
Darin Petkovcb547732011-11-09 13:55:26 +0100138 EXPECT_EQ(kMSISDN, cellular_->mdn());
139}
Darin Petkovb05315f2011-11-07 10:14:25 +0100140
Darin Petkov3e509242011-11-10 14:46:44 +0100141TEST_F(CellularCapabilityGSMTest, GetSignalQuality) {
142 const int kStrength = 80;
143 EXPECT_CALL(*network_proxy_, GetSignalQuality()).WillOnce(Return(kStrength));
144 SetNetworkProxy();
145 SetService();
146 EXPECT_EQ(0, cellular_->service()->strength());
Darin Petkov721ac932011-11-16 15:43:09 +0100147 capability_->GetSignalQuality();
Darin Petkov3e509242011-11-10 14:46:44 +0100148 EXPECT_EQ(kStrength, cellular_->service()->strength());
149}
150
Darin Petkov184c54e2011-11-15 12:44:39 +0100151TEST_F(CellularCapabilityGSMTest, RegisterOnNetwork) {
152 Error error;
Darin Petkov3cfbf212011-11-21 16:02:09 +0100153 EXPECT_CALL(*network_proxy_, Register(kTestCarrier));
Darin Petkov721ac932011-11-16 15:43:09 +0100154 capability_->RegisterOnNetwork(kTestCarrier, &error);
Darin Petkov184c54e2011-11-15 12:44:39 +0100155 EXPECT_TRUE(error.IsSuccess());
156 SetNetworkProxy();
157 dispatcher_.DispatchPendingEvents();
Darin Petkov721ac932011-11-16 15:43:09 +0100158 EXPECT_EQ(kTestCarrier, capability_->selected_network_);
Darin Petkov184c54e2011-11-15 12:44:39 +0100159}
160
Darin Petkovb05315f2011-11-07 10:14:25 +0100161TEST_F(CellularCapabilityGSMTest, RequirePIN) {
162 Error error;
Darin Petkov3cfbf212011-11-21 16:02:09 +0100163 EXPECT_CALL(*card_proxy_, EnablePIN(kPIN, true));
Darin Petkov721ac932011-11-16 15:43:09 +0100164 capability_->RequirePIN(kPIN, true, &error);
Darin Petkovb05315f2011-11-07 10:14:25 +0100165 EXPECT_TRUE(error.IsSuccess());
Darin Petkovcb547732011-11-09 13:55:26 +0100166 SetCardProxy();
Darin Petkovb05315f2011-11-07 10:14:25 +0100167 dispatcher_.DispatchPendingEvents();
168}
169
170TEST_F(CellularCapabilityGSMTest, EnterPIN) {
171 Error error;
Darin Petkov3cfbf212011-11-21 16:02:09 +0100172 EXPECT_CALL(*card_proxy_, SendPIN(kPIN));
Darin Petkov721ac932011-11-16 15:43:09 +0100173 capability_->EnterPIN(kPIN, &error);
Darin Petkovb05315f2011-11-07 10:14:25 +0100174 EXPECT_TRUE(error.IsSuccess());
Darin Petkovcb547732011-11-09 13:55:26 +0100175 SetCardProxy();
Darin Petkovb05315f2011-11-07 10:14:25 +0100176 dispatcher_.DispatchPendingEvents();
177}
178
179TEST_F(CellularCapabilityGSMTest, UnblockPIN) {
180 Error error;
Darin Petkov3cfbf212011-11-21 16:02:09 +0100181 EXPECT_CALL(*card_proxy_, SendPUK(kPUK, kPIN));
Darin Petkov721ac932011-11-16 15:43:09 +0100182 capability_->UnblockPIN(kPUK, kPIN, &error);
Darin Petkovb05315f2011-11-07 10:14:25 +0100183 EXPECT_TRUE(error.IsSuccess());
Darin Petkovcb547732011-11-09 13:55:26 +0100184 SetCardProxy();
Darin Petkovb05315f2011-11-07 10:14:25 +0100185 dispatcher_.DispatchPendingEvents();
186}
187
188TEST_F(CellularCapabilityGSMTest, ChangePIN) {
189 static const char kOldPIN[] = "1111";
190 Error error;
Darin Petkov3cfbf212011-11-21 16:02:09 +0100191 EXPECT_CALL(*card_proxy_, ChangePIN(kOldPIN, kPIN));
Darin Petkov721ac932011-11-16 15:43:09 +0100192 capability_->ChangePIN(kOldPIN, kPIN, &error);
Darin Petkovb05315f2011-11-07 10:14:25 +0100193 EXPECT_TRUE(error.IsSuccess());
Darin Petkovcb547732011-11-09 13:55:26 +0100194 SetCardProxy();
Darin Petkovb05315f2011-11-07 10:14:25 +0100195 dispatcher_.DispatchPendingEvents();
196}
197
Darin Petkov1272a432011-11-10 15:53:37 +0100198TEST_F(CellularCapabilityGSMTest, Scan) {
199 static const char kID0[] = "123";
200 static const char kID1[] = "456";
201 Error error;
Darin Petkov721ac932011-11-16 15:43:09 +0100202 capability_->Scan(&error);
Darin Petkov1272a432011-11-10 15:53:37 +0100203 EXPECT_TRUE(error.IsSuccess());
204 ModemGSMNetworkProxyInterface::ScanResults results;
205 results.push_back(ModemGSMNetworkProxyInterface::ScanResult());
206 results[0][CellularCapabilityGSM::kNetworkPropertyID] = kID0;
207 results.push_back(ModemGSMNetworkProxyInterface::ScanResult());
208 results[1][CellularCapabilityGSM::kNetworkPropertyID] = kID1;
209 EXPECT_CALL(*network_proxy_, Scan()).WillOnce(Return(results));
210 SetNetworkProxy();
Darin Petkov721ac932011-11-16 15:43:09 +0100211 capability_->found_networks_.resize(3, Stringmap());
Darin Petkov1272a432011-11-10 15:53:37 +0100212 dispatcher_.DispatchPendingEvents();
Darin Petkov721ac932011-11-16 15:43:09 +0100213 EXPECT_EQ(2, capability_->found_networks_.size());
214 EXPECT_EQ(kID0,
215 capability_->found_networks_[0][flimflam::kNetworkIdProperty]);
216 EXPECT_EQ(kID1,
217 capability_->found_networks_[1][flimflam::kNetworkIdProperty]);
Darin Petkov1272a432011-11-10 15:53:37 +0100218}
219
220TEST_F(CellularCapabilityGSMTest, ParseScanResult) {
221 static const char kID[] = "123";
222 static const char kLongName[] = "long name";
223 static const char kShortName[] = "short name";
224 ModemGSMNetworkProxyInterface::ScanResult result;
225 result[CellularCapabilityGSM::kNetworkPropertyStatus] = "1";
226 result[CellularCapabilityGSM::kNetworkPropertyID] = kID;
227 result[CellularCapabilityGSM::kNetworkPropertyLongName] = kLongName;
228 result[CellularCapabilityGSM::kNetworkPropertyShortName] = kShortName;
229 result[CellularCapabilityGSM::kNetworkPropertyAccessTechnology] = "3";
230 result["unknown property"] = "random value";
Darin Petkov721ac932011-11-16 15:43:09 +0100231 Stringmap parsed = capability_->ParseScanResult(result);
Darin Petkov1272a432011-11-10 15:53:37 +0100232 EXPECT_EQ(5, parsed.size());
233 EXPECT_EQ("available", parsed[flimflam::kStatusProperty]);
234 EXPECT_EQ(kID, parsed[flimflam::kNetworkIdProperty]);
235 EXPECT_EQ(kLongName, parsed[flimflam::kLongNameProperty]);
236 EXPECT_EQ(kShortName, parsed[flimflam::kShortNameProperty]);
237 EXPECT_EQ(flimflam::kNetworkTechnologyEdge,
238 parsed[flimflam::kTechnologyProperty]);
239}
240
241TEST_F(CellularCapabilityGSMTest, ParseScanResultProviderLookup) {
242 InitProviderDB();
243 static const char kID[] = "310210";
244 ModemGSMNetworkProxyInterface::ScanResult result;
245 result[CellularCapabilityGSM::kNetworkPropertyID] = kID;
Darin Petkov721ac932011-11-16 15:43:09 +0100246 Stringmap parsed = capability_->ParseScanResult(result);
Darin Petkov1272a432011-11-10 15:53:37 +0100247 EXPECT_EQ(2, parsed.size());
248 EXPECT_EQ(kID, parsed[flimflam::kNetworkIdProperty]);
249 EXPECT_EQ("T-Mobile", parsed[flimflam::kLongNameProperty]);
250}
251
Darin Petkovae0c64e2011-11-15 15:50:27 +0100252TEST_F(CellularCapabilityGSMTest, SetAccessTechnology) {
Darin Petkov721ac932011-11-16 15:43:09 +0100253 capability_->SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_GSM);
254 EXPECT_EQ(MM_MODEM_GSM_ACCESS_TECH_GSM, capability_->access_technology_);
Darin Petkovae0c64e2011-11-15 15:50:27 +0100255 SetService();
Darin Petkov721ac932011-11-16 15:43:09 +0100256 capability_->registration_state_ = MM_MODEM_GSM_NETWORK_REG_STATUS_HOME;
257 capability_->SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_GPRS);
258 EXPECT_EQ(MM_MODEM_GSM_ACCESS_TECH_GPRS, capability_->access_technology_);
Darin Petkovae0c64e2011-11-15 15:50:27 +0100259 EXPECT_EQ(flimflam::kNetworkTechnologyGprs,
260 cellular_->service()->network_tech());
261}
262
263TEST_F(CellularCapabilityGSMTest, UpdateOperatorInfo) {
264 static const char kOperatorName[] = "Swisscom";
265 InitProviderDB();
Darin Petkov0a4dfeb2011-11-18 19:36:13 +0100266 capability_->serving_operator_.SetCode("22801");
Darin Petkovae0c64e2011-11-15 15:50:27 +0100267 SetService();
Darin Petkov721ac932011-11-16 15:43:09 +0100268 capability_->UpdateOperatorInfo();
Darin Petkov0a4dfeb2011-11-18 19:36:13 +0100269 EXPECT_EQ(kOperatorName, capability_->serving_operator_.GetName());
270 EXPECT_EQ("ch", capability_->serving_operator_.GetCountry());
Darin Petkovae0c64e2011-11-15 15:50:27 +0100271 EXPECT_EQ(kOperatorName, cellular_->service()->serving_operator().GetName());
272}
273
Darin Petkov0a4dfeb2011-11-18 19:36:13 +0100274TEST_F(CellularCapabilityGSMTest, UpdateStatus) {
275 InitProviderDB();
276 DBusPropertiesMap props;
277 cellular_->set_imsi("310240123456789");
278 props[Cellular::kPropertyIMSI].writer().append_string("");
279 capability_->UpdateStatus(props);
280 EXPECT_EQ("T-Mobile", cellular_->home_provider().GetName());
281}
282
283TEST_F(CellularCapabilityGSMTest, SetHomeProvider) {
284 static const char kCountry[] = "us";
285 static const char kCode[] = "310160";
286 cellular_->set_imsi("310240123456789");
287
288 capability_->SetHomeProvider(); // No mobile provider DB available.
289 EXPECT_TRUE(cellular_->home_provider().GetName().empty());
290 EXPECT_TRUE(cellular_->home_provider().GetCountry().empty());
291 EXPECT_TRUE(cellular_->home_provider().GetCode().empty());
292
293 InitProviderDB();
294 capability_->SetHomeProvider();
295 EXPECT_EQ("T-Mobile", cellular_->home_provider().GetName());
296 EXPECT_EQ(kCountry, cellular_->home_provider().GetCountry());
297 EXPECT_EQ(kCode, cellular_->home_provider().GetCode());
Darin Petkov3cfbf212011-11-21 16:02:09 +0100298 EXPECT_EQ(4, capability_->apn_list_.size());
Darin Petkov0a4dfeb2011-11-18 19:36:13 +0100299
300 Cellular::Operator oper;
301 cellular_->set_home_provider(oper);
302 capability_->spn_ = kTestCarrier;
303 capability_->SetHomeProvider();
304 EXPECT_EQ(kTestCarrier, cellular_->home_provider().GetName());
305 EXPECT_EQ(kCountry, cellular_->home_provider().GetCountry());
306 EXPECT_EQ(kCode, cellular_->home_provider().GetCode());
307}
308
Darin Petkov3cfbf212011-11-21 16:02:09 +0100309namespace {
310
311MATCHER(SizeIs4, "") {
312 return arg.size() == 4;
313}
314
315} // namespace
316
317TEST_F(CellularCapabilityGSMTest, InitAPNList) {
318 InitProviderDB();
319 capability_->home_provider_ =
320 mobile_provider_lookup_by_name(cellular_->provider_db(), "T-Mobile");
321 ASSERT_TRUE(capability_->home_provider_);
322 EXPECT_EQ(0, capability_->apn_list_.size());
323 EXPECT_CALL(*device_adaptor_,
324 EmitStringmapsChanged(flimflam::kCellularApnListProperty,
325 SizeIs4()));
326 capability_->InitAPNList();
327 EXPECT_EQ(4, capability_->apn_list_.size());
328 EXPECT_EQ("wap.voicestream.com",
329 capability_->apn_list_[1][flimflam::kApnProperty]);
330 EXPECT_EQ("Web2Go/t-zones",
331 capability_->apn_list_[1][flimflam::kApnNameProperty]);
332}
333
Darin Petkov20c13ec2011-11-09 15:07:15 +0100334TEST_F(CellularCapabilityGSMTest, GetNetworkTechnologyString) {
Darin Petkov721ac932011-11-16 15:43:09 +0100335 EXPECT_EQ("", capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100336 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_GSM);
Darin Petkov721ac932011-11-16 15:43:09 +0100337 EXPECT_EQ("", capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100338 SetRegistrationState(MM_MODEM_GSM_NETWORK_REG_STATUS_HOME);
339 EXPECT_EQ(flimflam::kNetworkTechnologyGsm,
Darin Petkov721ac932011-11-16 15:43:09 +0100340 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100341 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_GSM_COMPACT);
342 EXPECT_EQ(flimflam::kNetworkTechnologyGsm,
Darin Petkov721ac932011-11-16 15:43:09 +0100343 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100344 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_GPRS);
345 EXPECT_EQ(flimflam::kNetworkTechnologyGprs,
Darin Petkov721ac932011-11-16 15:43:09 +0100346 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100347 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_EDGE);
348 EXPECT_EQ(flimflam::kNetworkTechnologyEdge,
Darin Petkov721ac932011-11-16 15:43:09 +0100349 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100350 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_UMTS);
351 EXPECT_EQ(flimflam::kNetworkTechnologyUmts,
Darin Petkov721ac932011-11-16 15:43:09 +0100352 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100353 SetRegistrationState(MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING);
354 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_HSDPA);
355 EXPECT_EQ(flimflam::kNetworkTechnologyHspa,
Darin Petkov721ac932011-11-16 15:43:09 +0100356 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100357 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_HSUPA);
358 EXPECT_EQ(flimflam::kNetworkTechnologyHspa,
Darin Petkov721ac932011-11-16 15:43:09 +0100359 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100360 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_HSPA);
361 EXPECT_EQ(flimflam::kNetworkTechnologyHspa,
Darin Petkov721ac932011-11-16 15:43:09 +0100362 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100363 SetAccessTechnology(MM_MODEM_GSM_ACCESS_TECH_HSPA_PLUS);
364 EXPECT_EQ(flimflam::kNetworkTechnologyHspaPlus,
Darin Petkov721ac932011-11-16 15:43:09 +0100365 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100366}
367
368TEST_F(CellularCapabilityGSMTest, GetRoamingStateString) {
369 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100370 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100371 SetRegistrationState(MM_MODEM_GSM_NETWORK_REG_STATUS_HOME);
372 EXPECT_EQ(flimflam::kRoamingStateHome,
Darin Petkov721ac932011-11-16 15:43:09 +0100373 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100374 SetRegistrationState(MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING);
375 EXPECT_EQ(flimflam::kRoamingStateRoaming,
Darin Petkov721ac932011-11-16 15:43:09 +0100376 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100377 SetRegistrationState(MM_MODEM_GSM_NETWORK_REG_STATUS_SEARCHING);
378 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100379 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100380 SetRegistrationState(MM_MODEM_GSM_NETWORK_REG_STATUS_DENIED);
381 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100382 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100383 SetRegistrationState(MM_MODEM_GSM_NETWORK_REG_STATUS_IDLE);
384 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100385 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100386}
387
Darin Petkovb05315f2011-11-07 10:14:25 +0100388} // namespace shill