blob: 34e56f4cdbc0a5c8787f6296a75284a4b794732e [file] [log] [blame]
Arman Ugurayf4c61812013-01-10 18:58:39 -08001// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
Ben Chanb39cb312012-11-01 22:55:25 -07002// 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_operator_info.h"
6
7#include <base/file_util.h>
8#include <gtest/gtest.h>
9
Arman Ugurayf4c61812013-01-10 18:58:39 -080010using std::map;
Ben Chanb39cb312012-11-01 22:55:25 -070011using std::string;
Arman Ugurayf4c61812013-01-10 18:58:39 -080012using std::vector;
Ben Chanb39cb312012-11-01 22:55:25 -070013
14namespace shill {
15
16namespace {
17
18const char kTestInfoFileContent[] =
Ben Chan20228c02012-11-04 21:43:50 -080019 "#\n"
20 "# Comments\n"
21 "#\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080022 "serviceproviders:3.0\n"
23 "country:us\n"
Ben Chanb39cb312012-11-01 22:55:25 -070024 "\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080025 "# TestProvider1\n"
26 "provider:1,1,0,1\n"
Arman Ugurayc9533572013-01-22 17:34:20 -080027 "identifier:provider1identifier\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080028 "name:,TestProvider1\n"
29 "mccmnc:000001,0,000002,0\n"
30 "sid:1,0,2,0,3,0\n"
31 "olp:POST,https://testurl,imei=${imei}&iccid=${iccid}\n"
32 "apn:2,testprovider1apn,,\n"
33 "name:en,Test Provider 1\n"
34 "name:de,Testmobilfunkanbieter 1\n"
Ben Chanb39cb312012-11-01 22:55:25 -070035 "\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080036 "# TestProvider2\n"
37 "provider:1,2,1,0\n"
Arman Ugurayc9533572013-01-22 17:34:20 -080038 "identifier:provider2identifier\n"
Arman Ugurayf4c61812013-01-10 18:58:39 -080039 "name:,TestProviderTwo\n"
40 "name:,TestProvider2\n"
41 "mccmnc:100001,1,100002,0\n"
42 "sid:4,0,5,1\n"
43 "olp:,https://testurl2,\n"
44 "olp:,https://testurl3,\n"
45 "apn:1,testprovider2apn,,\n"
46 "name:,Test Provider 2\n"
47 "apn:1,testprovider2apn2,testusername,testpassword\n"
48 "name:tr,Test Operatoru 2\n";
Ben Chanb39cb312012-11-01 22:55:25 -070049
50} // namespace
51
52class CellularOperatorInfoTest : public testing::Test {
53 public:
Arman Ugurayf4c61812013-01-10 18:58:39 -080054 CellularOperatorInfoTest() {}
Ben Chanb39cb312012-11-01 22:55:25 -070055
56 protected:
57 void SetUp() {
58 ASSERT_TRUE(file_util::CreateTemporaryFile(&info_file_path_));
59 ASSERT_EQ(arraysize(kTestInfoFileContent),
60 file_util::WriteFile(info_file_path_, kTestInfoFileContent,
61 arraysize(kTestInfoFileContent)));
62 }
63
64 void TearDown() {
65 ASSERT_TRUE(file_util::Delete(info_file_path_, false));
66 }
67
68 GLib glib_;
69 FilePath info_file_path_;
70 CellularOperatorInfo info_;
71};
72
Arman Ugurayf4c61812013-01-10 18:58:39 -080073TEST_F(CellularOperatorInfoTest, ParseSuccess) {
74 EXPECT_TRUE(info_.Load(info_file_path_));
75 EXPECT_EQ(info_.operators().size(), 2);
76
77 const CellularOperatorInfo::CellularOperator *provider = info_.operators()[0];
78 EXPECT_FALSE(provider->is_primary());
79 EXPECT_TRUE(provider->requires_roaming());
80 EXPECT_EQ(provider->country(), "us");
Arman Ugurayc9533572013-01-22 17:34:20 -080081 EXPECT_EQ(provider->identifier(), "provider1identifier");
Arman Ugurayf4c61812013-01-10 18:58:39 -080082 EXPECT_EQ(provider->name_list().size(), 1);
83 EXPECT_EQ(provider->name_list()[0].language, "");
84 EXPECT_EQ(provider->name_list()[0].name, "TestProvider1");
85 EXPECT_EQ(provider->mccmnc_list().size(), 2);
86 EXPECT_EQ(provider->mccmnc_list()[0], "000001");
87 EXPECT_EQ(provider->mccmnc_list()[1], "000002");
88 EXPECT_EQ(provider->sid_list().size(), 3);
89 EXPECT_EQ(provider->sid_list()[0], "1");
90 EXPECT_EQ(provider->sid_list()[1], "2");
91 EXPECT_EQ(provider->sid_list()[2], "3");
92 EXPECT_EQ(provider->olp_list().size(), 1);
93 EXPECT_EQ(provider->olp_list()[0]->GetURL(), "https://testurl");
94 EXPECT_EQ(provider->olp_list()[0]->GetMethod(), "POST");
95 EXPECT_EQ(provider->olp_list()[0]->GetPostData(),
96 "imei=${imei}&iccid=${iccid}");
97 EXPECT_EQ(provider->apn_list().size(), 1);
98 EXPECT_EQ(provider->apn_list()[0]->apn(), "testprovider1apn");
99 EXPECT_EQ(provider->apn_list()[0]->username(), "");
100 EXPECT_EQ(provider->apn_list()[0]->password(), "");
101 EXPECT_EQ(provider->apn_list()[0]->name_list().size(), 2);
102 EXPECT_EQ(provider->apn_list()[0]->name_list()[0].language, "en");
103 EXPECT_EQ(provider->apn_list()[0]->name_list()[0].name, "Test Provider 1");
104 EXPECT_EQ(provider->apn_list()[0]->name_list()[1].language, "de");
105 EXPECT_EQ(provider->apn_list()[0]->name_list()[1].name,
106 "Testmobilfunkanbieter 1");
107
108 const CellularOperatorInfo::CellularOperator *provider2 =
109 info_.operators()[1];
110 EXPECT_TRUE(provider2->is_primary());
111 EXPECT_FALSE(provider2->requires_roaming());
112 EXPECT_EQ(provider2->country(), "us");
Arman Ugurayc9533572013-01-22 17:34:20 -0800113 EXPECT_EQ(provider2->identifier(), "provider2identifier");
Arman Ugurayf4c61812013-01-10 18:58:39 -0800114 EXPECT_EQ(provider2->name_list().size(), 2);
115 EXPECT_EQ(provider2->name_list()[0].language, "");
116 EXPECT_EQ(provider2->name_list()[0].name, "TestProviderTwo");
117 EXPECT_EQ(provider2->name_list()[1].language, "");
118 EXPECT_EQ(provider2->name_list()[1].name, "TestProvider2");
119 EXPECT_EQ(provider2->mccmnc_list().size(), 2);
120 EXPECT_EQ(provider2->mccmnc_list()[0], "100001");
121 EXPECT_EQ(provider2->mccmnc_list()[1], "100002");
122 EXPECT_EQ(provider2->sid_list().size(), 2);
123 EXPECT_EQ(provider2->sid_list()[0], "4");
124 EXPECT_EQ(provider2->sid_list()[1], "5");
125 EXPECT_EQ(provider2->olp_list().size(), 2);
126 EXPECT_EQ(provider2->olp_list()[0]->GetURL(), "https://testurl2");
127 EXPECT_EQ(provider2->olp_list()[0]->GetMethod(), "");
128 EXPECT_EQ(provider2->olp_list()[0]->GetPostData(), "");
129 EXPECT_EQ(provider2->olp_list()[1]->GetURL(), "https://testurl3");
130 EXPECT_EQ(provider2->olp_list()[1]->GetMethod(), "");
131 EXPECT_EQ(provider2->olp_list()[1]->GetPostData(), "");
132 EXPECT_EQ(provider2->apn_list().size(), 2);
133 EXPECT_EQ(provider2->apn_list()[0]->apn(), "testprovider2apn");
134 EXPECT_EQ(provider2->apn_list()[0]->username(), "");
135 EXPECT_EQ(provider2->apn_list()[0]->password(), "");
136 EXPECT_EQ(provider2->apn_list()[0]->name_list().size(), 1);
137 EXPECT_EQ(provider2->apn_list()[0]->name_list()[0].language, "");
138 EXPECT_EQ(provider2->apn_list()[0]->name_list()[0].name, "Test Provider 2");
139 EXPECT_EQ(provider2->apn_list()[1]->apn(), "testprovider2apn2");
140 EXPECT_EQ(provider2->apn_list()[1]->username(), "testusername");
141 EXPECT_EQ(provider2->apn_list()[1]->password(), "testpassword");
142 EXPECT_EQ(provider2->apn_list()[1]->name_list().size(), 1);
143 EXPECT_EQ(provider2->apn_list()[1]->name_list()[0].language, "tr");
144 EXPECT_EQ(provider2->apn_list()[1]->name_list()[0].name, "Test Operatoru 2");
145}
146
147TEST_F(CellularOperatorInfoTest, GetCellularOperatorByMCCMNC) {
Ben Chanb39cb312012-11-01 22:55:25 -0700148 EXPECT_TRUE(info_.Load(info_file_path_));
149
Arman Ugurayf4c61812013-01-10 18:58:39 -0800150 EXPECT_FALSE(info_.GetCellularOperatorByMCCMNC("1"));
151 EXPECT_FALSE(info_.GetCellularOperatorByMCCMNC("000003"));
152 EXPECT_FALSE(info_.GetCellularOperatorByMCCMNC("bananas"));
153 EXPECT_FALSE(info_.GetCellularOperatorByMCCMNC("abcd"));
Ben Chanb39cb312012-11-01 22:55:25 -0700154
Arman Ugurayf4c61812013-01-10 18:58:39 -0800155 const CellularOperatorInfo::CellularOperator *provider = NULL;
156 EXPECT_TRUE((provider = info_.GetCellularOperatorByMCCMNC("000001")));
157 EXPECT_EQ(provider, info_.operators()[0]);
158 EXPECT_TRUE((provider = info_.GetCellularOperatorByMCCMNC("100001")));
159 EXPECT_EQ(provider, info_.operators()[1]);
160 EXPECT_TRUE((provider = info_.GetCellularOperatorByMCCMNC("000002")));
161 EXPECT_EQ(provider, info_.operators()[0]);
162 EXPECT_TRUE((provider = info_.GetCellularOperatorByMCCMNC("100002")));
163 EXPECT_EQ(provider, info_.operators()[1]);
164}
Ben Chanb39cb312012-11-01 22:55:25 -0700165
Arman Ugurayf4c61812013-01-10 18:58:39 -0800166TEST_F(CellularOperatorInfoTest, GetCellularOperatorBySID) {
167 EXPECT_TRUE(info_.Load(info_file_path_));
168
169 EXPECT_FALSE(info_.GetCellularOperatorBySID("000001"));
170 EXPECT_FALSE(info_.GetCellularOperatorBySID("000002"));
171 EXPECT_FALSE(info_.GetCellularOperatorBySID("100001"));
172 EXPECT_FALSE(info_.GetCellularOperatorBySID("100002"));
173 EXPECT_FALSE(info_.GetCellularOperatorBySID("banana"));
174
175 const CellularOperatorInfo::CellularOperator *provider = NULL;
176 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("1")));
177 EXPECT_EQ(provider, info_.operators()[0]);
178 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("4")));
179 EXPECT_EQ(provider, info_.operators()[1]);
180 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("2")));
181 EXPECT_EQ(provider, info_.operators()[0]);
182 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("5")));
183 EXPECT_EQ(provider, info_.operators()[1]);
184 EXPECT_TRUE((provider = info_.GetCellularOperatorBySID("3")));
185 EXPECT_EQ(provider, info_.operators()[0]);
186}
187
188TEST_F(CellularOperatorInfoTest, GetCellularOperatorsByName) {
189 EXPECT_TRUE(info_.Load(info_file_path_));
190
191 const vector<const CellularOperatorInfo::CellularOperator *> *list = NULL;
192 EXPECT_FALSE(info_.GetCellularOperatorsByName("banana"));
193 EXPECT_FALSE(info_.GetCellularOperatorsByName("TestProvider2"));
194
195 EXPECT_TRUE((list = info_.GetCellularOperatorsByName("TestProvider1")));
196 EXPECT_EQ(list->size(), 1);
197 EXPECT_EQ((*list)[0]->apn_list()[0]->apn(), "testprovider1apn");
198
199 EXPECT_FALSE(info_.GetCellularOperatorsByName("TestProvider2"));
200
201 EXPECT_TRUE((list = info_.GetCellularOperatorsByName("TestProviderTwo")));
202 EXPECT_EQ(list->size(), 1);
203 EXPECT_EQ((*list)[0]->apn_list()[0]->apn(), "testprovider2apn");
204}
205
206TEST_F(CellularOperatorInfoTest, GetOLPByMCCMNC) {
207 EXPECT_TRUE(info_.Load(info_file_path_));
208
209 const CellularService::OLP *olp = NULL;
210 EXPECT_TRUE((olp = info_.GetOLPByMCCMNC("000001")));
211 EXPECT_EQ("https://testurl", olp->GetURL());
212 EXPECT_EQ("POST", olp->GetMethod());
213 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
214
215 EXPECT_TRUE((olp = info_.GetOLPByMCCMNC("000002")));
216 EXPECT_EQ("https://testurl", olp->GetURL());
217 EXPECT_EQ("POST", olp->GetMethod());
218 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
219
220 EXPECT_TRUE((olp = info_.GetOLPByMCCMNC("100001")));
221 EXPECT_EQ("https://testurl3", olp->GetURL());
222 EXPECT_EQ("", olp->GetMethod());
223 EXPECT_EQ("", olp->GetPostData());
224
225 EXPECT_TRUE((olp = info_.GetOLPByMCCMNC("100002")));
226 EXPECT_EQ("https://testurl2", olp->GetURL());
227 EXPECT_EQ("", olp->GetMethod());
228 EXPECT_EQ("", olp->GetPostData());
229
230 EXPECT_FALSE(info_.GetOLPByMCCMNC("000003"));
231 EXPECT_FALSE(info_.GetOLPByMCCMNC("000004"));
232}
233
234TEST_F(CellularOperatorInfoTest, GetOLPBySID) {
235 EXPECT_TRUE(info_.Load(info_file_path_));
236
237 const CellularService::OLP *olp = NULL;
238 EXPECT_TRUE((olp = info_.GetOLPBySID("1")));
239 EXPECT_EQ("https://testurl", olp->GetURL());
240 EXPECT_EQ("POST", olp->GetMethod());
241 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
242
243 EXPECT_TRUE((olp = info_.GetOLPBySID("2")));
244 EXPECT_EQ("https://testurl", olp->GetURL());
245 EXPECT_EQ("POST", olp->GetMethod());
246 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
247
248 EXPECT_TRUE((olp = info_.GetOLPBySID("3")));
249 EXPECT_EQ("https://testurl", olp->GetURL());
250 EXPECT_EQ("POST", olp->GetMethod());
251 EXPECT_EQ("imei=${imei}&iccid=${iccid}", olp->GetPostData());
252
253 EXPECT_TRUE((olp = info_.GetOLPBySID("4")));
254 EXPECT_EQ("https://testurl2", olp->GetURL());
255 EXPECT_EQ("", olp->GetMethod());
256 EXPECT_EQ("", olp->GetPostData());
257
258 EXPECT_TRUE((olp = info_.GetOLPBySID("5")));
259 EXPECT_EQ("https://testurl3", olp->GetURL());
260 EXPECT_EQ("", olp->GetMethod());
261 EXPECT_EQ("", olp->GetPostData());
262
263 EXPECT_FALSE(info_.GetOLPBySID("6"));
264 EXPECT_FALSE(info_.GetOLPBySID("7"));
265}
266
267TEST_F(CellularOperatorInfoTest, HandleProvider) {
268 CellularOperatorInfo::ParserState state;
269 EXPECT_FALSE(info_.HandleProvider(&state, "0,0,0"));
270 EXPECT_FALSE(state.provider);
271 EXPECT_EQ(info_.operators_.size(), 0);
272
273 EXPECT_TRUE(info_.HandleProvider(&state, "0,0,0,0"));
274 EXPECT_TRUE(state.provider);
275 EXPECT_EQ(info_.operators_.size(), 1);
276 EXPECT_FALSE(state.provider->is_primary());
277 EXPECT_FALSE(state.provider->requires_roaming());
278
279 EXPECT_TRUE(info_.HandleProvider(&state, "1,1,0,1"));
280 EXPECT_EQ(info_.operators_.size(), 2);
281 EXPECT_EQ(state.provider, info_.operators_[1]);
282 EXPECT_FALSE(state.provider->is_primary());
283 EXPECT_TRUE(state.provider->requires_roaming());
284}
285
286TEST_F(CellularOperatorInfoTest, HandleMCCMNC) {
287 CellularOperatorInfo::ParserState state;
288 EXPECT_FALSE(info_.HandleMCCMNC(&state, "1,1"));
289
290 EXPECT_TRUE(info_.HandleProvider(&state, "1,1,0,0"));
291 EXPECT_TRUE(state.provider);
292
293 EXPECT_FALSE(info_.HandleMCCMNC(&state, ""));
294 EXPECT_TRUE(state.provider->mccmnc_list().empty());
295 EXPECT_TRUE(info_.mccmnc_to_operator_.empty());
296
297 EXPECT_FALSE(info_.HandleMCCMNC(&state, "000001,0,000002"));
298 EXPECT_TRUE(state.provider->mccmnc_list().empty());
299 EXPECT_TRUE(info_.mccmnc_to_operator_.empty());
300
301 EXPECT_TRUE(info_.HandleMCCMNC(&state, "000001,0,000002,3"));
302 EXPECT_EQ(state.provider->mccmnc_list().size(), 2);
303 EXPECT_EQ(info_.mccmnc_to_operator_.size(), 2);
304 EXPECT_EQ(info_.mccmnc_to_operator_["000001"], state.provider);
305 EXPECT_EQ(info_.mccmnc_to_operator_["000002"], state.provider);
306 EXPECT_EQ(state.provider->mccmnc_list()[0], "000001");
307 EXPECT_EQ(state.provider->mccmnc_list()[1], "000002");
308 EXPECT_EQ(state.provider->mccmnc_to_olp_idx_.size(), 2);
309 EXPECT_EQ(state.provider->mccmnc_to_olp_idx_["000001"], 0);
310 EXPECT_EQ(state.provider->mccmnc_to_olp_idx_["000002"], 3);
311}
312
313TEST_F(CellularOperatorInfoTest, HandleName) {
314 CellularOperatorInfo::ParserState state;
315 EXPECT_FALSE(info_.HandleName(&state, ","));
316
317 EXPECT_TRUE(info_.HandleProvider(&state, "1,1,0,0"));
318 EXPECT_TRUE(state.provider);
319 EXPECT_TRUE(state.provider->name_list().empty());
320
321 EXPECT_FALSE(info_.HandleName(&state, ",,"));
322 EXPECT_TRUE(state.provider->name_list().empty());
323
324 EXPECT_TRUE(info_.HandleName(&state, "en,Test Name"));
325 EXPECT_EQ(state.provider->name_list().size(), 1);
326
327 const CellularOperatorInfo::LocalizedName &name =
328 state.provider->name_list()[0];
329 EXPECT_EQ(name.language, "en");
330 EXPECT_EQ(name.name, "Test Name");
331
332 EXPECT_TRUE(info_.HandleName(&state, ",Other Test Name"));
333 EXPECT_EQ(state.provider->name_list().size(), 2);
334
335 const CellularOperatorInfo::LocalizedName &name2 =
336 state.provider->name_list()[1];
337 EXPECT_EQ(name2.language, "");
338 EXPECT_EQ(name2.name, "Other Test Name");
339}
340
341TEST_F(CellularOperatorInfoTest, HandleAPN) {
342 CellularOperatorInfo::ParserState state;
343 EXPECT_FALSE(info_.HandleAPN(&state, ",,,"));
344
345 EXPECT_TRUE(info_.HandleProvider(&state, "1,1,0,0"));
346 EXPECT_TRUE(state.provider);
347 EXPECT_TRUE(state.provider->apn_list().empty());
348
349 EXPECT_FALSE(info_.HandleAPN(&state, ","));
350 EXPECT_TRUE(state.provider->apn_list().empty());
351
352 EXPECT_FALSE(state.parsing_apn);
353
354 EXPECT_TRUE(info_.HandleAPN(&state, "0,testapn,testusername,testpassword"));
355 EXPECT_EQ(state.provider->apn_list().size(), 1);
356 EXPECT_TRUE(state.parsing_apn);
357
358 const CellularOperatorInfo::MobileAPN *apn = state.provider->apn_list()[0];
359 EXPECT_EQ(apn->apn(), "testapn");
360 EXPECT_EQ(apn->username(), "testusername");
361 EXPECT_EQ(apn->password(), "testpassword");
362}
363
364TEST_F(CellularOperatorInfoTest, HandleAPNName) {
365 CellularOperatorInfo::ParserState state;
366 EXPECT_FALSE(info_.HandleAPNName(&state, ","));
367 state.parsing_apn = true;
368 EXPECT_FALSE(info_.HandleAPNName(&state, ","));
369 state.parsing_apn = false;
370 state.apn = (CellularOperatorInfo::MobileAPN *)1;
371 EXPECT_FALSE(info_.HandleAPNName(&state, ","));
372
373 EXPECT_TRUE(info_.HandleProvider(&state, "1,1,0,0"));
374 EXPECT_TRUE(state.provider);
375 EXPECT_TRUE(info_.HandleAPN(&state, ",,,"));
376 EXPECT_TRUE(state.parsing_apn && state.apn);
377
378 const CellularOperatorInfo::MobileAPN *apn = state.provider->apn_list()[0];
379
380 EXPECT_FALSE(info_.HandleAPNName(&state, ",,"));
381 EXPECT_EQ(apn->name_list().size(), 0);
382
383 EXPECT_TRUE(info_.HandleAPNName(&state, "en,APN Name"));
384 EXPECT_EQ(apn->name_list().size(), 1);
385
386 const CellularOperatorInfo::LocalizedName &name = apn->name_list()[0];
387 EXPECT_EQ(name.language, "en");
388 EXPECT_EQ(name.name, "APN Name");
389
390 EXPECT_TRUE(info_.HandleAPNName(&state, ",Other APN Name"));
391 EXPECT_EQ(apn->name_list().size(), 2);
392
393 const CellularOperatorInfo::LocalizedName &name2 = apn->name_list()[1];
394 EXPECT_EQ(name2.language, "");
395 EXPECT_EQ(name2.name, "Other APN Name");
396}
397
398TEST_F(CellularOperatorInfoTest, HandleSID) {
399 CellularOperatorInfo::ParserState state;
400 EXPECT_FALSE(info_.HandleSID(&state, "1,0"));
401
402 EXPECT_TRUE(info_.HandleProvider(&state, "1,1,0,0"));
403 EXPECT_TRUE(state.provider);
404
405 EXPECT_FALSE(info_.HandleSID(&state, ""));
406 EXPECT_TRUE(state.provider->sid_list().empty());
407 EXPECT_TRUE(info_.sid_to_operator_.empty());
408
409 EXPECT_FALSE(info_.HandleSID(&state, "1,2,3"));
410 EXPECT_TRUE(state.provider->sid_list().empty());
411 EXPECT_TRUE(info_.sid_to_operator_.empty());
412
413 EXPECT_TRUE(info_.HandleSID(&state, "1,5,2,3,3,0"));
414 EXPECT_EQ(state.provider->sid_list().size(), 3);
415 EXPECT_EQ(info_.sid_to_operator_.size(), 3);
416 EXPECT_EQ(info_.sid_to_operator_["1"], state.provider);
417 EXPECT_EQ(info_.sid_to_operator_["2"], state.provider);
418 EXPECT_EQ(info_.sid_to_operator_["3"], state.provider);
419 EXPECT_EQ(state.provider->sid_list()[0], "1");
420 EXPECT_EQ(state.provider->sid_list()[1], "2");
421 EXPECT_EQ(state.provider->sid_list()[2], "3");
422 EXPECT_EQ(state.provider->sid_to_olp_idx_.size(), 3);
423 EXPECT_EQ(state.provider->sid_to_olp_idx_["1"], 5);
424 EXPECT_EQ(state.provider->sid_to_olp_idx_["2"], 3);
425 EXPECT_EQ(state.provider->sid_to_olp_idx_["3"], 0);
426}
427
Arman Ugurayc9533572013-01-22 17:34:20 -0800428TEST_F(CellularOperatorInfoTest, HandleIdentifier) {
429 CellularOperatorInfo::ParserState state;
430 EXPECT_FALSE(info_.HandleIdentifier(&state, "testidentifier"));
431
432 EXPECT_TRUE(info_.HandleProvider(&state, "1,1,0,0"));
433 EXPECT_TRUE(state.provider);
434 EXPECT_EQ("", state.provider->identifier());
435
436 EXPECT_TRUE(info_.HandleIdentifier(&state, "testidentifier0"));
437 EXPECT_EQ("testidentifier0", state.provider->identifier());
438 EXPECT_TRUE(info_.HandleIdentifier(&state, "testidentifier1"));
439 EXPECT_EQ("testidentifier1", state.provider->identifier());
440 EXPECT_TRUE(info_.HandleIdentifier(&state, "testidentifier2"));
441 EXPECT_EQ("testidentifier2", state.provider->identifier());
442}
443
Arman Ugurayf4c61812013-01-10 18:58:39 -0800444TEST_F(CellularOperatorInfoTest, HandleOLP) {
445 CellularOperatorInfo::ParserState state;
446 EXPECT_FALSE(info_.HandleOLP(&state, ",,"));
447
448 EXPECT_TRUE(info_.HandleProvider(&state, "1,1,0,0"));
449 EXPECT_TRUE(state.provider);
450 EXPECT_EQ(0, state.provider->olp_list().size());
451
452 EXPECT_FALSE(info_.HandleOLP(&state, ","));
453 EXPECT_EQ(0, state.provider->olp_list().size());
454
455 EXPECT_TRUE(info_.HandleOLP(&state, ",,"));
456 EXPECT_EQ(1, state.provider->olp_list().size());
457 EXPECT_EQ(state.provider->olp_list()[0]->GetURL(), "");
458 EXPECT_EQ(state.provider->olp_list()[0]->GetMethod(), "");
459 EXPECT_EQ(state.provider->olp_list()[0]->GetPostData(), "");
460
461 EXPECT_TRUE(info_.HandleOLP(&state, "a,b,c"));
462 EXPECT_EQ(2, state.provider->olp_list().size());
463 EXPECT_EQ(state.provider->olp_list()[0]->GetURL(), "");
464 EXPECT_EQ(state.provider->olp_list()[0]->GetMethod(), "");
465 EXPECT_EQ(state.provider->olp_list()[0]->GetPostData(), "");
466 EXPECT_EQ(state.provider->olp_list()[1]->GetMethod(), "a");
467 EXPECT_EQ(state.provider->olp_list()[1]->GetURL(), "b");
468 EXPECT_EQ(state.provider->olp_list()[1]->GetPostData(), "c");
469}
470
471TEST_F(CellularOperatorInfoTest, ParseNameLine) {
472 CellularOperatorInfo::LocalizedName name;
473 EXPECT_FALSE(info_.ParseNameLine(",,", &name));
474 EXPECT_FALSE(info_.ParseNameLine("", &name));
475 EXPECT_TRUE(info_.ParseNameLine("a,b", &name));
476 EXPECT_EQ(name.language, "a");
477 EXPECT_EQ(name.name, "b");
478}
479
480TEST_F(CellularOperatorInfoTest, ParseKeyValue) {
481 string line = "key:value";
482 string key, value;
483 EXPECT_TRUE(CellularOperatorInfo::ParseKeyValue(line, ':', &key, &value));
484 EXPECT_EQ("key", key);
485 EXPECT_EQ("value", value);
486
487 line = "key:::::";
488 EXPECT_TRUE(CellularOperatorInfo::ParseKeyValue(line, ':', &key, &value));
489 EXPECT_EQ("key", key);
490 EXPECT_EQ("::::", value);
491
492 line = ":";
493 EXPECT_TRUE(CellularOperatorInfo::ParseKeyValue(line, ':', &key, &value));
494 EXPECT_EQ("", key);
495 EXPECT_EQ("", value);
496
497 line = ":value";
498 EXPECT_TRUE(CellularOperatorInfo::ParseKeyValue(line, ':', &key, &value));
499 EXPECT_EQ("", key);
500 EXPECT_EQ("value", value);
501
502 line = "";
503 EXPECT_FALSE(CellularOperatorInfo::ParseKeyValue(line, ':', &key, &value));
Ben Chanb39cb312012-11-01 22:55:25 -0700504}
505
506} // namespace shill