From 46b2cf4f52bd4c9d19955ad7ca71858f030f94d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez?= Date: Wed, 7 Nov 2012 14:13:53 -0800 Subject: [PATCH] Bug 793192 - MMI Codes: support call forwarding. Part 3 - Tests; r=marshall_law --- dom/system/gonk/tests/test_ril_worker_mmi.js | 265 ++++++++++++++----- 1 file changed, 192 insertions(+), 73 deletions(-) diff --git a/dom/system/gonk/tests/test_ril_worker_mmi.js b/dom/system/gonk/tests/test_ril_worker_mmi.js index 420f4680343..50c8bdddcb4 100644 --- a/dom/system/gonk/tests/test_ril_worker_mmi.js +++ b/dom/system/gonk/tests/test_ril_worker_mmi.js @@ -19,17 +19,36 @@ function parseMMI(mmi) { return worker.RIL._parseMMI(mmi); } -function testSendMMI(mmi, error) { - let postedMessage; - let worker = newWorker({ +function getWorker() { + let _postedMessage; + let _worker = newWorker({ postRILMessage: function fakePostRILMessage(data) { }, postMessage: function fakePostMessage(message) { - postedMessage = message; + _postedMessage = message; + }, + }); + + return { + get postedMessage() { + return _postedMessage; + }, + get worker() { + return _worker; } - }) + }; +} + +function testSendMMI(mmi, error) { + let workerhelper = getWorker(); + let worker = workerhelper.worker; + + do_print("worker.postMessage " + worker.postMessage); + worker.RIL.sendMMI({mmi: mmi}); + let postedMessage = workerhelper.postedMessage; + do_check_eq(postedMessage.rilMessageType, "sendMMI"); do_check_eq(postedMessage.errorMsg, error); } @@ -309,24 +328,150 @@ add_test(function test_sendMMI_dial_string() { run_next_test(); }); -add_test(function test_sendMMI_call_forwarding() { - // TODO: Bug 793192 - MMI Codes: support call forwarding - testSendMMI("*21#", "CALL_FORWARDING_NOT_SUPPORTED_VIA_MMI"); +function setCallForwardSuccess(mmi) { + let workerhelper = getWorker(); + let worker = workerhelper.worker; + + worker.RIL.setCallForward = function fakeSetCallForward(options) { + worker.RIL[REQUEST_SET_CALL_FORWARD](0, { + rilRequestError: ERROR_SUCCESS + }); + }; + + worker.RIL.sendMMI({mmi: mmi}); + + let postedMessage = workerhelper.postedMessage; + + do_check_eq(postedMessage.errorMsg, GECKO_ERROR_SUCCESS); + do_check_true(postedMessage.success); +} + +add_test(function test_sendMMI_call_forwarding_activation() { + setCallForwardSuccess("*21*12345*99*10#"); + + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_deactivation() { + setCallForwardSuccess("#21*12345*99*10#"); + + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_interrogation() { + let workerhelper = getWorker(); + let worker = workerhelper.worker; + + worker.Buf.readUint32 = function fakeReadUint32() { + return worker.Buf.int32Array.pop(); + }; + + worker.Buf.readString = function fakeReadString() { + return "+34666222333"; + }; + + worker.RIL.queryCallForwardStatus = function fakeQueryCallForward(options) { + worker.Buf.int32Array = [ + 0, // rules.timeSeconds + 145, // rules.toa + 49, // rules.serviceClass + Ci.nsIDOMMozMobileCFInfo.CALL_FORWARD_REASON_UNCONDITIONAL, // rules.reason + 1, // rules.active + 1 // rulesLength + ]; + worker.RIL[REQUEST_QUERY_CALL_FORWARD_STATUS](1, { + rilRequestError: ERROR_SUCCESS + }); + }; + + worker.RIL.sendMMI({mmi: "*#21#"}); + + let postedMessage = workerhelper.postedMessage; + + do_check_eq(postedMessage.errorMsg, GECKO_ERROR_SUCCESS); + do_check_true(postedMessage.success); + do_check_true(Array.isArray(postedMessage.rules)); + do_check_eq(postedMessage.rules.length, 1); + do_check_true(postedMessage.rules[0].active); + do_check_eq(postedMessage.rules[0].reason, + Ci.nsIDOMMozMobileCFInfo.CALL_FORWARD_REASON_UNCONDITIONAL); + do_check_eq(postedMessage.rules[0].number, "+34666222333"); + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_interrogation_no_rules() { + let workerhelper = getWorker(); + let worker = workerhelper.worker; + + worker.Buf.readUint32 = function fakeReadUint32() { + return 0; + }; + + worker.RIL.queryCallForwardStatus = function fakeQueryCallForward(options) { + worker.RIL[REQUEST_QUERY_CALL_FORWARD_STATUS](1, { + rilRequestError: ERROR_SUCCESS + }); + }; + + worker.RIL.sendMMI({mmi: "*#21#"}); + + let postedMessage = workerhelper.postedMessage; + + do_check_eq(postedMessage.errorMsg, + "Invalid rule length while querying call forwarding status."); + do_check_false(postedMessage.success); + + run_next_test(); +}); + + +add_test(function test_sendMMI_call_forwarding_registration() { + setCallForwardSuccess("**21*12345*99*10#"); + + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_erasure() { + setCallForwardSuccess("##21*12345*99#"); + + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_CFB() { + setCallForwardSuccess("*67*12345*99*10#"); + + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_CFNRy() { + setCallForwardSuccess("*61*12345*99*10#"); + + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_CFNRc() { + setCallForwardSuccess("*62*12345*99*10#"); + + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_CFAll() { + setCallForwardSuccess("*004*12345*99*10#"); + + run_next_test(); +}); + +add_test(function test_sendMMI_call_forwarding_CFAllConditional() { + setCallForwardSuccess("*002*12345*99*10#"); run_next_test(); }); add_test(function test_sendMMI_change_PIN() { - let postedMessage; - let worker = newWorker({ - postRILMessage: function fakePostRILMessage(data) { - }, - postMessage: function fakePostMessage(message) { - postedMessage = message; - }, - }); + let workerhelper = getWorker(); + let worker = workerhelper.worker; - worker.RIL.changeICCPIN = function fakeChangeICCPIN(options){ + worker.RIL.changeICCPIN = function fakeChangeICCPIN(options) { worker.RIL[REQUEST_ENTER_SIM_PIN](0, { rilRequestError: ERROR_SUCCESS }); @@ -334,6 +479,8 @@ add_test(function test_sendMMI_change_PIN() { worker.RIL.sendMMI({mmi: "**04*1234*4567*4567#"}); + let postedMessage = workerhelper.postedMessage; + do_check_eq (postedMessage.errorMsg, GECKO_ERROR_SUCCESS); do_check_true(postedMessage.success); @@ -365,14 +512,8 @@ add_test(function test_sendMMI_change_PIN_new_PIN_mismatch() { }); add_test(function test_sendMMI_change_PIN2() { - let postedMessage; - let worker = newWorker({ - postRILMessage: function fakePostRILMessage(data) { - }, - postMessage: function fakePostMessage(message) { - postedMessage = message; - }, - }); + let workerhelper = getWorker(); + let worker = workerhelper.worker; worker.RIL.changeICCPIN2 = function fakeChangeICCPIN2(options){ worker.RIL[REQUEST_ENTER_SIM_PIN2](0, { @@ -382,6 +523,8 @@ add_test(function test_sendMMI_change_PIN2() { worker.RIL.sendMMI({mmi: "**042*1234*4567*4567#"}); + let postedMessage = workerhelper.postedMessage; + do_check_eq (postedMessage.errorMsg, GECKO_ERROR_SUCCESS); do_check_true(postedMessage.success); @@ -413,14 +556,8 @@ add_test(function test_sendMMI_change_PIN2_new_PIN2_mismatch() { }); add_test(function test_sendMMI_unblock_PIN() { - let postedMessage; - let worker = newWorker({ - postRILMessage: function fakePostRILMessage(data) { - }, - postMessage: function fakePostMessage(message) { - postedMessage = message; - }, - }); + let workerhelper = getWorker(); + let worker = workerhelper.worker; worker.RIL.enterICCPUK = function fakeEnterICCPUK(options){ worker.RIL[REQUEST_ENTER_SIM_PUK](0, { @@ -430,6 +567,8 @@ add_test(function test_sendMMI_unblock_PIN() { worker.RIL.sendMMI({mmi: "**05*1234*4567*4567#"}); + let postedMessage = workerhelper.postedMessage; + do_check_eq (postedMessage.errorMsg, GECKO_ERROR_SUCCESS); do_check_true(postedMessage.success); @@ -461,14 +600,8 @@ add_test(function test_sendMMI_unblock_PIN_new_PIN_mismatch() { }); add_test(function test_sendMMI_unblock_PIN2() { - let postedMessage; - let worker = newWorker({ - postRILMessage: function fakePostRILMessage(data) { - }, - postMessage: function fakePostMessage(message) { - postedMessage = message; - }, - }); + let workerhelper = getWorker(); + let worker = workerhelper.worker; worker.RIL.enterICCPUK2 = function fakeEnterICCPUK2(options){ worker.RIL[REQUEST_ENTER_SIM_PUK2](0, { @@ -478,6 +611,8 @@ add_test(function test_sendMMI_unblock_PIN2() { worker.RIL.sendMMI({mmi: "**052*1234*4567*4567#"}); + let postedMessage = workerhelper.postedMessage; + do_check_eq (postedMessage.errorMsg, GECKO_ERROR_SUCCESS); do_check_true(postedMessage.success); @@ -509,15 +644,9 @@ add_test(function test_sendMMI_unblock_PIN2_new_PIN_mismatch() { }); add_test(function test_sendMMI_get_IMEI() { - let postedMessage; + let workerhelper = getWorker(); + let worker = workerhelper.worker; let mmiOptions; - let worker = newWorker({ - postRILMessage: function fakePostRILMessage(data) { - }, - postMessage: function fakePostMessage(message) { - postedMessage = message; - }, - }); worker.RIL.getIMEI = function getIMEI(options){ mmiOptions = options; @@ -528,6 +657,8 @@ add_test(function test_sendMMI_get_IMEI() { worker.RIL.sendMMI({mmi: "*#06#"}); + let postedMessage = workerhelper.postedMessage; + do_check_true(mmiOptions.mmi); do_check_eq (postedMessage.errorMsg, GECKO_ERROR_SUCCESS); do_check_true(postedMessage.success); @@ -536,15 +667,9 @@ add_test(function test_sendMMI_get_IMEI() { }); add_test(function test_sendMMI_get_IMEI_error() { - let postedMessage; + let workerhelper = getWorker(); + let worker = workerhelper.worker; let mmiOptions; - let worker = newWorker({ - postRILMessage: function fakePostRILMessage(data) { - }, - postMessage: function fakePostMessage(message) { - postedMessage = message; - }, - }); worker.RIL.getIMEI = function getIMEI(options){ mmiOptions = options; @@ -555,6 +680,8 @@ add_test(function test_sendMMI_get_IMEI_error() { worker.RIL.sendMMI({mmi: "*#06#"}); + let postedMessage = workerhelper.postedMessage; + do_check_true(mmiOptions.mmi); do_check_eq (postedMessage.errorMsg, GECKO_ERROR_RADIO_NOT_AVAILABLE); do_check_false(postedMessage.success); @@ -575,15 +702,9 @@ add_test(function test_sendMMI_call_waiting() { }); add_test(function test_sendMMI_USSD() { - let postedMessage; + let workerhelper = getWorker(); + let worker = workerhelper.worker; let ussdOptions; - let worker = newWorker({ - postRILMessage: function fakePostRILMessage(data) { - }, - postMessage: function fakePostMessage(message) { - postedMessage = message; - }, - }); worker.RIL.sendUSSD = function fakeSendUSSD(options){ ussdOptions = options; @@ -594,6 +715,8 @@ add_test(function test_sendMMI_USSD() { worker.RIL.sendMMI({mmi: "*123#"}); + let postedMessage = workerhelper.postedMessage; + do_check_eq(ussdOptions.ussd, "*123#"); do_check_eq (postedMessage.errorMsg, GECKO_ERROR_SUCCESS); do_check_true(postedMessage.success); @@ -603,15 +726,9 @@ add_test(function test_sendMMI_USSD() { }); add_test(function test_sendMMI_USSD_error() { - let postedMessage; + let workerhelper = getWorker(); + let worker = workerhelper.worker; let ussdOptions; - let worker = newWorker({ - postRILMessage: function fakePostRILMessage(data) { - }, - postMessage: function fakePostMessage(message) { - postedMessage = message; - }, - }); worker.RIL.sendUSSD = function fakeSendUSSD(options){ ussdOptions = options; @@ -622,6 +739,8 @@ add_test(function test_sendMMI_USSD_error() { worker.RIL.sendMMI({mmi: "*123#"}); + let postedMessage = workerhelper.postedMessage; + do_check_eq(ussdOptions.ussd, "*123#"); do_check_eq (postedMessage.errorMsg, GECKO_ERROR_GENERIC_FAILURE); do_check_false(postedMessage.success);