summaryrefslogtreecommitdiffstats
path: root/dom/system/gonk/tests/test_ril_worker_sms_nl_tables.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/system/gonk/tests/test_ril_worker_sms_nl_tables.js')
-rw-r--r--dom/system/gonk/tests/test_ril_worker_sms_nl_tables.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/dom/system/gonk/tests/test_ril_worker_sms_nl_tables.js b/dom/system/gonk/tests/test_ril_worker_sms_nl_tables.js
new file mode 100644
index 000000000..32bc5dc2a
--- /dev/null
+++ b/dom/system/gonk/tests/test_ril_worker_sms_nl_tables.js
@@ -0,0 +1,77 @@
+/* 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 ESCAPE = "\uffff";
+const RESCTL = "\ufffe";
+const LF = "\n";
+const CR = "\r";
+const SP = " ";
+const FF = "\u000c";
+
+function run_test() {
+ run_next_test();
+}
+
+/**
+ * Verify validity of the national language tables
+ */
+add_test(function test_nl_locking_shift_tables_validity() {
+ for (let lst = 0; lst < PDU_NL_LOCKING_SHIFT_TABLES.length; lst++) {
+ do_print("Verifying PDU_NL_LOCKING_SHIFT_TABLES[" + lst + "]");
+
+ let table = PDU_NL_LOCKING_SHIFT_TABLES[lst];
+
+ // Make sure table length is 128, or it will break table lookup algorithm.
+ equal(table.length, 128);
+
+ // Make sure special values are preserved.
+ equal(table[PDU_NL_EXTENDED_ESCAPE], ESCAPE);
+ equal(table[PDU_NL_LINE_FEED], LF);
+ equal(table[PDU_NL_CARRIAGE_RETURN], CR);
+ equal(table[PDU_NL_SPACE], SP);
+ }
+
+ run_next_test();
+});
+
+add_test(function test_nl_single_shift_tables_validity() {
+ for (let sst = 0; sst < PDU_NL_SINGLE_SHIFT_TABLES.length; sst++) {
+ do_print("Verifying PDU_NL_SINGLE_SHIFT_TABLES[" + sst + "]");
+
+ let table = PDU_NL_SINGLE_SHIFT_TABLES[sst];
+
+ // Make sure table length is 128, or it will break table lookup algorithm.
+ equal(table.length, 128);
+
+ // Make sure special values are preserved.
+ equal(table[PDU_NL_EXTENDED_ESCAPE], ESCAPE);
+ equal(table[PDU_NL_PAGE_BREAK], FF);
+ equal(table[PDU_NL_RESERVED_CONTROL], RESCTL);
+ }
+
+ run_next_test();
+});
+
+add_test(function test_gsm_sms_strict_7bit_charmap_validity() {
+ let defaultTable = PDU_NL_LOCKING_SHIFT_TABLES[PDU_NL_IDENTIFIER_DEFAULT];
+ let defaultShiftTable = PDU_NL_SINGLE_SHIFT_TABLES[PDU_NL_IDENTIFIER_DEFAULT];
+ for (let from in GSM_SMS_STRICT_7BIT_CHARMAP) {
+ let to = GSM_SMS_STRICT_7BIT_CHARMAP[from];
+ do_print("Verifying GSM_SMS_STRICT_7BIT_CHARMAP[\"\\u0x"
+ + from.charCodeAt(0).toString(16) + "\"] => \"\\u"
+ + to.charCodeAt(0).toString(16) + "\"");
+
+ // Make sure "from" is not in default table
+ equal(defaultTable.indexOf(from), -1);
+ equal(defaultShiftTable.indexOf(from), -1);
+ // Make sure "to" is in default table
+ if ((defaultTable.indexOf(to) < 0)
+ && (defaultShiftTable.indexOf(to) < 0)) {
+ equal(false, true);
+ }
+ }
+
+ run_next_test();
+});