1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/mobilemessage/tests/test_smsservice_createsmsmessage.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,234 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +const ICC_ID = "123456789"; 1.8 + 1.9 +function do_check_throws(f, result, stack) { 1.10 + if (!stack) { 1.11 + stack = Components.stack.caller; 1.12 + } 1.13 + 1.14 + try { 1.15 + f(); 1.16 + } catch (exc) { 1.17 + if (exc.result == result) 1.18 + return; 1.19 + do_throw("expected result " + result + ", caught " + exc, stack); 1.20 + } 1.21 + do_throw("expected result " + result + ", none thrown", stack); 1.22 +} 1.23 + 1.24 +let gMobileMessageService = Cc["@mozilla.org/mobilemessage/mobilemessageservice;1"] 1.25 + .getService(Ci.nsIMobileMessageService); 1.26 +function newMessage() { 1.27 + return gMobileMessageService.createSmsMessage.apply(gMobileMessageService, arguments); 1.28 +} 1.29 + 1.30 +function run_test() { 1.31 + run_next_test(); 1.32 +} 1.33 + 1.34 +/** 1.35 + * Ensure an SmsMessage object created has sensible initial values. 1.36 + */ 1.37 +add_test(function test_interface() { 1.38 + let sms = newMessage(null, null, ICC_ID, "sent", "success", null, null, null, 1.39 + "normal", Date.now(), Date.now(), Date.now(), true); 1.40 + do_check_true(sms instanceof Ci.nsIDOMMozSmsMessage); 1.41 + do_check_eq(sms.id, 0); 1.42 + do_check_eq(sms.threadId, 0); 1.43 + do_check_eq(sms.iccId, ICC_ID); 1.44 + do_check_eq(sms.delivery, "sent"); 1.45 + do_check_eq(sms.deliveryStatus, "success"); 1.46 + do_check_eq(sms.receiver, null); 1.47 + do_check_eq(sms.sender, null); 1.48 + do_check_eq(sms.body, null); 1.49 + do_check_eq(sms.messageClass, "normal"); 1.50 + do_check_true(sms.read); 1.51 + run_next_test(); 1.52 +}); 1.53 + 1.54 +/** 1.55 + * Test if ICC ID is null when it's not available. 1.56 + */ 1.57 +add_test(function test_icc_id_not_available() { 1.58 + let sms = newMessage(null, null, null, "sent", "success", null, null, null, 1.59 + "normal", Date.now(), Date.now(), Date.now(), true); 1.60 + do_check_true(sms instanceof Ci.nsIDOMMozSmsMessage); 1.61 + do_check_eq(sms.id, 0); 1.62 + do_check_eq(sms.threadId, 0); 1.63 + do_check_eq(sms.iccId, null); 1.64 + do_check_eq(sms.delivery, "sent"); 1.65 + do_check_eq(sms.deliveryStatus, "success"); 1.66 + do_check_eq(sms.receiver, null); 1.67 + do_check_eq(sms.sender, null); 1.68 + do_check_eq(sms.body, null); 1.69 + do_check_eq(sms.messageClass, "normal"); 1.70 + do_check_true(sms.read); 1.71 + run_next_test(); 1.72 +}); 1.73 + 1.74 +/** 1.75 + * Verify that attributes are read-only. 1.76 + */ 1.77 +add_test(function test_readonly_attributes() { 1.78 + let sms = newMessage(null, null, ICC_ID, "sent", "success", null, null, null, 1.79 + "normal", Date.now(), Date.now(), Date.now(), true); 1.80 + 1.81 + sms.id = 1; 1.82 + do_check_eq(sms.id, 0); 1.83 + 1.84 + sms.threadId = 1; 1.85 + do_check_eq(sms.threadId, 0); 1.86 + 1.87 + sms.iccId = "987654321"; 1.88 + do_check_eq(sms.iccId, ICC_ID); 1.89 + 1.90 + sms.delivery = "received"; 1.91 + do_check_eq(sms.delivery, "sent"); 1.92 + 1.93 + sms.deliveryStatus = "pending"; 1.94 + do_check_eq(sms.deliveryStatus, "success"); 1.95 + 1.96 + sms.receiver = "a receiver"; 1.97 + do_check_eq(sms.receiver, null); 1.98 + 1.99 + sms.sender = "a sender"; 1.100 + do_check_eq(sms.sender, null); 1.101 + 1.102 + sms.body = "a body"; 1.103 + do_check_eq(sms.body, null); 1.104 + 1.105 + sms.messageClass = "class-0"; 1.106 + do_check_eq(sms.messageClass, "normal"); 1.107 + 1.108 + let oldTimestamp = sms.timestamp; 1.109 + sms.timestamp = Date.now(); 1.110 + do_check_eq(sms.timestamp, oldTimestamp); 1.111 + 1.112 + let oldSentTimestamp = sms.sentTimestamp; 1.113 + sms.sentTimestamp = Date.now(); 1.114 + do_check_eq(sms.sentTimestamp, oldSentTimestamp); 1.115 + 1.116 + let oldDeliveryTimestamp = sms.deliveryTimestamp; 1.117 + sms.deliveryTimestamp = Date.now(); 1.118 + do_check_eq(sms.deliveryTimestamp, oldDeliveryTimestamp); 1.119 + 1.120 + sms.read = false; 1.121 + do_check_true(sms.read); 1.122 + 1.123 + run_next_test(); 1.124 +}); 1.125 + 1.126 +/** 1.127 + * Test supplying the timestamp as a number of milliseconds. 1.128 + */ 1.129 +add_test(function test_timestamp_number() { 1.130 + let ts = Date.now(); 1.131 + let sms = newMessage(42, 1, ICC_ID, "sent", "success", "the sender", "the receiver", 1.132 + "the body", "normal", ts, ts, ts, true); 1.133 + do_check_eq(sms.id, 42); 1.134 + do_check_eq(sms.threadId, 1); 1.135 + do_check_eq(sms.iccId, ICC_ID); 1.136 + do_check_eq(sms.delivery, "sent"); 1.137 + do_check_eq(sms.deliveryStatus, "success"); 1.138 + do_check_eq(sms.sender, "the sender"); 1.139 + do_check_eq(sms.receiver, "the receiver"); 1.140 + do_check_eq(sms.body, "the body"); 1.141 + do_check_eq(sms.messageClass, "normal"); 1.142 + do_check_eq(sms.timestamp, ts); 1.143 + do_check_eq(sms.sentTimestamp, ts); 1.144 + do_check_eq(sms.deliveryTimestamp, ts); 1.145 + do_check_true(sms.read); 1.146 + run_next_test(); 1.147 +}); 1.148 + 1.149 +/** 1.150 + * Test supplying the timestamp as a Date object, which will be automatically 1.151 + * casted to unsigned long long. 1.152 + */ 1.153 +add_test(function test_timestamp_date() { 1.154 + let date = new Date(); 1.155 + let sms = newMessage(42, 1, ICC_ID, "sent", "success", "the sender", "the receiver", 1.156 + "the body", "normal", date, date, date, true); 1.157 + do_check_eq(sms.id, 42); 1.158 + do_check_eq(sms.threadId, 1); 1.159 + do_check_eq(sms.iccId, ICC_ID); 1.160 + do_check_eq(sms.delivery, "sent"); 1.161 + do_check_eq(sms.deliveryStatus, "success"); 1.162 + do_check_eq(sms.sender, "the sender"); 1.163 + do_check_eq(sms.receiver, "the receiver"); 1.164 + do_check_eq(sms.body, "the body"); 1.165 + do_check_eq(sms.messageClass, "normal"); 1.166 + do_check_eq(sms.timestamp, date.getTime()); 1.167 + do_check_eq(sms.sentTimestamp, date.getTime()); 1.168 + do_check_eq(sms.deliveryTimestamp, date.getTime()); 1.169 + do_check_true(sms.read); 1.170 + run_next_test(); 1.171 +}); 1.172 + 1.173 +/** 1.174 + * Test that an invalid delivery string is not accepted. 1.175 + */ 1.176 +add_test(function test_invalid_delivery_string() { 1.177 + do_check_throws(function() { 1.178 + newMessage(42, 1, ICC_ID, "this is invalid", "pending", "the sender", 1.179 + "the receiver", "the body", "normal", Date.now(), 0, 0, true); 1.180 + }, Cr.NS_ERROR_INVALID_ARG); 1.181 + run_next_test(); 1.182 +}); 1.183 + 1.184 +/** 1.185 + * Test that a number is not accepted for the 'delivery' argument. 1.186 + */ 1.187 +add_test(function test_invalid_delivery_string() { 1.188 + do_check_throws(function() { 1.189 + newMessage(42, 1, ICC_ID, 1, "pending", "the sender", "the receiver", "the body", 1.190 + "normal", Date.now(), 0, 0, true); 1.191 + }, Cr.NS_ERROR_INVALID_ARG); 1.192 + run_next_test(); 1.193 +}); 1.194 + 1.195 +/** 1.196 + * Test that an invalid delivery status string is not accepted. 1.197 + */ 1.198 +add_test(function test_invalid_delivery_status_string() { 1.199 + do_check_throws(function() { 1.200 + newMessage(42, 1, ICC_ID, "sent", "this is invalid", "the sender", "the receiver", 1.201 + "the body", "normal", Date.now(), Date.now(), 0, true); 1.202 + }, Cr.NS_ERROR_INVALID_ARG); 1.203 + run_next_test(); 1.204 +}); 1.205 + 1.206 +/** 1.207 + * Test that a number is not accepted for the 'deliveryStatus' argument. 1.208 + */ 1.209 +add_test(function test_invalid_delivery_status_string() { 1.210 + do_check_throws(function() { 1.211 + newMessage(42, 1, ICC_ID, "sent", 1, "the sender", "the receiver", "the body", 1.212 + "normal", Date.now(), Date.now(), 0, true); 1.213 + }, Cr.NS_ERROR_INVALID_ARG); 1.214 + run_next_test(); 1.215 +}); 1.216 + 1.217 +/** 1.218 + * Test that an invalid message class string is not accepted. 1.219 + */ 1.220 +add_test(function test_invalid_message_class_string() { 1.221 + do_check_throws(function() { 1.222 + newMessage(42, 1, ICC_ID, "sent", "success", "the sender", "the receiver", 1.223 + "the body", "this is invalid", Date.now(), Date.now(), Date.now(), true); 1.224 + }, Cr.NS_ERROR_INVALID_ARG); 1.225 + run_next_test(); 1.226 +}); 1.227 + 1.228 +/** 1.229 + * Test that a number is not accepted for the 'messageClass' argument. 1.230 + */ 1.231 +add_test(function test_invalid_message_class_string() { 1.232 + do_check_throws(function() { 1.233 + newMessage(42, 1, ICC_ID, "sent", "success", "the sender", "the receiver", 1.234 + "the body", 1, Date.now(), Date.now(), Date.now(), true); 1.235 + }, Cr.NS_ERROR_INVALID_ARG); 1.236 + run_next_test(); 1.237 +});