blob: fe9193ef6a6be868df6184d166b5998687b127b2 [file] [log] [blame]
Darin Petkovac635a82012-01-10 16:51:58 +01001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkovcb547732011-11-09 13:55:26 +01002// 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_cdma.h"
6
Eric Shienbrood9a245532012-03-07 14:20:39 -05007#include <base/bind.h>
Darin Petkov20c13ec2011-11-09 15:07:15 +01008#include <chromeos/dbus/service_constants.h>
Darin Petkovcb547732011-11-09 13:55:26 +01009#include <gtest/gtest.h>
Darin Petkov20c13ec2011-11-09 15:07:15 +010010#include <mm/mm-modem.h>
Darin Petkovcb547732011-11-09 13:55:26 +010011
12#include "shill/cellular.h"
Darin Petkov3e509242011-11-10 14:46:44 +010013#include "shill/cellular_service.h"
Darin Petkovcb547732011-11-09 13:55:26 +010014#include "shill/error.h"
15#include "shill/event_dispatcher.h"
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050016#include "shill/mock_adaptors.h"
Christopher Wiley7d0953e2012-11-16 00:37:10 -080017#include "shill/mock_cellular.h"
Darin Petkovcb547732011-11-09 13:55:26 +010018#include "shill/mock_modem_cdma_proxy.h"
Prathmesh Prabhu27526f12013-03-25 19:42:18 -070019#include "shill/mock_modem_info.h"
Christopher Wiley7d0953e2012-11-16 00:37:10 -080020#include "shill/mock_modem_proxy.h"
Ben Chan3ecdf822012-08-06 12:29:23 -070021#include "shill/proxy_factory.h"
Darin Petkovcb547732011-11-09 13:55:26 +010022
Eric Shienbrood9a245532012-03-07 14:20:39 -050023using base::Bind;
24using base::Unretained;
25using std::string;
Darin Petkov184c54e2011-11-15 12:44:39 +010026using testing::_;
Christopher Wiley7d0953e2012-11-16 00:37:10 -080027using testing::InSequence;
Eric Shienbrood9a245532012-03-07 14:20:39 -050028using testing::Invoke;
Darin Petkovcb547732011-11-09 13:55:26 +010029using testing::Return;
30
31namespace shill {
32
33class CellularCapabilityCDMATest : public testing::Test {
34 public:
35 CellularCapabilityCDMATest()
Prathmesh Prabhu27526f12013-03-25 19:42:18 -070036 : modem_info_(NULL, &dispatcher_, NULL, NULL, NULL),
37 cellular_(new MockCellular(&modem_info_,
Christopher Wiley7d0953e2012-11-16 00:37:10 -080038 "",
39 "",
40 0,
41 Cellular::kTypeCDMA,
42 "",
43 "",
44 "",
Christopher Wiley7d0953e2012-11-16 00:37:10 -080045 ProxyFactory::GetInstance())),
46 classic_proxy_(new MockModemProxy()),
Darin Petkovcb547732011-11-09 13:55:26 +010047 proxy_(new MockModemCDMAProxy()),
Thieu Lece4483e2013-01-23 15:12:03 -080048 capability_(NULL) {
Prathmesh Prabhu27526f12013-03-25 19:42:18 -070049 modem_info_.metrics()->RegisterDevice(cellular_->interface_index(),
50 Technology::kCellular);
Thieu Lece4483e2013-01-23 15:12:03 -080051 }
Darin Petkovcb547732011-11-09 13:55:26 +010052
Darin Petkov3e509242011-11-10 14:46:44 +010053 virtual ~CellularCapabilityCDMATest() {
54 cellular_->service_ = NULL;
Darin Petkov721ac932011-11-16 15:43:09 +010055 capability_ = NULL;
Darin Petkov3e509242011-11-10 14:46:44 +010056 }
57
Darin Petkov721ac932011-11-16 15:43:09 +010058 virtual void SetUp() {
59 capability_ =
60 dynamic_cast<CellularCapabilityCDMA *>(cellular_->capability_.get());
Darin Petkov184c54e2011-11-15 12:44:39 +010061 }
62
Eric Shienbrood9a245532012-03-07 14:20:39 -050063 void InvokeActivate(const string &carrier, Error *error,
64 const ActivationResultCallback &callback,
65 int timeout) {
66 callback.Run(MM_MODEM_CDMA_ACTIVATION_ERROR_NO_ERROR, Error());
67 }
68 void InvokeActivateError(const string &carrier, Error *error,
69 const ActivationResultCallback &callback,
70 int timeout) {
71 callback.Run(MM_MODEM_CDMA_ACTIVATION_ERROR_NO_SIGNAL, Error());
72 }
Christopher Wiley7d0953e2012-11-16 00:37:10 -080073 void InvokeDisconnect(Error *error,
74 const ResultCallback &callback,
75 int timeout) {
76 callback.Run(Error());
77 }
78 void InvokeDisconnectError(Error *error,
79 const ResultCallback &callback,
80 int timeout) {
81 Error err(Error::kOperationFailed);
82 callback.Run(err);
83 }
Eric Shienbrood9a245532012-03-07 14:20:39 -050084 void InvokeGetSignalQuality(Error *error,
85 const SignalQualityCallback &callback,
86 int timeout) {
87 callback.Run(kStrength, Error());
88 }
89 void InvokeGetRegistrationState(Error *error,
90 const RegistrationStateCallback &callback,
91 int timeout) {
92 callback.Run(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED,
93 MM_MODEM_CDMA_REGISTRATION_STATE_HOME,
94 Error());
95 }
96
97 MOCK_METHOD1(TestCallback, void(const Error &error));
98
Darin Petkovcb547732011-11-09 13:55:26 +010099 protected:
100 static const char kMEID[];
Darin Petkova3d3be52011-11-14 21:34:16 +0100101 static const char kTestCarrier[];
Eric Shienbrood9a245532012-03-07 14:20:39 -0500102 static const unsigned int kStrength;
Darin Petkovcb547732011-11-09 13:55:26 +0100103
Christopher Wiley1582bdd2012-11-15 11:31:14 -0800104 bool IsActivationStarting() const {
105 return capability_->activation_starting_;
106 }
107
Darin Petkov20c13ec2011-11-09 15:07:15 +0100108 void SetRegistrationStateEVDO(uint32 state) {
Darin Petkov721ac932011-11-16 15:43:09 +0100109 capability_->registration_state_evdo_ = state;
Darin Petkov20c13ec2011-11-09 15:07:15 +0100110 }
111
112 void SetRegistrationState1x(uint32 state) {
Darin Petkov721ac932011-11-16 15:43:09 +0100113 capability_->registration_state_1x_ = state;
Darin Petkov20c13ec2011-11-09 15:07:15 +0100114 }
115
Darin Petkov3e509242011-11-10 14:46:44 +0100116 void SetProxy() {
Darin Petkov721ac932011-11-16 15:43:09 +0100117 capability_->proxy_.reset(proxy_.release());
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800118 capability_->CellularCapabilityClassic::proxy_.reset(
119 classic_proxy_.release());
Darin Petkov3e509242011-11-10 14:46:44 +0100120 }
121
122 void SetService() {
Prathmesh Prabhu0d36b4f2013-04-01 11:45:54 -0700123 cellular_->service_ = new CellularService(&modem_info_, cellular_);
Darin Petkov3e509242011-11-10 14:46:44 +0100124 }
125
Darin Petkova3d3be52011-11-14 21:34:16 +0100126 void SetDeviceState(Cellular::State state) {
127 cellular_->state_ = state;
128 }
129
Darin Petkovcb547732011-11-09 13:55:26 +0100130 EventDispatcher dispatcher_;
Prathmesh Prabhu27526f12013-03-25 19:42:18 -0700131 MockModemInfo modem_info_;
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800132 scoped_refptr<MockCellular> cellular_;
133 scoped_ptr<MockModemProxy> classic_proxy_;
Darin Petkovcb547732011-11-09 13:55:26 +0100134 scoped_ptr<MockModemCDMAProxy> proxy_;
Darin Petkov721ac932011-11-16 15:43:09 +0100135 CellularCapabilityCDMA *capability_; // Owned by |cellular_|.
Darin Petkovcb547732011-11-09 13:55:26 +0100136};
137
138const char CellularCapabilityCDMATest::kMEID[] = "D1234567EF8901";
Darin Petkova3d3be52011-11-14 21:34:16 +0100139const char CellularCapabilityCDMATest::kTestCarrier[] = "The Cellular Carrier";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500140const unsigned int CellularCapabilityCDMATest::kStrength = 90;
Darin Petkova3d3be52011-11-14 21:34:16 +0100141
Darin Petkov721ac932011-11-16 15:43:09 +0100142TEST_F(CellularCapabilityCDMATest, PropertyStore) {
143 EXPECT_TRUE(cellular_->store().Contains(flimflam::kPRLVersionProperty));
144}
145
Darin Petkova3d3be52011-11-14 21:34:16 +0100146TEST_F(CellularCapabilityCDMATest, Activate) {
Darin Petkova3d3be52011-11-14 21:34:16 +0100147 SetDeviceState(Cellular::kStateEnabled);
Eric Shienbrood9a245532012-03-07 14:20:39 -0500148 EXPECT_CALL(*proxy_, Activate(kTestCarrier, _, _,
149 CellularCapability::kTimeoutActivate))
150 .WillOnce(Invoke(this,
151 &CellularCapabilityCDMATest::InvokeActivate));
152 EXPECT_CALL(*this, TestCallback(_));
Darin Petkova3d3be52011-11-14 21:34:16 +0100153 SetProxy();
154 SetService();
Eric Shienbrood9a245532012-03-07 14:20:39 -0500155 capability_->Activate(kTestCarrier, NULL,
156 Bind(&CellularCapabilityCDMATest::TestCallback, Unretained(this)));
Darin Petkova3d3be52011-11-14 21:34:16 +0100157 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING,
Darin Petkov721ac932011-11-16 15:43:09 +0100158 capability_->activation_state());
Darin Petkova3d3be52011-11-14 21:34:16 +0100159 EXPECT_EQ(flimflam::kActivationStateActivating,
160 cellular_->service()->activation_state());
161 EXPECT_EQ("", cellular_->service()->error());
162}
163
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800164TEST_F(CellularCapabilityCDMATest, ActivateWhileConnected) {
165 SetDeviceState(Cellular::kStateConnected);
166 {
167 InSequence dummy;
168
Christopher Wiley8a468902012-11-30 11:52:38 -0800169 EXPECT_CALL(*cellular_, Disconnect(_));
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800170 EXPECT_CALL(*proxy_, Activate(kTestCarrier, _, _,
171 CellularCapability::kTimeoutActivate))
172 .WillOnce(Invoke(this,
173 &CellularCapabilityCDMATest::InvokeActivate));
174 EXPECT_CALL(*this, TestCallback(_));
175 }
176 SetProxy();
177 SetService();
178 Error error;
179 capability_->Activate(kTestCarrier, &error,
180 Bind(&CellularCapabilityCDMATest::TestCallback, Unretained(this)));
Christopher Wiley8a468902012-11-30 11:52:38 -0800181 // So now we should be "activating" while we wait for a disconnect.
182 EXPECT_TRUE(IsActivationStarting());
183 EXPECT_TRUE(capability_->IsActivating());
184 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED,
185 capability_->activation_state());
186 // Simulate a disconnect.
187 SetDeviceState(Cellular::kStateRegistered);
188 capability_->DisconnectCleanup();
189 // Now the modem is actually activating.
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800190 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING,
191 capability_->activation_state());
192 EXPECT_EQ(flimflam::kActivationStateActivating,
193 cellular_->service()->activation_state());
194 EXPECT_EQ("", cellular_->service()->error());
Christopher Wiley1582bdd2012-11-15 11:31:14 -0800195 EXPECT_FALSE(IsActivationStarting());
196 EXPECT_TRUE(capability_->IsActivating());
197}
198
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800199TEST_F(CellularCapabilityCDMATest, ActivateWhileConnectedButFail) {
200 SetDeviceState(Cellular::kStateConnected);
201 {
202 InSequence dummy;
203
Christopher Wiley8a468902012-11-30 11:52:38 -0800204 EXPECT_CALL(*cellular_, Disconnect(_));
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800205 EXPECT_CALL(*proxy_, Activate(kTestCarrier, _, _,
206 CellularCapability::kTimeoutActivate))
207 .Times(0);
208 }
209 SetProxy();
210 SetService();
211 Error error;
212 capability_->Activate(kTestCarrier, &error,
213 Bind(&CellularCapabilityCDMATest::TestCallback, Unretained(this)));
Christopher Wiley8a468902012-11-30 11:52:38 -0800214 // So now we should be "activating" while we wait for a disconnect.
215 EXPECT_TRUE(IsActivationStarting());
216 EXPECT_TRUE(capability_->IsActivating());
217 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED,
218 capability_->activation_state());
219 // Similulate a failed disconnect (the modem is still connected!).
220 capability_->DisconnectCleanup();
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800221 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED,
222 capability_->activation_state());
223 EXPECT_EQ(flimflam::kActivationStateNotActivated,
224 cellular_->service()->activation_state());
225 EXPECT_EQ(flimflam::kErrorActivationFailed,
226 cellular_->service()->error());
Christopher Wiley1582bdd2012-11-15 11:31:14 -0800227 EXPECT_FALSE(IsActivationStarting());
228 EXPECT_FALSE(capability_->IsActivating());
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800229}
230
Darin Petkova3d3be52011-11-14 21:34:16 +0100231TEST_F(CellularCapabilityCDMATest, ActivateError) {
Eric Shienbrood9a245532012-03-07 14:20:39 -0500232 SetDeviceState(Cellular::kStateEnabled);
233 EXPECT_CALL(*proxy_, Activate(kTestCarrier, _, _,
234 CellularCapability::kTimeoutActivate))
235 .WillOnce(Invoke(this,
236 &CellularCapabilityCDMATest::InvokeActivateError));
237 EXPECT_CALL(*this, TestCallback(_));
Darin Petkova3d3be52011-11-14 21:34:16 +0100238 SetProxy();
239 SetService();
Eric Shienbrood9a245532012-03-07 14:20:39 -0500240 capability_->Activate(kTestCarrier, NULL,
241 Bind(&CellularCapabilityCDMATest::TestCallback, Unretained(this)));
Darin Petkova3d3be52011-11-14 21:34:16 +0100242 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED,
Darin Petkov721ac932011-11-16 15:43:09 +0100243 capability_->activation_state());
Darin Petkova3d3be52011-11-14 21:34:16 +0100244 EXPECT_EQ(flimflam::kActivationStateNotActivated,
245 cellular_->service()->activation_state());
246 EXPECT_EQ(flimflam::kErrorActivationFailed,
247 cellular_->service()->error());
248}
Darin Petkovcb547732011-11-09 13:55:26 +0100249
Darin Petkovae0c64e2011-11-15 15:50:27 +0100250TEST_F(CellularCapabilityCDMATest, GetActivationStateString) {
251 EXPECT_EQ(flimflam::kActivationStateActivated,
252 CellularCapabilityCDMA::GetActivationStateString(
253 MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATED));
254 EXPECT_EQ(flimflam::kActivationStateActivating,
255 CellularCapabilityCDMA::GetActivationStateString(
256 MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING));
257 EXPECT_EQ(flimflam::kActivationStateNotActivated,
258 CellularCapabilityCDMA::GetActivationStateString(
259 MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED));
260 EXPECT_EQ(flimflam::kActivationStatePartiallyActivated,
261 CellularCapabilityCDMA::GetActivationStateString(
262 MM_MODEM_CDMA_ACTIVATION_STATE_PARTIALLY_ACTIVATED));
263 EXPECT_EQ(flimflam::kActivationStateUnknown,
264 CellularCapabilityCDMA::GetActivationStateString(123));
265}
266
267TEST_F(CellularCapabilityCDMATest, GetActivationErrorString) {
268 EXPECT_EQ(flimflam::kErrorNeedEvdo,
269 CellularCapabilityCDMA::GetActivationErrorString(
270 MM_MODEM_CDMA_ACTIVATION_ERROR_WRONG_RADIO_INTERFACE));
271 EXPECT_EQ(flimflam::kErrorNeedHomeNetwork,
272 CellularCapabilityCDMA::GetActivationErrorString(
273 MM_MODEM_CDMA_ACTIVATION_ERROR_ROAMING));
274 EXPECT_EQ(flimflam::kErrorOtaspFailed,
275 CellularCapabilityCDMA::GetActivationErrorString(
276 MM_MODEM_CDMA_ACTIVATION_ERROR_COULD_NOT_CONNECT));
277 EXPECT_EQ(flimflam::kErrorOtaspFailed,
278 CellularCapabilityCDMA::GetActivationErrorString(
279 MM_MODEM_CDMA_ACTIVATION_ERROR_SECURITY_AUTHENTICATION_FAILED));
280 EXPECT_EQ(flimflam::kErrorOtaspFailed,
281 CellularCapabilityCDMA::GetActivationErrorString(
282 MM_MODEM_CDMA_ACTIVATION_ERROR_PROVISIONING_FAILED));
283 EXPECT_EQ("",
284 CellularCapabilityCDMA::GetActivationErrorString(
285 MM_MODEM_CDMA_ACTIVATION_ERROR_NO_ERROR));
286 EXPECT_EQ(flimflam::kErrorActivationFailed,
287 CellularCapabilityCDMA::GetActivationErrorString(
288 MM_MODEM_CDMA_ACTIVATION_ERROR_NO_SIGNAL));
289 EXPECT_EQ(flimflam::kErrorActivationFailed,
290 CellularCapabilityCDMA::GetActivationErrorString(1234));
291}
292
Darin Petkovb72cf402011-11-22 14:51:39 +0100293TEST_F(CellularCapabilityCDMATest, IsRegisteredEVDO) {
294 EXPECT_FALSE(capability_->IsRegistered());
295 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
296 EXPECT_FALSE(capability_->IsRegistered());
297 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
298 EXPECT_TRUE(capability_->IsRegistered());
299 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
300 EXPECT_TRUE(capability_->IsRegistered());
301 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
302 EXPECT_TRUE(capability_->IsRegistered());
303}
304
305TEST_F(CellularCapabilityCDMATest, IsRegistered1x) {
306 EXPECT_FALSE(capability_->IsRegistered());
307 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
308 EXPECT_FALSE(capability_->IsRegistered());
309 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
310 EXPECT_TRUE(capability_->IsRegistered());
311 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
312 EXPECT_TRUE(capability_->IsRegistered());
313 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
314 EXPECT_TRUE(capability_->IsRegistered());
315}
316
Darin Petkov20c13ec2011-11-09 15:07:15 +0100317TEST_F(CellularCapabilityCDMATest, GetNetworkTechnologyString) {
Darin Petkov721ac932011-11-16 15:43:09 +0100318 EXPECT_EQ("", capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100319 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
320 EXPECT_EQ(flimflam::kNetworkTechnologyEvdo,
Darin Petkov721ac932011-11-16 15:43:09 +0100321 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100322 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
323 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
324 EXPECT_EQ(flimflam::kNetworkTechnology1Xrtt,
Darin Petkov721ac932011-11-16 15:43:09 +0100325 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100326}
327
328TEST_F(CellularCapabilityCDMATest, GetRoamingStateString) {
329 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100330 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100331 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
332 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100333 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100334 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
Darin Petkov721ac932011-11-16 15:43:09 +0100335 EXPECT_EQ(flimflam::kRoamingStateHome, capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100336 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
337 EXPECT_EQ(flimflam::kRoamingStateRoaming,
Darin Petkov721ac932011-11-16 15:43:09 +0100338 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100339 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
340 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
341 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100342 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100343 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
Darin Petkov721ac932011-11-16 15:43:09 +0100344 EXPECT_EQ(flimflam::kRoamingStateHome, capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100345 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
346 EXPECT_EQ(flimflam::kRoamingStateRoaming,
Darin Petkov721ac932011-11-16 15:43:09 +0100347 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100348}
349
Darin Petkov3e509242011-11-10 14:46:44 +0100350TEST_F(CellularCapabilityCDMATest, GetSignalQuality) {
Eric Shienbrood9a245532012-03-07 14:20:39 -0500351 EXPECT_CALL(*proxy_,
352 GetSignalQuality(NULL, _, CellularCapability::kTimeoutDefault))
353 .WillOnce(Invoke(this,
354 &CellularCapabilityCDMATest::InvokeGetSignalQuality));
Darin Petkov3e509242011-11-10 14:46:44 +0100355 SetProxy();
356 SetService();
357 EXPECT_EQ(0, cellular_->service()->strength());
Darin Petkov721ac932011-11-16 15:43:09 +0100358 capability_->GetSignalQuality();
Darin Petkov3e509242011-11-10 14:46:44 +0100359 EXPECT_EQ(kStrength, cellular_->service()->strength());
360}
361
Darin Petkov184c54e2011-11-15 12:44:39 +0100362TEST_F(CellularCapabilityCDMATest, GetRegistrationState) {
363 EXPECT_FALSE(cellular_->service().get());
364 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN,
Darin Petkov721ac932011-11-16 15:43:09 +0100365 capability_->registration_state_1x());
Darin Petkov184c54e2011-11-15 12:44:39 +0100366 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN,
Darin Petkov721ac932011-11-16 15:43:09 +0100367 capability_->registration_state_evdo());
Eric Shienbrood9a245532012-03-07 14:20:39 -0500368 EXPECT_CALL(*proxy_,
369 GetRegistrationState(NULL, _,
370 CellularCapability::kTimeoutDefault))
371 .WillOnce(Invoke(
372 this,
373 &CellularCapabilityCDMATest::InvokeGetRegistrationState));
Darin Petkov184c54e2011-11-15 12:44:39 +0100374 SetProxy();
Eric Shienbrood9a245532012-03-07 14:20:39 -0500375 cellular_->state_ = Cellular::kStateEnabled;
Prathmesh Prabhu27526f12013-03-25 19:42:18 -0700376 EXPECT_CALL(*modem_info_.mock_manager(), RegisterService(_));
Eric Shienbrood9a245532012-03-07 14:20:39 -0500377 capability_->GetRegistrationState();
Darin Petkov184c54e2011-11-15 12:44:39 +0100378 dispatcher_.DispatchPendingEvents();
379 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED,
Darin Petkov721ac932011-11-16 15:43:09 +0100380 capability_->registration_state_1x());
Darin Petkov184c54e2011-11-15 12:44:39 +0100381 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_HOME,
Darin Petkov721ac932011-11-16 15:43:09 +0100382 capability_->registration_state_evdo());
Eric Shienbrood04e63582012-01-19 13:41:12 -0500383 EXPECT_TRUE(cellular_->service().get());
Darin Petkov184c54e2011-11-15 12:44:39 +0100384}
385
Darin Petkovac635a82012-01-10 16:51:58 +0100386TEST_F(CellularCapabilityCDMATest, CreateFriendlyServiceName) {
387 CellularCapabilityCDMA::friendly_service_name_id_ = 0;
388 EXPECT_EQ("CDMANetwork0", capability_->CreateFriendlyServiceName());
389 EXPECT_EQ("CDMANetwork1", capability_->CreateFriendlyServiceName());
390 static const char kTestCarrier[] = "A Carrier";
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500391 capability_->carrier_ = kTestCarrier;
Darin Petkovac635a82012-01-10 16:51:58 +0100392 EXPECT_EQ(kTestCarrier, capability_->CreateFriendlyServiceName());
393}
394
Darin Petkovcb547732011-11-09 13:55:26 +0100395} // namespace shill