| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| description("Tests which types are valid for crypto.randomValues."); |
| |
| if (!window.ArrayBuffer) |
| debug("This test requres ArrayBuffers to run!"); |
| |
| shouldBe("'crypto' in window", "true"); |
| shouldBe("'getRandomValues' in window.crypto", "true"); |
| |
| function checkIntegerTypes() { |
| var integerTypes = [ |
| "Uint8Array", "Int8Array", "Uint8ClampedArray", |
| "Uint16Array", "Int16Array", |
| "Uint32Array", "Int32Array", |
| ]; |
| integerTypes.forEach(function(arrayType) { |
| shouldBeDefined("random = crypto.getRandomValues(new "+arrayType+"(3))"); |
| shouldBeType("random", arrayType); |
| |
| shouldBeDefined("view = new "+arrayType+"(3)"); |
| shouldBeDefined("random = crypto.getRandomValues(view)"); |
| shouldBe("random", "view"); |
| }); |
| } |
| |
| function checkNonIntegerTypes() { |
| var floatTypes = [ |
| "Float32Array", "Float64Array", |
| ]; |
| floatTypes.forEach(function(arrayType) { |
| shouldThrow("crypto.getRandomValues(new "+arrayType+"(3))"); |
| }); |
| |
| shouldBeDefined("buffer = new Uint8Array(32)"); |
| shouldBeDefined("buffer.buffer"); |
| shouldBeDefined("view = new DataView(buffer.buffer)"); |
| shouldThrow("crypto.getRandomValues(view)"); |
| } |
| |
| checkIntegerTypes(); |
| checkNonIntegerTypes(); |
| |
| </script> |
| <script src="../resources/js-test-post.js"></script> |
| </body> |
| </html> |
| |
| |