1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/mobileconnection/tests/marionette/test_mobile_voice_state.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,139 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +MARIONETTE_TIMEOUT = 60000; 1.8 +MARIONETTE_HEAD_JS = "head.js"; 1.9 + 1.10 +const INITIAL_STATES = { 1.11 + state: "registered", 1.12 + connected: true, 1.13 + emergencyCallsOnly: false, 1.14 + roaming: false, 1.15 + signalStrength: -99, 1.16 + relSignalStrength: 44, 1.17 + 1.18 + cell: { 1.19 + gsmLocationAreaCode: 65535, 1.20 + gsmCellId: 268435455, 1.21 + cdmaBaseStationId: -1, 1.22 + cdmaBaseStationLatitude: -2147483648, 1.23 + cdmaBaseStationLongitude: -2147483648, 1.24 + cdmaSystemId: -1, 1.25 + cdmaNetworkId: -1, 1.26 + } 1.27 +}; 1.28 + 1.29 +const TEST_DATA = [{ 1.30 + // Test state becomes to "unregistered" 1.31 + state: "unregistered", 1.32 + expected: { 1.33 + state: "notSearching", 1.34 + connected: false, 1.35 + emergencyCallsOnly: true, 1.36 + roaming: false, 1.37 + signalStrength: null, 1.38 + relSignalStrength: null, 1.39 + cell: null 1.40 + } 1.41 + }, { 1.42 + // Test state becomes to "searching" 1.43 + state: "searching", 1.44 + expected: { 1.45 + state: "searching", 1.46 + connected: false, 1.47 + emergencyCallsOnly: true, 1.48 + roaming: false, 1.49 + signalStrength: null, 1.50 + relSignalStrength: null, 1.51 + cell: null 1.52 + } 1.53 + }, { 1.54 + // Test state becomes to "denied" 1.55 + state: "denied", 1.56 + expected: { 1.57 + state: "denied", 1.58 + connected: false, 1.59 + emergencyCallsOnly: true, 1.60 + roaming: false, 1.61 + signalStrength: null, 1.62 + relSignalStrength: null, 1.63 + cell: null 1.64 + } 1.65 + }, { 1.66 + // Test state becomes to "roaming" 1.67 + state: "roaming", 1.68 + expected: { 1.69 + state: "registered", 1.70 + connected: true, 1.71 + emergencyCallsOnly: false, 1.72 + roaming: true, 1.73 + signalStrength: -99, 1.74 + relSignalStrength: 44, 1.75 + cell: { 1.76 + gsmLocationAreaCode: 65535, 1.77 + gsmCellId: 268435455 1.78 + } 1.79 + } 1.80 + }, { 1.81 + // Reset state to default value. 1.82 + state: "home", 1.83 + expected: { 1.84 + state: "registered", 1.85 + connected: true, 1.86 + emergencyCallsOnly: false, 1.87 + roaming: false, 1.88 + signalStrength: -99, 1.89 + relSignalStrength: 44, 1.90 + cell: { 1.91 + gsmLocationAreaCode: 65535, 1.92 + gsmCellId: 268435455 1.93 + } 1.94 + } 1.95 + } 1.96 +]; 1.97 + 1.98 +function compareTo(aPrefix, aFrom, aTo) { 1.99 + for (let field in aTo) { 1.100 + let fullName = aPrefix + field; 1.101 + 1.102 + let lhs = aFrom[field]; 1.103 + let rhs = aTo[field]; 1.104 + ok(true, "lhs=" + JSON.stringify(lhs) + ", rhs=" + JSON.stringify(rhs)); 1.105 + if (typeof rhs !== "object") { 1.106 + is(lhs, rhs, fullName); 1.107 + } else if (rhs) { 1.108 + ok(lhs, fullName); 1.109 + compareTo(fullName + ".", lhs, rhs); 1.110 + } else { 1.111 + is(lhs, null, fullName); 1.112 + } 1.113 + } 1.114 +} 1.115 + 1.116 +function verifyVoiceInfo(aExpected) { 1.117 + compareTo("voice.", mobileConnection.voice, aExpected); 1.118 +} 1.119 + 1.120 +/* Test Voice State Changed */ 1.121 +function testVoiceStateUpdate(aNewState, aExpected) { 1.122 + log("Test voice info with state='" + aNewState + "'"); 1.123 + 1.124 + // Set emulator's lac/cid and wait for 'onvoicechange' event. 1.125 + return setEmulatorVoiceDataStateAndWait("voice", aNewState) 1.126 + .then(() => verifyVoiceInfo(aExpected)); 1.127 +} 1.128 + 1.129 +startTestCommon(function() { 1.130 + log("Test initial voice connection info"); 1.131 + 1.132 + verifyVoiceInfo(INITIAL_STATES); 1.133 + 1.134 + let promise = Promise.resolve(); 1.135 + for (let i = 0; i < TEST_DATA.length; i++) { 1.136 + let entry = TEST_DATA[i]; 1.137 + promise = 1.138 + promise.then(testVoiceStateUpdate.bind(null, entry.state, entry.expected)); 1.139 + } 1.140 + 1.141 + return promise; 1.142 +});