file-mapped-arraybuffers.js (1469B)
1 // |reftest| skip-if(!xulRuntime.shell) 2 // Any copyright is dedicated to the Public Domain. 3 // http://creativecommons.org/licenses/publicdomain/ 4 5 function viewToString(view) 6 { 7 return String.fromCharCode.apply(null, view); 8 } 9 10 function test() { 11 var filename = "file-mapped-arraybuffers.txt"; 12 var buffer = createMappedArrayBuffer(filename); 13 var view = new Uint8Array(buffer); 14 assertEq(viewToString(view), "01234567abcdefghijkl"); 15 16 var buffer2 = createMappedArrayBuffer(filename, 8); 17 view = new Uint8Array(buffer2); 18 assertEq(viewToString(view), "abcdefghijkl"); 19 20 var buffer3 = createMappedArrayBuffer(filename, 0, 8); 21 view = new Uint8Array(buffer3); 22 assertEq(viewToString(view), "01234567"); 23 24 // Test detaching during subarray creation. 25 var nasty = { 26 valueOf: function () { 27 print("detaching..."); 28 serialize(buffer3, [buffer3]); 29 print("detached"); 30 return 3000; 31 } 32 }; 33 34 var a = new Uint8Array(buffer3); 35 assertThrowsInstanceOf(() => { 36 var aa = a.subarray(0, nasty); 37 for (i = 0; i < 3000; i++) 38 aa[i] = 17; 39 }, TypeError); 40 41 // Check that invalid sizes and offsets are caught 42 assertThrowsInstanceOf(() => createMappedArrayBuffer("empty.txt", 8), RangeError); 43 assertThrowsInstanceOf(() => createMappedArrayBuffer("empty.txt", 0, 8), Error); 44 } 45 46 if (getBuildConfiguration("mapped-array-buffer")) 47 test(); 48 reportCompare(0, 0, 'ok');