blob: 85d476ab0ca464528e5e8f3e1d3822e1999fdc5d [file] [log] [blame]
(function test() {
// Read this test file using jsc shell's builtins, and check that its content is as expected.
const in_file = 'jsc-read.js';
const check = content_read => {
let testContent = test.toString();
let lineEnding = testContent.match(/\r?\n/)[0];
let expect = `(${testContent})();${lineEnding}`;
if (content_read !== expect)
throw Error('Expected to read this file as-is, instead read:\n==========\n' + content_read + '\n==========');
};
const test_arraybuffer = read_function => {
let file = read_function(in_file, 'binary');
if (typeof file.buffer !== 'object' || file.byteLength === undefined || file.length === undefined || file.BYTES_PER_ELEMENT !== 1 || file.byteOffset !== 0)
throw Error('Expected a Uint8Array');
let str = '';
for (var i = 0; i != file.length; ++i)
str += String.fromCharCode(file[i]); // Assume ASCII.
check(str);
};
const test_string = read_function => {
let str = read_function(in_file);
if (typeof str !== 'string')
throw Error('Expected a string');
check(str);
};
// jsc's original file reading function is `readFile`, whereas SpiderMonkey
// shell's file reading function is `read`. The latter is used by
// emscripten's shell.js (d8 calls it `readbuffer`, which shell.js
// polyfills).
test_arraybuffer(readFile);
test_arraybuffer(read);
test_string(readFile);
test_string(read);
})();