summaryrefslogtreecommitdiffstats
path: root/dom/system/gonk/tests/test_ril_worker_cdma_info_rec.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/system/gonk/tests/test_ril_worker_cdma_info_rec.js')
-rw-r--r--dom/system/gonk/tests/test_ril_worker_cdma_info_rec.js234
1 files changed, 234 insertions, 0 deletions
diff --git a/dom/system/gonk/tests/test_ril_worker_cdma_info_rec.js b/dom/system/gonk/tests/test_ril_worker_cdma_info_rec.js
new file mode 100644
index 000000000..335c0c403
--- /dev/null
+++ b/dom/system/gonk/tests/test_ril_worker_cdma_info_rec.js
@@ -0,0 +1,234 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this);
+
+function run_test() {
+ run_next_test();
+}
+
+/**
+ * Helper function.
+ */
+function newWorkerWithParcel(parcelBuf) {
+ let worker = newWorker({
+ postRILMessage: function(data) {
+ // Do nothing
+ },
+ postMessage: function(message) {
+ // Do nothing
+ }
+ });
+
+ let index = 0; // index for read
+ let buf = parcelBuf;
+
+ let context = worker.ContextPool._contexts[0];
+ context.Buf.readUint8 = function() {
+ return buf[index++];
+ };
+
+ context.Buf.readUint16 = function() {
+ return buf[index++];
+ };
+
+ context.Buf.readInt32 = function() {
+ return buf[index++];
+ };
+
+ context.Buf.seekIncoming = function(offset) {
+ index += offset / context.Buf.UINT32_SIZE;
+ };
+
+ return worker;
+}
+
+// Test CDMA information record decoder.
+
+/**
+ * Verify decoder for type DISPLAY
+ */
+add_test(function test_display() {
+ let worker = newWorkerWithParcel([
+ 0x01, // one inforemation record
+ 0x00, // type: display
+ 0x09, // length: 9
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x49, 0x6E, 0x66,
+ 0x6F, 0x00]);
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records[0].display, "Test Info");
+
+ run_next_test();
+});
+
+/**
+ * Verify decoder for type EXTENDED DISPLAY
+ */
+add_test(function test_extended_display() {
+ let worker = newWorkerWithParcel([
+ 0x01, // one inforemation record
+ 0x07, // type: extended display
+ 0x12, // length: 18
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74,
+ 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x49, 0x6E,
+ 0x66, 0x6F, 0x00, 0x00]);
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records[0].display, "Test Extended Info");
+
+ run_next_test();
+});
+
+/**
+ * Verify decoder for mixed type
+ */
+add_test(function test_mixed() {
+ let worker = newWorkerWithParcel([
+ 0x02, // two inforemation record
+ 0x00, // type: display
+ 0x0B, // length: 11
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x49, 0x6E, 0x66,
+ 0x6F, 0x20, 0x31, 0x00,
+ 0x07, // type: extended display
+ 0x0B, // length: 11
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x49, 0x6E, 0x66,
+ 0x6F, 0x20, 0x32, 0x00]);
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records[0].display, "Test Info 1");
+ equal(records[1].display, "Test Info 2");
+
+ run_next_test();
+});
+
+/**
+ * Verify decoder for multiple types
+ */
+add_test(function test_multiple() {
+ let worker = newWorkerWithParcel([
+ 0x02, // two inforemation record
+ 0x00, // type: display
+ 0x0B, // length: 11
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x49, 0x6E, 0x66,
+ 0x6F, 0x20, 0x31, 0x00,
+ 0x00, // type: display
+ 0x0B, // length: 11
+ 0x54, 0x65, 0x73, 0x74, 0x20, 0x49, 0x6E, 0x66,
+ 0x6F, 0x20, 0x32, 0x00]);
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records[0].display, "Test Info 1");
+ equal(records[1].display, "Test Info 2");
+
+ run_next_test();
+});
+
+/**
+ * Verify decoder for Signal Type
+ */
+add_test(function test_signal() {
+ let worker = newWorkerWithParcel([
+ 0x01, // one inforemation record
+ 0x04, // type: signal
+ 0x01, // isPresent: non-zero
+ 0x00, // signalType: Tone signal (00)
+ 0x01, // alertPitch: High pitch
+ 0x03]); // signal: Abbreviated intercept (000011)
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records[0].signal.type, 0x00);
+ equal(records[0].signal.alertPitch, 0x01);
+ equal(records[0].signal.signal, 0x03);
+
+ run_next_test();
+});
+
+/**
+ * Verify decoder for Signal Type for Not Presented
+ */
+add_test(function test_signal_not_present() {
+ let worker = newWorkerWithParcel([
+ 0x01, // one inforemation record
+ 0x04, // type: signal
+ 0x00, // isPresent: zero
+ 0x00, // signalType: Tone signal (00)
+ 0x01, // alertPitch: High pitch
+ 0x03]); // signal: Abbreviated intercept (000011)
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records.length, 0);
+
+ run_next_test();
+});
+
+/**
+ * Verify decoder for Line Control
+ */
+add_test(function test_line_control() {
+ let worker = newWorkerWithParcel([
+ 0x01, // one inforemation record
+ 0x06, // type: line control
+ 0x01, // polarity included
+ 0x00, // not toggled
+ 0x01, // reversed
+ 0xFF]); // Power denial timeout: 255 * 5 ms
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records[0].lineControl.polarityIncluded, 1);
+ equal(records[0].lineControl.toggle, 0);
+ equal(records[0].lineControl.reverse, 1);
+ equal(records[0].lineControl.powerDenial, 255);
+
+ run_next_test();
+});
+
+/**
+ * Verify decoder for CLIR Cause
+ */
+add_test(function test_clir() {
+ let worker = newWorkerWithParcel([
+ 0x01, // one inforemation record
+ 0x08, // type: clir
+ 0x01]); // cause: Rejected by user
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records[0].clirCause, 1);
+
+ run_next_test();
+});
+
+/**
+ * Verify decoder for Audio Control
+ */
+add_test(function test_clir() {
+ let worker = newWorkerWithParcel([
+ 0x01, // one inforemation record
+ 0x0A, // type: audio control
+ 0x01, // uplink
+ 0xFF]); // downlink
+ let context = worker.ContextPool._contexts[0];
+ let helper = context.CdmaPDUHelper;
+ let records = helper.decodeInformationRecord();
+
+ equal(records[0].audioControl.upLink, 1);
+ equal(records[0].audioControl.downLink, 255);
+
+ run_next_test();
+});