dom/mobileconnection/tests/marionette/test_mobile_data_state.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:6845299e7909
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 MARIONETTE_TIMEOUT = 60000;
5 MARIONETTE_HEAD_JS = "head.js";
6
7 const INITIAL_STATES = {
8 state: "registered",
9 connected: false,
10 emergencyCallsOnly: false,
11 roaming: false,
12 signalStrength: -99,
13 relSignalStrength: 44,
14
15 cell: {
16 gsmLocationAreaCode: 65535,
17 gsmCellId: 268435455,
18 cdmaBaseStationId: -1,
19 cdmaBaseStationLatitude: -2147483648,
20 cdmaBaseStationLongitude: -2147483648,
21 cdmaSystemId: -1,
22 cdmaNetworkId: -1,
23 }
24 };
25
26 const TEST_DATA = [{
27 // Test state becomes to "unregistered"
28 state: "unregistered",
29 expected: {
30 state: "notSearching",
31 connected: false,
32 emergencyCallsOnly: true,
33 roaming: false,
34 signalStrength: null,
35 relSignalStrength: null,
36 cell: null
37 }
38 }, {
39 // Test state becomes to "searching"
40 state: "searching",
41 expected: {
42 state: "searching",
43 connected: false,
44 emergencyCallsOnly: true,
45 roaming: false,
46 signalStrength: null,
47 relSignalStrength: null,
48 cell: null
49 }
50 }, {
51 // Test state becomes to "denied"
52 state: "denied",
53 expected: {
54 state: "denied",
55 connected: false,
56 emergencyCallsOnly: true,
57 roaming: false,
58 signalStrength: null,
59 relSignalStrength: null,
60 cell: null
61 }
62 }, {
63 // Test state becomes to "roaming"
64 // Set emulator's data state to "roaming" won't change the operator's
65 // long_name/short_name/mcc/mnc, so that the |data.roaming| will still
66 // report false. Please see bug 787967.
67 state: "roaming",
68 expected: {
69 state: "registered",
70 connected: false,
71 emergencyCallsOnly: false,
72 roaming: false,
73 signalStrength: -99,
74 relSignalStrength: 44,
75 cell: {
76 gsmLocationAreaCode: 65535,
77 gsmCellId: 268435455
78 }
79 }
80 }, {
81 // Reset state to default value.
82 state: "home",
83 expected: {
84 state: "registered",
85 connected: false,
86 emergencyCallsOnly: false,
87 roaming: false,
88 signalStrength: -99,
89 relSignalStrength: 44,
90 cell: {
91 gsmLocationAreaCode: 65535,
92 gsmCellId: 268435455
93 }
94 }
95 }
96 ];
97
98 function compareTo(aPrefix, aFrom, aTo) {
99 for (let field in aTo) {
100 let fullName = aPrefix + field;
101
102 let lhs = aFrom[field];
103 let rhs = aTo[field];
104 ok(true, "lhs=" + JSON.stringify(lhs) + ", rhs=" + JSON.stringify(rhs));
105 if (typeof rhs !== "object") {
106 is(lhs, rhs, fullName);
107 } else if (rhs) {
108 ok(lhs, fullName);
109 compareTo(fullName + ".", lhs, rhs);
110 } else {
111 is(lhs, null, fullName);
112 }
113 }
114 }
115
116 function verifyDataInfo(aExpected) {
117 compareTo("data.", mobileConnection.data, aExpected);
118 }
119
120 /* Test Data State Changed */
121 function testDataStateUpdate(aNewState, aExpected) {
122 log("Test data info with state='" + aNewState + "'");
123
124 // Set emulator's lac/cid and wait for 'ondatachange' event.
125 return setEmulatorVoiceDataStateAndWait("data", aNewState)
126 .then(() => verifyDataInfo(aExpected));
127 }
128
129 startTestCommon(function() {
130 log("Test initial data connection info");
131
132 verifyDataInfo(INITIAL_STATES);
133
134 let promise = Promise.resolve();
135 for (let i = 0; i < TEST_DATA.length; i++) {
136 let entry = TEST_DATA[i];
137 promise =
138 promise.then(testDataStateUpdate.bind(null, entry.state, entry.expected));
139 }
140
141 return promise;
142 });

mercurial