summaryrefslogtreecommitdiffstats
path: root/dom/system/gonk/tests/test_ril_worker_smsc_address.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/system/gonk/tests/test_ril_worker_smsc_address.js')
-rw-r--r--dom/system/gonk/tests/test_ril_worker_smsc_address.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/dom/system/gonk/tests/test_ril_worker_smsc_address.js b/dom/system/gonk/tests/test_ril_worker_smsc_address.js
new file mode 100644
index 000000000..c8c283b7c
--- /dev/null
+++ b/dom/system/gonk/tests/test_ril_worker_smsc_address.js
@@ -0,0 +1,112 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this);
+
+const SMSC_ATT = '+13123149810';
+const SMSC_ATT_TYPO = '+++1312@@@314$$$9,8,1,0';
+const SMSC_ATT_TEXT = '"+13123149810",145';
+const SMSC_ATT_TEXT_INCORRECT_TOA = '"+13123149810",129';
+const SMSC_ATT_PDU = '07913121139418F0';
+const SMSC_O2 = '+447802000332';
+const SMSC_O2_TEXT = '"+447802000332",145';
+const SMSC_O2_PDU = '0791448720003023';
+const SMSC_EMPTY = '';
+const SMSC_TON_UNKNOWN = '0407485455'
+const SMSC_TON_UNKNOWN_TEXT = '"0407485455",129';
+const SMSC_TON_UNKNOWN_TEXT_NO_TOA = '"0407485455"';
+const SMSC_TON_UNKNOWN_TEXT_INVALID_TOA = '"0407485455",abc';
+const SMSC_TON_UNKNOWN_PDU = '06814070844555';
+const SMSC_EMPTY_PDU = 'FFFFFFFFFFFFFFFFFFFFFFFF';
+const SMSC_EMPTY_TEXT = '';
+
+function run_test() {
+ run_next_test();
+}
+
+function setSmsc(context, smsc, ton, npi, expected) {
+ context.Buf.postRILMessage = function() {
+ equal(this.readString(), expected);
+ };
+
+ context.RIL.setSmscAddress({
+ smscAddress: smsc,
+ typeOfNumber: ton,
+ numberPlanIdentification: npi
+ });
+}
+
+function getSmsc(worker, context, raw, smsc, ton, npi) {
+ worker.postMessage = function(message) {
+ equal(message.smscAddress, smsc);
+ equal(message.typeOfNumber, ton);
+ equal(message.numberPlanIdentification, npi);
+ }
+
+ context.Buf.writeString(raw);
+ context.RIL[REQUEST_GET_SMSC_ADDRESS](0, { rilMessageType: "getSmscAddress"});
+}
+
+add_test(function test_setSmscAddress() {
+ let worker = newUint8Worker();
+ let context = worker.ContextPool._contexts[0];
+ let parcelTypes = [];
+ context.Buf.newParcel = (type, options) => parcelTypes.push(type);
+
+ // Test text mode.
+ worker.RILQUIRKS_SMSC_ADDRESS_FORMAT = "text";
+
+ setSmsc(context, SMSC_ATT, 1, 1, SMSC_ATT_TEXT);
+ equal(parcelTypes.pop(), REQUEST_SET_SMSC_ADDRESS);
+
+ setSmsc(context, SMSC_O2, 1, 1, SMSC_O2_TEXT);
+ equal(parcelTypes.pop(), REQUEST_SET_SMSC_ADDRESS);
+
+ setSmsc(context, SMSC_ATT_TYPO, 1, 1, SMSC_ATT_TEXT);
+ equal(parcelTypes.pop(), REQUEST_SET_SMSC_ADDRESS);
+
+ setSmsc(context, SMSC_TON_UNKNOWN, 0, 1, SMSC_TON_UNKNOWN_TEXT);
+ equal(parcelTypes.pop(), REQUEST_SET_SMSC_ADDRESS);
+
+ // Test pdu mode.
+ worker.RILQUIRKS_SMSC_ADDRESS_FORMAT = "pdu";
+
+ setSmsc(context, SMSC_ATT, 1, 1, SMSC_ATT_PDU);
+ equal(parcelTypes.pop(), REQUEST_SET_SMSC_ADDRESS);
+
+ setSmsc(context, SMSC_O2, 1, 1, SMSC_O2_PDU);
+ equal(parcelTypes.pop(), REQUEST_SET_SMSC_ADDRESS);
+
+ setSmsc(context, SMSC_ATT_TYPO, 1, 1, SMSC_ATT_PDU);
+ equal(parcelTypes.pop(), REQUEST_SET_SMSC_ADDRESS);
+
+ setSmsc(context, SMSC_TON_UNKNOWN, 0, 1, SMSC_TON_UNKNOWN_PDU);
+ equal(parcelTypes.pop(), REQUEST_SET_SMSC_ADDRESS);
+
+ run_next_test();
+});
+
+add_test(function test_getSmscAddress() {
+ let worker = newUint8Worker();
+ let context = worker.ContextPool._contexts[0];
+
+ // Test text mode.
+ worker.RILQUIRKS_SMSC_ADDRESS_FORMAT = "text";
+ getSmsc(worker, context, SMSC_ATT_TEXT, SMSC_ATT, 1, 1);
+ getSmsc(worker, context, SMSC_ATT_TEXT_INCORRECT_TOA, SMSC_ATT, 1, 1);
+ getSmsc(worker, context, SMSC_O2_TEXT, SMSC_O2, 1, 1);
+ getSmsc(worker, context, SMSC_TON_UNKNOWN_TEXT, SMSC_TON_UNKNOWN, 0, 1);
+ getSmsc(worker, context, SMSC_TON_UNKNOWN_TEXT_NO_TOA, SMSC_TON_UNKNOWN, 0, 1);
+ getSmsc(worker, context, SMSC_TON_UNKNOWN_TEXT_INVALID_TOA, SMSC_TON_UNKNOWN,
+ 0, 1);
+ getSmsc(worker, context, SMSC_EMPTY_TEXT, SMSC_EMPTY, 0, 1);
+
+ // Test pdu mode.
+ worker.RILQUIRKS_SMSC_ADDRESS_FORMAT = "pdu";
+ getSmsc(worker, context, SMSC_ATT_PDU, SMSC_ATT, 1, 1);
+ getSmsc(worker, context, SMSC_O2_PDU, SMSC_O2, 1, 1);
+ getSmsc(worker, context, SMSC_TON_UNKNOWN_PDU, SMSC_TON_UNKNOWN, 0, 1);
+ getSmsc(worker, context, SMSC_EMPTY_PDU, SMSC_EMPTY, 0, 1);
+
+ run_next_test();
+});