| function run_test() { |
| // Step 1. |
| test(function() { |
| assert_throws("TypeMismatchError", function() { |
| self.crypto.getRandomValues(new Float32Array(6)) |
| }, "Float32Array") |
| assert_throws("TypeMismatchError", function() { |
| self.crypto.getRandomValues(new Float64Array(6)) |
| }, "Float64Array") |
| |
| assert_throws("TypeMismatchError", function() { |
| self.crypto.getRandomValues(new Float32Array(65537)) |
| }, "Float32Array (too long)") |
| assert_throws("TypeMismatchError", function() { |
| self.crypto.getRandomValues(new Float64Array(65537)) |
| }, "Float64Array (too long)") |
| }, "Float arrays") |
| |
| var arrays = { |
| 'Int8Array': Int8Array, |
| 'Int16Array': Int16Array, |
| 'Int32Array': Int32Array, |
| 'Uint8Array': Uint8Array, |
| 'Uint8ClampedArray': Uint8ClampedArray, |
| 'Uint16Array': Uint16Array, |
| 'Uint32Array': Uint32Array, |
| }; |
| |
| test(function() { |
| for (var array in arrays) { |
| assert_equals(self.crypto.getRandomValues(new arrays[array](8)).constructor, |
| arrays[array], "crypto.getRandomValues(new " + array + "(8))") |
| } |
| }, "Integer array") |
| |
| test(function() { |
| for (var array in arrays) { |
| var maxlength = 65536 / (arrays[array].BYTES_PER_ELEMENT); |
| assert_throws("QuotaExceededError", function() { |
| self.crypto.getRandomValues(new arrays[array](maxlength + 1)) |
| }, "crypto.getRandomValues length over 65536") |
| } |
| }, "Large length") |
| |
| test(function() { |
| for (var array in arrays) { |
| assert_true(self.crypto.getRandomValues(new arrays[array](0)).length == 0) |
| } |
| }, "Null arrays") |
| } |