Test the Blob constructor.

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


PASS (new Blob()) instanceof window.Blob is true
PASS (new Blob([])) instanceof window.Blob is true
PASS (new Blob(['hello'])) instanceof window.Blob is true
PASS (new Blob(['hello'], {})) instanceof window.Blob is true
PASS (new Blob(['hello'], {type:'text/html'})) instanceof window.Blob is true
PASS (new Blob(['hello'], {type:'text/html', endings:'native'})) instanceof window.Blob is true
PASS (new Blob(['hello'], {type:'text/html', endings:'transparent'})) instanceof window.Blob is true
PASS new Blob('hello') threw exception TypeError: Value is not a sequence.
PASS new Blob(0) threw exception TypeError: Value is not a sequence.
PASS (new Blob([])) instanceof window.Blob is true
PASS (new Blob(['stringPrimitive'])) instanceof window.Blob is true
PASS (new Blob([String('stringObject')])) instanceof window.Blob is true
PASS (new Blob([new Blob])) instanceof window.Blob is true
PASS (new Blob([new Blob([new Blob])])) instanceof window.Blob is true
PASS (new Blob([12])).size is 2
PASS (new Blob([[]])).size is 0
PASS (new Blob([{}])).size is 15
PASS (new Blob([document])).size is 21
PASS (new Blob([toStringingObj])).size is 8
PASS new Blob([throwingObj]) threw exception Error.
PASS (new Blob([], {unknownKey:'value'})) instanceof window.Blob is true
PASS new Blob([], {endings:'illegalValue'}) threw exception TypeError: Type error.
PASS new Blob([], {endings:throwingObj}) threw exception Error.
PASS new Blob([], {type:throwingObj}) threw exception Error.
PASS new Blob([], {endings:throwingObj1, type:throwingObj2}) threw exception Error 1.
PASS new Blob([], {type:throwingObj2, endings:throwingObj1}) threw exception Error 1.
PASS new Blob([], {type:throwingObj2, endings:'illegal'}) threw exception TypeError: Type error.
PASS (new Blob([], null)) instanceof window.Blob is true
PASS (new Blob([], undefined)) instanceof window.Blob is true
PASS (new Blob([], 123)) instanceof window.Blob threw exception TypeError: Type error.
PASS (new Blob([], 123.4)) instanceof window.Blob threw exception TypeError: Type error.
PASS (new Blob([], true)) instanceof window.Blob threw exception TypeError: Type error.
PASS (new Blob([], 'abc')) instanceof window.Blob threw exception TypeError: Type error.
PASS (new Blob([], [])) instanceof window.Blob is true
PASS (new Blob([], /abc/)) instanceof window.Blob is true
PASS (new Blob([], function () {})) instanceof window.Blob is true
PASS (new Blob([], {type:'text/html'})).type is 'text/html'
PASS (new Blob([], {type:'text/html'})).size is 0
PASS (new Blob([], {type:'text/plain;charset=UTF-8'})).type is 'text/plain;charset=utf-8'
PASS (new Blob([], {type:'TeXt/pLaIn'})).type is 'text/plain'
PASS (new Blob([], {type:'text\rplain'})).type is ''
PASS (new Blob([], {type:'text\nplain'})).type is ''
PASS (new Blob([], {type:'helloî'})).type is ''
PASS (new Blob([], {type:'\0'})).type is ''
PASS window.Blob.length is 0
PASS new Blob([new DataView(new ArrayBuffer(100))]).size is 100
PASS new Blob([new Uint8Array(100)]).size is 100
PASS new Blob([new Uint8ClampedArray(100)]).size is 100
PASS new Blob([new Uint16Array(100)]).size is 200
PASS new Blob([new Uint32Array(100)]).size is 400
PASS new Blob([new Int8Array(100)]).size is 100
PASS new Blob([new Int16Array(100)]).size is 200
PASS new Blob([new Int32Array(100)]).size is 400
PASS new Blob([new Float32Array(100)]).size is 400
PASS new Blob([new Float64Array(100)]).size is 800
PASS new Blob([new Float64Array(100), new Int32Array(100), new Uint8Array(100), new DataView(new ArrayBuffer(100))]).size is 1400
PASS new Blob([new Blob([new Int32Array(100)]), new Uint8Array(100), new Float32Array(100), new DataView(new ArrayBuffer(100))]).size is 1000
PASS new Blob([(new DataView(new ArrayBuffer(100))).buffer]).size is 100
PASS new Blob([(new Uint8Array(100)).buffer]).size is 100
PASS new Blob([(new Uint8ClampedArray(100)).buffer]).size is 100
PASS new Blob([(new Uint16Array(100)).buffer]).size is 200
PASS new Blob([(new Uint32Array(100)).buffer]).size is 400
PASS new Blob([(new Int8Array(100)).buffer]).size is 100
PASS new Blob([(new Int16Array(100)).buffer]).size is 200
PASS new Blob([(new Int32Array(100)).buffer]).size is 400
PASS new Blob([(new Float32Array(100)).buffer]).size is 400
PASS new Blob([(new Float64Array(100)).buffer]).size is 800
PASS new Blob([(new Float64Array(100)).buffer, (new Int32Array(100)).buffer, (new Uint8Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).size is 1400
PASS new Blob([new Blob([(new Int32Array(100)).buffer]), (new Uint8Array(100)).buffer, (new Float32Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).size is 1000
PASS successfullyParsed is true

TEST COMPLETE

