blob: 7c9895314f405eea56dd187c116cab39c9bbed1a [file] [log] [blame]
Darin Petkovcb547732011-11-09 13:55:26 +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_cdma.h"
6
Darin Petkov20c13ec2011-11-09 15:07:15 +01007#include <chromeos/dbus/service_constants.h>
Darin Petkovcb547732011-11-09 13:55:26 +01008#include <gtest/gtest.h>
Darin Petkov20c13ec2011-11-09 15:07:15 +01009#include <mm/mm-modem.h>
Darin Petkovcb547732011-11-09 13:55:26 +010010
11#include "shill/cellular.h"
Darin Petkov3e509242011-11-10 14:46:44 +010012#include "shill/cellular_service.h"
Darin Petkovcb547732011-11-09 13:55:26 +010013#include "shill/error.h"
14#include "shill/event_dispatcher.h"
15#include "shill/mock_modem_cdma_proxy.h"
16#include "shill/nice_mock_control.h"
17
18using testing::Return;
19
20namespace shill {
21
22class CellularCapabilityCDMATest : public testing::Test {
23 public:
24 CellularCapabilityCDMATest()
25 : cellular_(new Cellular(&control_,
26 &dispatcher_,
27 NULL,
28 "",
29 "",
30 0,
31 Cellular::kTypeCDMA,
32 "",
33 "",
34 NULL)),
35 proxy_(new MockModemCDMAProxy()),
36 capability_(cellular_.get()) {}
37
Darin Petkov3e509242011-11-10 14:46:44 +010038 virtual ~CellularCapabilityCDMATest() {
39 cellular_->service_ = NULL;
40 }
41
Darin Petkovcb547732011-11-09 13:55:26 +010042 protected:
43 static const char kMEID[];
44
Darin Petkov20c13ec2011-11-09 15:07:15 +010045 void SetRegistrationStateEVDO(uint32 state) {
46 cellular_->cdma_.registration_state_evdo = state;
47 }
48
49 void SetRegistrationState1x(uint32 state) {
50 cellular_->cdma_.registration_state_1x = state;
51 }
52
Darin Petkov3e509242011-11-10 14:46:44 +010053 void SetProxy() {
54 cellular_->set_modem_cdma_proxy(proxy_.release());
55 }
56
57 void SetService() {
58 cellular_->service_ = new CellularService(
59 &control_, &dispatcher_, NULL, cellular_);
60 }
61
Darin Petkovcb547732011-11-09 13:55:26 +010062 NiceMockControl control_;
63 EventDispatcher dispatcher_;
64 CellularRefPtr cellular_;
65 scoped_ptr<MockModemCDMAProxy> proxy_;
66 CellularCapabilityCDMA capability_;
67};
68
69const char CellularCapabilityCDMATest::kMEID[] = "D1234567EF8901";
70
71TEST_F(CellularCapabilityCDMATest, GetIdentifiers) {
72 EXPECT_CALL(*proxy_, MEID()).WillOnce(Return(kMEID));
Darin Petkov3e509242011-11-10 14:46:44 +010073 SetProxy();
Darin Petkovcb547732011-11-09 13:55:26 +010074 capability_.GetIdentifiers();
75 EXPECT_EQ(kMEID, cellular_->meid());
76 capability_.GetIdentifiers();
77 EXPECT_EQ(kMEID, cellular_->meid());
78}
79
Darin Petkov20c13ec2011-11-09 15:07:15 +010080TEST_F(CellularCapabilityCDMATest, GetNetworkTechnologyString) {
81 EXPECT_EQ("", capability_.GetNetworkTechnologyString());
82 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
83 EXPECT_EQ(flimflam::kNetworkTechnologyEvdo,
84 capability_.GetNetworkTechnologyString());
85 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
86 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
87 EXPECT_EQ(flimflam::kNetworkTechnology1Xrtt,
88 capability_.GetNetworkTechnologyString());
89}
90
91TEST_F(CellularCapabilityCDMATest, GetRoamingStateString) {
92 EXPECT_EQ(flimflam::kRoamingStateUnknown,
93 capability_.GetRoamingStateString());
94 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
95 EXPECT_EQ(flimflam::kRoamingStateUnknown,
96 capability_.GetRoamingStateString());
97 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
98 EXPECT_EQ(flimflam::kRoamingStateHome, capability_.GetRoamingStateString());
99 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
100 EXPECT_EQ(flimflam::kRoamingStateRoaming,
101 capability_.GetRoamingStateString());
102 SetRegistrationStateEVDO(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
103 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED);
104 EXPECT_EQ(flimflam::kRoamingStateUnknown,
105 capability_.GetRoamingStateString());
106 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_HOME);
107 EXPECT_EQ(flimflam::kRoamingStateHome, capability_.GetRoamingStateString());
108 SetRegistrationState1x(MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING);
109 EXPECT_EQ(flimflam::kRoamingStateRoaming,
110 capability_.GetRoamingStateString());
111}
112
Darin Petkov3e509242011-11-10 14:46:44 +0100113TEST_F(CellularCapabilityCDMATest, GetSignalQuality) {
114 const int kStrength = 90;
115 EXPECT_CALL(*proxy_, GetSignalQuality()).WillOnce(Return(kStrength));
116 SetProxy();
117 SetService();
118 EXPECT_EQ(0, cellular_->service()->strength());
119 capability_.GetSignalQuality();
120 EXPECT_EQ(kStrength, cellular_->service()->strength());
121}
122
Darin Petkovcb547732011-11-09 13:55:26 +0100123} // namespace shill