dom/system/gonk/tests/test_ril_worker_cellbroadcast_config.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this);
     6 function run_test() {
     7   run_next_test();
     8 }
    10 add_test(function test_ril_worker_cellbroadcast_activate() {
    11   let worker = newWorker({
    12     postRILMessage: function(id, parcel) {
    13       // Do nothing
    14     },
    15     postMessage: function(message) {
    16       // Do nothing
    17     }
    18   });
    19   let context = worker.ContextPool._contexts[0];
    21   let parcelTypes = [];
    22   let org_newParcel = context.Buf.newParcel;
    23   context.Buf.newParcel = function(type, options) {
    24     parcelTypes.push(type);
    25     org_newParcel.apply(this, arguments);
    26   };
    28   function setup(isCdma) {
    29     context.RIL._isCdma = isCdma;
    30     context.RIL.cellBroadcastDisabled = false;
    31     context.RIL.mergedCellBroadcastConfig = [1, 2, 4, 7];  // 1, 4-6
    32     parcelTypes = [];
    33   }
    35   function test(isCdma, expectedRequest) {
    36     setup(isCdma);
    37     context.RIL.setCellBroadcastDisabled({disabled: true});
    38     // Makesure that request parcel is sent out.
    39     do_check_neq(parcelTypes.indexOf(expectedRequest), -1);
    40     do_check_eq(context.RIL.cellBroadcastDisabled, true);
    41   }
    43   test(false, REQUEST_GSM_SMS_BROADCAST_ACTIVATION);
    44   test(true, REQUEST_CDMA_SMS_BROADCAST_ACTIVATION);
    46   run_next_test();
    47 });
    49 add_test(function test_ril_worker_cellbroadcast_config() {
    50   let currentParcel;
    51   let worker = newWorker({
    52     postRILMessage: function(id, parcel) {
    53       currentParcel = parcel;
    54     },
    55     postMessage: function(message) {
    56       // Do nothing
    57     }
    58   });
    59   let context = worker.ContextPool._contexts[0];
    61   function U32ArrayFromParcelArray(pa) {
    62     do_print(pa);
    63     let out = [];
    64     for (let i = 0; i < pa.length; i += 4) {
    65       let data = pa[i] + (pa[i+1] << 8) + (pa[i+2] << 16) + (pa[i+3] << 24);
    66       out.push(data);
    67     }
    68     return out;
    69   }
    71   function test(isCdma, configs, expected) {
    72     let parcelType = isCdma ? REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG
    73                             : REQUEST_GSM_SET_BROADCAST_SMS_CONFIG;
    75     let found = false;
    76     worker.postRILMessage = function(id, parcel) {
    77       u32Parcel = U32ArrayFromParcelArray(Array.slice(parcel));
    78       if (u32Parcel[1] != parcelType) {
    79         return;
    80       }
    82       found = true;
    83       // Check parcel. Data start from 4th word (32bit)
    84       do_check_eq(u32Parcel.slice(3).toString(), expected);
    85     };
    87     context.RIL._isCdma = isCdma;
    88     context.RIL.setSmsBroadcastConfig(configs);
    90     // Makesure that request parcel is sent out.
    91     do_check_true(found);
    92   }
    94   // (GSM) RIL writes the following data to outgoing parcel:
    95   //   nums [(from, to, 0, 0xFF, 1), ... ]
    96   test(false,
    97        [1, 2, 4, 7]  /* 1, 4-6 */,
    98        ["2", "1,2,0,255,1", "4,7,0,255,1"].join());
   100   // (CDMA) RIL writes the following data to outgoing parcel:
   101   //   nums [(id, 0, 1), ... ]
   102   test(true,
   103        [1, 2, 4, 7]  /* 1, 4-6 */,
   104        ["4", "1,0,1", "4,0,1", "5,0,1", "6,0,1"].join());
   106   run_next_test();
   107 });
   109 add_test(function test_ril_worker_cellbroadcast_merge_config() {
   110   let worker = newWorker({
   111     postRILMessage: function(id, parcel) {
   112       // Do nothing
   113     },
   114     postMessage: function(message) {
   115       // Do nothing
   116     }
   117   });
   118   let context = worker.ContextPool._contexts[0];
   120   function test(isCdma, configs, expected) {
   121     context.RIL._isCdma = isCdma;
   122     context.RIL.cellBroadcastConfigs = configs;
   123     context.RIL._mergeAllCellBroadcastConfigs();
   124     do_check_eq(context.RIL.mergedCellBroadcastConfig.toString(), expected);
   125   }
   127   let configs = {
   128     MMI:    [1, 2, 4, 7],   // 1, 4-6
   129     CBMI:   [6, 9],         // 6-8
   130     CBMID:  [8, 11],        // 8-10
   131     CBMIR:  [10, 13]        // 10-12
   132   };
   134   test(false, configs, "1,2,4,13");
   135   test(true, configs, "1,2,4,7");
   137   run_next_test();
   138 });
   140 add_test(function test_ril_worker_cellbroadcast_set_search_list() {
   141   let worker = newWorker({
   142     postRILMessage: function(id, parcel) {
   143       // Do nothing
   144     },
   145     postMessage: function(message) {
   146       // Do nothing
   147     }
   148   });
   150   let context = worker.ContextPool._contexts[0];
   152   function test(aIsCdma, aSearchList, aExpected) {
   153     context.RIL._isCdma = aIsCdma;
   155     let options = { searchList: aSearchList };
   156     context.RIL.setCellBroadcastSearchList(options);
   157     // Enforce the MMI result to string for comparison.
   158     do_check_eq("" + context.RIL.cellBroadcastConfigs.MMI, aExpected);
   159     do_check_eq(options.success, true);
   160   }
   162   let searchListStr = "1,2,3,4";
   163   let searchList = { gsm: "1,2,3,4", cdma: "5,6,7,8" };
   165   test(false, searchListStr, "1,2,2,3,3,4,4,5");
   166   test(true, searchListStr, "1,2,2,3,3,4,4,5");
   167   test(false, searchList, "1,2,2,3,3,4,4,5");
   168   test(true, searchList, "5,6,6,7,7,8,8,9");
   169   test(false, null, "null");
   170   test(true, null, "null");
   172   run_next_test();
   173 });

mercurial