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