blob: bdc26575ca393158563991fc3f93811e455a61f6 [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"
Eric Shienbrood04e63582012-01-19 13:41:12 -050018#include "shill/mock_glib.h"
19#include "shill/mock_manager.h"
Thieu Le3426c8f2012-01-11 17:35:11 -080020#include "shill/mock_metrics.h"
Darin Petkovcb547732011-11-09 13:55:26 +010021#include "shill/mock_modem_cdma_proxy.h"
Christopher Wiley7d0953e2012-11-16 00:37:10 -080022#include "shill/mock_modem_proxy.h"
Darin Petkovcb547732011-11-09 13:55:26 +010023#include "shill/nice_mock_control.h"
Ben Chan3ecdf822012-08-06 12:29:23 -070024#include "shill/proxy_factory.h"
Darin Petkovcb547732011-11-09 13:55:26 +010025
Eric Shienbrood9a245532012-03-07 14:20:39 -050026using base::Bind;
27using base::Unretained;
28using std::string;
Darin Petkov184c54e2011-11-15 12:44:39 +010029using testing::_;
Christopher Wiley7d0953e2012-11-16 00:37:10 -080030using testing::InSequence;
Eric Shienbrood9a245532012-03-07 14:20:39 -050031using testing::Invoke;
Darin Petkovcb547732011-11-09 13:55:26 +010032using testing::Return;
33
34namespace shill {
35
36class CellularCapabilityCDMATest : public testing::Test {
37 public:
38 CellularCapabilityCDMATest()
Eric Shienbrood04e63582012-01-19 13:41:12 -050039 : manager_(&control_, &dispatcher_, &metrics_, &glib_),
Christopher Wiley7d0953e2012-11-16 00:37:10 -080040 cellular_(new MockCellular(&control_,
41 &dispatcher_,
42 &metrics_,
43 &manager_,
44 "",
45 "",
46 0,
47 Cellular::kTypeCDMA,
48 "",
49 "",
50 "",
51 NULL,
52 NULL,
53 ProxyFactory::GetInstance())),
54 classic_proxy_(new MockModemProxy()),
Darin Petkovcb547732011-11-09 13:55:26 +010055 proxy_(new MockModemCDMAProxy()),
Darin Petkov721ac932011-11-16 15:43:09 +010056 capability_(NULL) {}
Darin Petkovcb547732011-11-09 13:55:26 +010057
Darin Petkov3e509242011-11-10 14:46:44 +010058 virtual ~CellularCapabilityCDMATest() {
59 cellular_->service_ = NULL;
Darin Petkov721ac932011-11-16 15:43:09 +010060 capability_ = NULL;
Darin Petkov3e509242011-11-10 14:46:44 +010061 }
62
Darin Petkov721ac932011-11-16 15:43:09 +010063 virtual void SetUp() {
64 capability_ =
65 dynamic_cast<CellularCapabilityCDMA *>(cellular_->capability_.get());
Darin Petkov184c54e2011-11-15 12:44:39 +010066 }
67
Eric Shienbrood9a245532012-03-07 14:20:39 -050068 void InvokeActivate(const string &carrier, Error *error,
69 const ActivationResultCallback &callback,
70 int timeout) {
71 callback.Run(MM_MODEM_CDMA_ACTIVATION_ERROR_NO_ERROR, Error());
72 }
73 void InvokeActivateError(const string &carrier, Error *error,
74 const ActivationResultCallback &callback,
75 int timeout) {
76 callback.Run(MM_MODEM_CDMA_ACTIVATION_ERROR_NO_SIGNAL, Error());
77 }
Christopher Wiley7d0953e2012-11-16 00:37:10 -080078 void InvokeDisconnect(Error *error,
79 const ResultCallback &callback,
80 int timeout) {
81 callback.Run(Error());
82 }
83 void InvokeDisconnectError(Error *error,
84 const ResultCallback &callback,
85 int timeout) {
86 Error err(Error::kOperationFailed);
87 callback.Run(err);
88 }
Eric Shienbrood9a245532012-03-07 14:20:39 -050089 void InvokeGetSignalQuality(Error *error,
90 const SignalQualityCallback &callback,
91 int timeout) {
92 callback.Run(kStrength, Error());
93 }
94 void InvokeGetRegistrationState(Error *error,
95 const RegistrationStateCallback &callback,
96 int timeout) {
97 callback.Run(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED,
98 MM_MODEM_CDMA_REGISTRATION_STATE_HOME,
99 Error());
100 }
101
102 MOCK_METHOD1(TestCallback, void(const Error &error));
103
Darin Petkovcb547732011-11-09 13:55:26 +0100104 protected:
105 static const char kMEID[];
Darin Petkova3d3be52011-11-14 21:34:16 +0100106 static const char kTestCarrier[];
Eric Shienbrood9a245532012-03-07 14:20:39 -0500107 static const unsigned int kStrength;
Darin Petkovcb547732011-11-09 13:55:26 +0100108
Christopher Wiley1582bdd2012-11-15 11:31:14 -0800109 bool IsActivationStarting() const {
110 return capability_->activation_starting_;
111 }
112
Darin Petkov20c13ec2011-11-09 15:07:15 +0100113 void SetRegistrationStateEVDO(uint32 state) {
Darin Petkov721ac932011-11-16 15:43:09 +0100114 capability_->registration_state_evdo_ = state;
Darin Petkov20c13ec2011-11-09 15:07:15 +0100115 }
116
117 void SetRegistrationState1x(uint32 state) {
Darin Petkov721ac932011-11-16 15:43:09 +0100118 capability_->registration_state_1x_ = state;
Darin Petkov20c13ec2011-11-09 15:07:15 +0100119 }
120
Darin Petkov3e509242011-11-10 14:46:44 +0100121 void SetProxy() {
Darin Petkov721ac932011-11-16 15:43:09 +0100122 capability_->proxy_.reset(proxy_.release());
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800123 capability_->CellularCapabilityClassic::proxy_.reset(
124 classic_proxy_.release());
Darin Petkov3e509242011-11-10 14:46:44 +0100125 }
126
127 void SetService() {
128 cellular_->service_ = new CellularService(
Eric Shienbrood04e63582012-01-19 13:41:12 -0500129 &control_, &dispatcher_, &metrics_, &manager_, cellular_);
Darin Petkov3e509242011-11-10 14:46:44 +0100130 }
131
Darin Petkova3d3be52011-11-14 21:34:16 +0100132 void SetDeviceState(Cellular::State state) {
133 cellular_->state_ = state;
134 }
135
Darin Petkovcb547732011-11-09 13:55:26 +0100136 NiceMockControl control_;
137 EventDispatcher dispatcher_;
Eric Shienbrood04e63582012-01-19 13:41:12 -0500138 MockGLib glib_;
139 MockManager manager_;
Thieu Le3426c8f2012-01-11 17:35:11 -0800140 MockMetrics metrics_;
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800141 scoped_refptr<MockCellular> cellular_;
142 scoped_ptr<MockModemProxy> classic_proxy_;
Darin Petkovcb547732011-11-09 13:55:26 +0100143 scoped_ptr<MockModemCDMAProxy> proxy_;
Darin Petkov721ac932011-11-16 15:43:09 +0100144 CellularCapabilityCDMA *capability_; // Owned by |cellular_|.
Darin Petkovcb547732011-11-09 13:55:26 +0100145};
146
147const char CellularCapabilityCDMATest::kMEID[] = "D1234567EF8901";
Darin Petkova3d3be52011-11-14 21:34:16 +0100148const char CellularCapabilityCDMATest::kTestCarrier[] = "The Cellular Carrier";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500149const unsigned int CellularCapabilityCDMATest::kStrength = 90;
Darin Petkova3d3be52011-11-14 21:34:16 +0100150
Darin Petkov721ac932011-11-16 15:43:09 +0100151TEST_F(CellularCapabilityCDMATest, PropertyStore) {
152 EXPECT_TRUE(cellular_->store().Contains(flimflam::kPRLVersionProperty));
153}
154
Darin Petkova3d3be52011-11-14 21:34:16 +0100155TEST_F(CellularCapabilityCDMATest, Activate) {
Darin Petkova3d3be52011-11-14 21:34:16 +0100156 SetDeviceState(Cellular::kStateEnabled);
Eric Shienbrood9a245532012-03-07 14:20:39 -0500157 EXPECT_CALL(*proxy_, Activate(kTestCarrier, _, _,
158 CellularCapability::kTimeoutActivate))
159 .WillOnce(Invoke(this,
160 &CellularCapabilityCDMATest::InvokeActivate));
161 EXPECT_CALL(*this, TestCallback(_));
Darin Petkova3d3be52011-11-14 21:34:16 +0100162 SetProxy();
163 SetService();
Eric Shienbrood9a245532012-03-07 14:20:39 -0500164 capability_->Activate(kTestCarrier, NULL,
165 Bind(&CellularCapabilityCDMATest::TestCallback, Unretained(this)));
Darin Petkova3d3be52011-11-14 21:34:16 +0100166 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING,
Darin Petkov721ac932011-11-16 15:43:09 +0100167 capability_->activation_state());
Darin Petkova3d3be52011-11-14 21:34:16 +0100168 EXPECT_EQ(flimflam::kActivationStateActivating,
169 cellular_->service()->activation_state());
170 EXPECT_EQ("", cellular_->service()->error());
171}
172
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800173TEST_F(CellularCapabilityCDMATest, ActivateWhileConnected) {
174 SetDeviceState(Cellular::kStateConnected);
175 {
176 InSequence dummy;
177
Christopher Wiley8a468902012-11-30 11:52:38 -0800178 EXPECT_CALL(*cellular_, Disconnect(_));
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800179 EXPECT_CALL(*proxy_, Activate(kTestCarrier, _, _,
180 CellularCapability::kTimeoutActivate))
181 .WillOnce(Invoke(this,
182 &CellularCapabilityCDMATest::InvokeActivate));
183 EXPECT_CALL(*this, TestCallback(_));
184 }
185 SetProxy();
186 SetService();
187 Error error;
188 capability_->Activate(kTestCarrier, &error,
189 Bind(&CellularCapabilityCDMATest::TestCallback, Unretained(this)));
Christopher Wiley8a468902012-11-30 11:52:38 -0800190 // So now we should be "activating" while we wait for a disconnect.
191 EXPECT_TRUE(IsActivationStarting());
192 EXPECT_TRUE(capability_->IsActivating());
193 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED,
194 capability_->activation_state());
195 // Simulate a disconnect.
196 SetDeviceState(Cellular::kStateRegistered);
197 capability_->DisconnectCleanup();
198 // Now the modem is actually activating.
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800199 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING,
200 capability_->activation_state());
201 EXPECT_EQ(flimflam::kActivationStateActivating,
202 cellular_->service()->activation_state());
203 EXPECT_EQ("", cellular_->service()->error());
Christopher Wiley1582bdd2012-11-15 11:31:14 -0800204 EXPECT_FALSE(IsActivationStarting());
205 EXPECT_TRUE(capability_->IsActivating());
206}
207
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800208TEST_F(CellularCapabilityCDMATest, ActivateWhileConnectedButFail) {
209 SetDeviceState(Cellular::kStateConnected);
210 {
211 InSequence dummy;
212
Christopher Wiley8a468902012-11-30 11:52:38 -0800213 EXPECT_CALL(*cellular_, Disconnect(_));
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800214 EXPECT_CALL(*proxy_, Activate(kTestCarrier, _, _,
215 CellularCapability::kTimeoutActivate))
216 .Times(0);
217 }
218 SetProxy();
219 SetService();
220 Error error;
221 capability_->Activate(kTestCarrier, &error,
222 Bind(&CellularCapabilityCDMATest::TestCallback, Unretained(this)));
Christopher Wiley8a468902012-11-30 11:52:38 -0800223 // So now we should be "activating" while we wait for a disconnect.
224 EXPECT_TRUE(IsActivationStarting());
225 EXPECT_TRUE(capability_->IsActivating());
226 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED,
227 capability_->activation_state());
228 // Similulate a failed disconnect (the modem is still connected!).
229 capability_->DisconnectCleanup();
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800230 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED,
231 capability_->activation_state());
232 EXPECT_EQ(flimflam::kActivationStateNotActivated,
233 cellular_->service()->activation_state());
234 EXPECT_EQ(flimflam::kErrorActivationFailed,
235 cellular_->service()->error());
Christopher Wiley1582bdd2012-11-15 11:31:14 -0800236 EXPECT_FALSE(IsActivationStarting());
237 EXPECT_FALSE(capability_->IsActivating());
Christopher Wiley7d0953e2012-11-16 00:37:10 -0800238}
239
Darin Petkova3d3be52011-11-14 21:34:16 +0100240TEST_F(CellularCapabilityCDMATest, ActivateError) {
Eric Shienbrood9a245532012-03-07 14:20:39 -0500241 SetDeviceState(Cellular::kStateEnabled);
242 EXPECT_CALL(*proxy_, Activate(kTestCarrier, _, _,
243 CellularCapability::kTimeoutActivate))
244 .WillOnce(Invoke(this,
245 &CellularCapabilityCDMATest::InvokeActivateError));
246 EXPECT_CALL(*this, TestCallback(_));
Darin Petkova3d3be52011-11-14 21:34:16 +0100247 SetProxy();
248 SetService();
Eric Shienbrood9a245532012-03-07 14:20:39 -0500249 capability_->Activate(kTestCarrier, NULL,
250 Bind(&CellularCapabilityCDMATest::TestCallback, Unretained(this)));
Darin Petkova3d3be52011-11-14 21:34:16 +0100251 EXPECT_EQ(MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED,
Darin Petkov721ac932011-11-16 15:43:09 +0100252 capability_->activation_state());
Darin Petkova3d3be52011-11-14 21:34:16 +0100253 EXPECT_EQ(flimflam::kActivationStateNotActivated,
254 cellular_->service()->activation_state());
255 EXPECT_EQ(flimflam::kErrorActivationFailed,
256 cellular_->service()->error());
257}
Darin Petkovcb547732011-11-09 13:55:26 +0100258
Darin Petkovae0c64e2011-11-15 15:50:27 +0100259TEST_F(CellularCapabilityCDMATest, GetActivationStateString) {
260 EXPECT_EQ(flimflam::kActivationStateActivated,
261 CellularCapabilityCDMA::GetActivationStateString(
262 MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATED));
263 EXPECT_EQ(flimflam::kActivationStateActivating,
264 CellularCapabilityCDMA::GetActivationStateString(
265 MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING));
266 EXPECT_EQ(flimflam::kActivationStateNotActivated,
267 CellularCapabilityCDMA::GetActivationStateString(
268 MM_MODEM_CDMA_ACTIVATION_STATE_NOT_ACTIVATED));
269 EXPECT_EQ(flimflam::kActivationStatePartiallyActivated,
270 CellularCapabilityCDMA::GetActivationStateString(
271 MM_MODEM_CDMA_ACTIVATION_STATE_PARTIALLY_ACTIVATED));
272 EXPECT_EQ(flimflam::kActivationStateUnknown,
273 CellularCapabilityCDMA::GetActivationStateString(123));
274}
275
276TEST_F(CellularCapabilityCDMATest, GetActivationErrorString) {
277 EXPECT_EQ(flimflam::kErrorNeedEvdo,
278 CellularCapabilityCDMA::GetActivationErrorString(
279 MM_MODEM_CDMA_ACTIVATION_ERROR_WRONG_RADIO_INTERFACE));
280 EXPECT_EQ(flimflam::kErrorNeedHomeNetwork,
281 CellularCapabilityCDMA::GetActivationErrorString(
282 MM_MODEM_CDMA_ACTIVATION_ERROR_ROAMING));
283 EXPECT_EQ(flimflam::kErrorOtaspFailed,
284 CellularCapabilityCDMA::GetActivationErrorString(
285 MM_MODEM_CDMA_ACTIVATION_ERROR_COULD_NOT_CONNECT));
286 EXPECT_EQ(flimflam::kErrorOtaspFailed,
287 CellularCapabilityCDMA::GetActivationErrorString(
288 MM_MODEM_CDMA_ACTIVATION_ERROR_SECURITY_AUTHENTICATION_FAILED));
289 EXPECT_EQ(flimflam::kErrorOtaspFailed,
290 CellularCapabilityCDMA::GetActivationErrorString(
291 MM_MODEM_CDMA_ACTIVATION_ERROR_PROVISIONING_FAILED));
292 EXPECT_EQ("",
293 CellularCapabilityCDMA::GetActivationErrorString(
294 MM_MODEM_CDMA_ACTIVATION_ERROR_NO_ERROR));
295 EXPECT_EQ(flimflam::kErrorActivationFailed,
296 CellularCapabilityCDMA::GetActivationErrorString(
297 MM_MODEM_CDMA_ACTIVATION_ERROR_NO_SIGNAL));
298 EXPECT_EQ(flimflam::kErrorActivationFailed,
299 CellularCapabilityCDMA::GetActivationErrorString(1234));
300}
301
Darin Petkovb72cf402011-11-22 14:51:39 +0100302TEST_F(CellularCapabilityCDMATest, IsRegisteredEVDO) {
303 EXPECT_FALSE(capability_->IsRegistered());
304 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
305 EXPECT_FALSE(capability_->IsRegistered());
306 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
307 EXPECT_TRUE(capability_->IsRegistered());
308 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
309 EXPECT_TRUE(capability_->IsRegistered());
310 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
311 EXPECT_TRUE(capability_->IsRegistered());
312}
313
314TEST_F(CellularCapabilityCDMATest, IsRegistered1x) {
315 EXPECT_FALSE(capability_->IsRegistered());
316 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
317 EXPECT_FALSE(capability_->IsRegistered());
318 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
319 EXPECT_TRUE(capability_->IsRegistered());
320 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
321 EXPECT_TRUE(capability_->IsRegistered());
322 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
323 EXPECT_TRUE(capability_->IsRegistered());
324}
325
Darin Petkov20c13ec2011-11-09 15:07:15 +0100326TEST_F(CellularCapabilityCDMATest, GetNetworkTechnologyString) {
Darin Petkov721ac932011-11-16 15:43:09 +0100327 EXPECT_EQ("", capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100328 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
329 EXPECT_EQ(flimflam::kNetworkTechnologyEvdo,
Darin Petkov721ac932011-11-16 15:43:09 +0100330 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100331 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
332 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
333 EXPECT_EQ(flimflam::kNetworkTechnology1Xrtt,
Darin Petkov721ac932011-11-16 15:43:09 +0100334 capability_->GetNetworkTechnologyString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100335}
336
337TEST_F(CellularCapabilityCDMATest, GetRoamingStateString) {
338 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100339 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100340 SetRegistrationStateEVDO(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 SetRegistrationStateEVDO(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 SetRegistrationStateEVDO(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 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
349 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
350 EXPECT_EQ(flimflam::kRoamingStateUnknown,
Darin Petkov721ac932011-11-16 15:43:09 +0100351 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100352 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
Darin Petkov721ac932011-11-16 15:43:09 +0100353 EXPECT_EQ(flimflam::kRoamingStateHome, capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100354 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
355 EXPECT_EQ(flimflam::kRoamingStateRoaming,
Darin Petkov721ac932011-11-16 15:43:09 +0100356 capability_->GetRoamingStateString());
Darin Petkov20c13ec2011-11-09 15:07:15 +0100357}
358
Darin Petkov3e509242011-11-10 14:46:44 +0100359TEST_F(CellularCapabilityCDMATest, GetSignalQuality) {
Eric Shienbrood9a245532012-03-07 14:20:39 -0500360 EXPECT_CALL(*proxy_,
361 GetSignalQuality(NULL, _, CellularCapability::kTimeoutDefault))
362 .WillOnce(Invoke(this,
363 &CellularCapabilityCDMATest::InvokeGetSignalQuality));
Darin Petkov3e509242011-11-10 14:46:44 +0100364 SetProxy();
365 SetService();
366 EXPECT_EQ(0, cellular_->service()->strength());
Darin Petkov721ac932011-11-16 15:43:09 +0100367 capability_->GetSignalQuality();
Darin Petkov3e509242011-11-10 14:46:44 +0100368 EXPECT_EQ(kStrength, cellular_->service()->strength());
369}
370
Darin Petkov184c54e2011-11-15 12:44:39 +0100371TEST_F(CellularCapabilityCDMATest, GetRegistrationState) {
372 EXPECT_FALSE(cellular_->service().get());
373 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN,
Darin Petkov721ac932011-11-16 15:43:09 +0100374 capability_->registration_state_1x());
Darin Petkov184c54e2011-11-15 12:44:39 +0100375 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN,
Darin Petkov721ac932011-11-16 15:43:09 +0100376 capability_->registration_state_evdo());
Eric Shienbrood9a245532012-03-07 14:20:39 -0500377 EXPECT_CALL(*proxy_,
378 GetRegistrationState(NULL, _,
379 CellularCapability::kTimeoutDefault))
380 .WillOnce(Invoke(
381 this,
382 &CellularCapabilityCDMATest::InvokeGetRegistrationState));
Darin Petkov184c54e2011-11-15 12:44:39 +0100383 SetProxy();
Eric Shienbrood9a245532012-03-07 14:20:39 -0500384 cellular_->state_ = Cellular::kStateEnabled;
Eric Shienbrood04e63582012-01-19 13:41:12 -0500385 EXPECT_CALL(manager_, RegisterService(_));
Eric Shienbrood9a245532012-03-07 14:20:39 -0500386 capability_->GetRegistrationState();
Darin Petkov184c54e2011-11-15 12:44:39 +0100387 dispatcher_.DispatchPendingEvents();
388 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED,
Darin Petkov721ac932011-11-16 15:43:09 +0100389 capability_->registration_state_1x());
Darin Petkov184c54e2011-11-15 12:44:39 +0100390 EXPECT_EQ(MM_MODEM_CDMA_REGISTRATION_STATE_HOME,
Darin Petkov721ac932011-11-16 15:43:09 +0100391 capability_->registration_state_evdo());
Eric Shienbrood04e63582012-01-19 13:41:12 -0500392 EXPECT_TRUE(cellular_->service().get());
Darin Petkov184c54e2011-11-15 12:44:39 +0100393}
394
Darin Petkovac635a82012-01-10 16:51:58 +0100395TEST_F(CellularCapabilityCDMATest, CreateFriendlyServiceName) {
396 CellularCapabilityCDMA::friendly_service_name_id_ = 0;
397 EXPECT_EQ("CDMANetwork0", capability_->CreateFriendlyServiceName());
398 EXPECT_EQ("CDMANetwork1", capability_->CreateFriendlyServiceName());
399 static const char kTestCarrier[] = "A Carrier";
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500400 capability_->carrier_ = kTestCarrier;
Darin Petkovac635a82012-01-10 16:51:58 +0100401 EXPECT_EQ(kTestCarrier, capability_->CreateFriendlyServiceName());
402}
403
Darin Petkovcb547732011-11-09 13:55:26 +0100404} // namespace shill