michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this); michael@0: michael@0: // Calling line identification restriction constants. michael@0: michael@0: // Uses subscription default value. michael@0: const CLIR_DEFAULT = 0; michael@0: // Restricts CLI presentation. michael@0: const CLIR_INVOCATION = 1; michael@0: // Allows CLI presentation. michael@0: const CLIR_SUPPRESSION = 2; michael@0: michael@0: function run_test() { michael@0: run_next_test(); michael@0: } michael@0: michael@0: function _getWorker() { michael@0: let _postedMessage; michael@0: let _worker = newWorker({ michael@0: postRILMessage: function(data) { michael@0: }, michael@0: postMessage: function(message) { michael@0: _postedMessage = message; michael@0: } michael@0: }); michael@0: return { michael@0: get postedMessage() { michael@0: return _postedMessage; michael@0: }, michael@0: get worker() { michael@0: return _worker; michael@0: } michael@0: }; michael@0: } michael@0: michael@0: add_test(function test_setCLIR_success() { michael@0: let workerHelper = _getWorker(); michael@0: let worker = workerHelper.worker; michael@0: let context = worker.ContextPool._contexts[0]; michael@0: michael@0: context.RIL.setCLIR = function fakeSetCLIR(options) { michael@0: context.RIL[REQUEST_SET_CLIR](0, { michael@0: rilMessageType: "setCLIR", michael@0: rilRequestError: ERROR_SUCCESS michael@0: }); michael@0: }; michael@0: michael@0: context.RIL.setCLIR({ michael@0: clirMode: CLIR_DEFAULT michael@0: }); michael@0: michael@0: let postedMessage = workerHelper.postedMessage; michael@0: michael@0: do_check_eq(postedMessage.errorMsg, undefined); michael@0: do_check_true(postedMessage.success); michael@0: michael@0: run_next_test(); michael@0: }); michael@0: michael@0: add_test(function test_setCLIR_generic_failure() { michael@0: let workerHelper = _getWorker(); michael@0: let worker = workerHelper.worker; michael@0: let context = worker.ContextPool._contexts[0]; michael@0: michael@0: context.RIL.setCLIR = function fakeSetCLIR(options) { michael@0: context.RIL[REQUEST_SET_CLIR](0, { michael@0: rilMessageType: "setCLIR", michael@0: rilRequestError: ERROR_GENERIC_FAILURE michael@0: }); michael@0: }; michael@0: michael@0: context.RIL.setCLIR({ michael@0: clirMode: CLIR_DEFAULT michael@0: }); michael@0: michael@0: let postedMessage = workerHelper.postedMessage; michael@0: michael@0: do_check_eq(postedMessage.errorMsg, "GenericFailure"); michael@0: do_check_false(postedMessage.success); michael@0: michael@0: run_next_test(); michael@0: }); michael@0: michael@0: add_test(function test_getCLIR_n0_m1() { michael@0: let workerHelper = _getWorker(); michael@0: let worker = workerHelper.worker; michael@0: let context = worker.ContextPool._contexts[0]; michael@0: michael@0: context.Buf.readInt32 = function fakeReadUint32() { michael@0: return context.Buf.int32Array.pop(); michael@0: }; michael@0: michael@0: context.RIL.getCLIR = function fakeGetCLIR(options) { michael@0: context.Buf.int32Array = [ michael@0: 1, // Presentation indicator is used according to the subscription michael@0: // of the CLIR service. michael@0: 0, // CLIR provisioned in permanent mode. michael@0: 2 // Length. michael@0: ]; michael@0: context.RIL[REQUEST_GET_CLIR](1, { michael@0: rilMessageType: "setCLIR", michael@0: rilRequestError: ERROR_SUCCESS michael@0: }); michael@0: }; michael@0: michael@0: context.RIL.getCLIR({}); michael@0: michael@0: let postedMessage = workerHelper.postedMessage; michael@0: michael@0: do_check_eq(postedMessage.errorMsg, undefined); michael@0: do_check_true(postedMessage.success); michael@0: do_check_eq(postedMessage.n, 0); michael@0: do_check_eq(postedMessage.m, 1); michael@0: run_next_test(); michael@0: }); michael@0: michael@0: add_test(function test_getCLIR_error_generic_failure_invalid_length() { michael@0: let workerHelper = _getWorker(); michael@0: let worker = workerHelper.worker; michael@0: let context = worker.ContextPool._contexts[0]; michael@0: michael@0: context.Buf.readInt32 = function fakeReadUint32() { michael@0: return context.Buf.int32Array.pop(); michael@0: }; michael@0: michael@0: context.RIL.getCLIR = function fakeGetCLIR(options) { michael@0: context.Buf.int32Array = [ michael@0: 1, // Presentation indicator is used according to the subscription michael@0: // of the CLIR service. michael@0: 0, // CLIR provisioned in permanent mode. michael@0: 0 // Length (invalid one). michael@0: ]; michael@0: context.RIL[REQUEST_GET_CLIR](1, { michael@0: rilMessageType: "setCLIR", michael@0: rilRequestError: ERROR_SUCCESS michael@0: }); michael@0: }; michael@0: michael@0: context.RIL.getCLIR({}); michael@0: michael@0: let postedMessage = workerHelper.postedMessage; michael@0: michael@0: do_check_eq(postedMessage.errorMsg, "GenericFailure"); michael@0: do_check_false(postedMessage.success); michael@0: run_next_test(); michael@0: });