Test the File constructor.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS (new File([], 'world.html')) instanceof window.File is true
PASS (new File(['hello'], 'world.html')) instanceof window.File is true
PASS (new File(['hello'], 'world.html', {})) instanceof window.File is true
PASS (new File(['hello'], 'world.html', {type:'text/html'})) instanceof window.File is true
PASS (new File(['hello'], 'world.html', {type:'text/html', endings:'native'})) instanceof window.File is true
PASS (new File(['hello'], 'world.html', {type:'text/html', endings:'transparent'})) instanceof window.File is true
PASS (new File([], 'world.html')) instanceof window.File is true
PASS (new File()) threw exception TypeError: Not enough arguments.
PASS (new File([])) threw exception TypeError: Not enough arguments.
PASS (new File([], null)) instanceof window.File is true
PASS (new File([], 1)) instanceof window.File is true
PASS (new File([], '')) instanceof window.File is true
PASS (new File([], document)) instanceof window.File is true
PASS new File('hello', 'world.html') threw exception TypeError: Value is not a sequence.
PASS new File(0, 'world.html') threw exception TypeError: Value is not a sequence.
PASS new File(null, 'world.html') threw exception TypeError: Value is not a sequence.
PASS (new File([], 'world.html')) instanceof window.File is true
PASS (new File(['stringPrimitive'], 'world.html')) instanceof window.File is true
PASS (new File([String('stringObject')], 'world.html')) instanceof window.File is true
PASS (new File([new Blob], 'world.html')) instanceof window.File is true
PASS (new File([new Blob([new Blob])], 'world.html')) instanceof window.File is true
PASS (new Blob([new File([], 'world.txt')])) instanceof window.Blob is true
PASS (new Blob([new Blob([new File([new Blob], 'world.txt')])])) instanceof window.Blob is true
PASS (new File([new File([], 'world.txt')], 'world.html')) instanceof window.File is true
PASS (new File([new Blob([new File([new Blob], 'world.txt')])], 'world.html')) instanceof window.File is true
PASS (new File([12], 'world.html')).size is 2
PASS (new File([[]], 'world.html')).size is 0
PASS (new File([{}], 'world.html')).size is 15
PASS (new File([document], 'world.html')).size is 21
PASS (new File([toStringingObj], 'world.html')).size is 8
PASS new File([throwingObj], 'world.html') threw exception Error.
PASS (new File([], null)).name is 'null'
PASS (new File([], 12)).name is '12'
PASS (new File([], '')).name is ''
PASS (new File([], {})).name is '[object Object]'
PASS (new File([], document)).name is '[object HTMLDocument]'
PASS (new File([], toStringingObj)).name is 'A string'
PASS (new File([], throwingObj)).name threw exception Error.
PASS (new File([], 'world.html', {unknownKey:'value'})) instanceof window.File is true
PASS new File([], 'world.html', {type:throwingObj}) threw exception Error.
PASS (new File([], 'world.html', {type:'helloî'})) instanceof window.File is true
PASS (new File([], 'world.html', {type:'helloî'})).type is ''
PASS (new File([], 'world.html', {lastModified: 555, type:'goodbye'})).lastModified is 555
PASS (new File([], 'world.html', {lastModified: 555, type:'goodbyeî'})).lastModified is 555
PASS (new File([], 'world.html', null)) instanceof window.File is true
PASS (new File([], 'world.html', undefined)) instanceof window.File is true
PASS (new File([], 'world.html', 123)) instanceof window.File threw exception TypeError: Type error.
PASS (new File([], 'world.html', 123.4)) instanceof window.File threw exception TypeError: Type error.
PASS (new File([], 'world.html', true)) instanceof window.File threw exception TypeError: Type error.
PASS (new File([], 'world.html', 'abc')) instanceof window.File threw exception TypeError: Type error.
PASS (new File([], 'world.html', [])) instanceof window.File is true
PASS (new File([], 'world.html', /abc/)) instanceof window.File is true
PASS (new File([], 'world.html', function () {})) instanceof window.File is true
PASS (new File([], 'world.html')).name is 'world.html'
PASS (new File([], 'w/orld/ht/m.l')).name is 'w/orld/ht/m.l'
PASS (new File([], 'world.html', {type:'text/html'})).name is 'world.html'
PASS (new File([], 'world.html', {type:'text/html'})).type is 'text/html'
PASS (new File([], 'world.html', {type:'text/html'})).size is 0
PASS (new File([], 'world.html', {type:'text/plain;charset=UTF-8'})).type is 'text/plain;charset=utf-8'
PASS (new File([], 'world.html', {lastModified: 441532800000})).lastModified is 441532800000
PASS (new File([], 'world.html')).lastModified is equivalent to Date.now().
PASS (new File([], 'world.html', {})).lastModified is equivalent to Date.now().
PASS (new File([], 'world.html', {type: 'text/plain'})).lastModified is equivalent to Date.now().
PASS (new File([], 'world.html', {lastModified: new Date(441532800000)})).lastModified is 441532800000
PASS window.File.length is 2
PASS new File([new DataView(new ArrayBuffer(100))], 'world.html').size is 100
PASS new File([new Uint8Array(100)], 'world.html').size is 100
PASS new File([new Uint8ClampedArray(100)], 'world.html').size is 100
PASS new File([new Uint16Array(100)], 'world.html').size is 200
PASS new File([new Uint32Array(100)], 'world.html').size is 400
PASS new File([new Int8Array(100)], 'world.html').size is 100
PASS new File([new Int16Array(100)], 'world.html').size is 200
PASS new File([new Int32Array(100)], 'world.html').size is 400
PASS new File([new Float32Array(100)], 'world.html').size is 400
PASS new File([new Float64Array(100)], 'world.html').size is 800
PASS new File([new Float64Array(100), new Int32Array(100), new Uint8Array(100), new DataView(new ArrayBuffer(100))], 'world.html').size is 1400
PASS new File([new Blob([new Int32Array(100)]), new Uint8Array(100), new Float32Array(100), new DataView(new ArrayBuffer(100))], 'world.html').size is 1000
PASS new File([new Blob([new Int32Array(100)]), new File([new Uint16Array(100)], 'world.txt'), new Uint8Array(100), new Float32Array(100), new DataView(new ArrayBuffer(100))], 'world.html').size is 1200
PASS new File([(new DataView(new ArrayBuffer(100))).buffer], 'world.html').size is 100
PASS new File([(new Uint8Array(100)).buffer], 'world.html').size is 100
PASS new File([(new Uint8ClampedArray(100)).buffer], 'world.html').size is 100
PASS new File([(new Uint16Array(100)).buffer], 'world.html').size is 200
PASS new File([(new Uint32Array(100)).buffer], 'world.html').size is 400
PASS new File([(new Int8Array(100)).buffer], 'world.html').size is 100
PASS new File([(new Int16Array(100)).buffer], 'world.html').size is 200
PASS new File([(new Int32Array(100)).buffer], 'world.html').size is 400
PASS new File([(new Float32Array(100)).buffer], 'world.html').size is 400
PASS new File([(new Float64Array(100)).buffer], 'world.html').size is 800
PASS new File([(new Float64Array(100)).buffer, (new Int32Array(100)).buffer, (new Uint8Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer], 'world.html').size is 1400
PASS new File([new Blob([(new Int32Array(100)).buffer]), (new Uint8Array(100)).buffer, (new Float32Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer], 'world.html').size is 1000
PASS new File([new Blob([(new Int32Array(100)).buffer]), new File([new Uint16Array(100).buffer], 'world.txt'), (new Uint8Array(100)).buffer, (new Float32Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer], 'world.html').size is 1200
PASS new Blob([new Blob([new Int32Array(100)]), new File([new Uint16Array(100)], 'world.txt'), new Uint8Array(100), new Float32Array(100), new DataView(new ArrayBuffer(100))]).size is 1200
PASS new Blob([new Blob([(new Int32Array(100)).buffer]), new File([new Uint16Array(100).buffer], 'world.txt'), (new Uint8Array(100)).buffer, (new Float32Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).size is 1200
PASS successfullyParsed is true

TEST COMPLETE

