Test structured clone permutations in IndexedDB. File/FileList tests require DumpRenderTree. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB; dbname = "structured-clone.html" indexedDB.deleteDatabase(dbname) indexedDB.open(dbname) store = db.createObjectStore('storeName') This index is not used, but evaluating key path on each put() call will exercise (de)serialization: store.createIndex('indexName', 'dummyKeyPath') Running tests... Testing: undefined transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: null transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing boolean primitives Testing: true transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: false transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing number primitives Testing: NaN transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: -Infinity transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: -Number.MAX_VALUE transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: -0xffffffff transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: -0x80000000 transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: -0x7fffffff transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: -1 transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: -Number.MIN_VALUE transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: -0 transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: 0 transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: 1 transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: Number.MIN_VALUE transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: 0x7fffffff transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: 0x80000000 transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: 0xffffffff transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: Number.MAX_VALUE transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: Infinity transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing string primitives Testing: '' transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: 'this is a sample string' transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing: 'null(\0)' transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS is(test_data, result) is true Testing Boolean objects Testing: new Boolean(true) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Boolean(false) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing Number objects Testing: new Number(NaN) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Number(-Infinity) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Number(-Number.MAX_VALUE) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Number(-Number.MIN_VALUE) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Number(-0) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Number(0) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Number(Number.MIN_VALUE) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Number(Number.MAX_VALUE) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Number(Infinity) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing String objects Testing: new String() transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new String('this is a sample string') transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new String('null(\0)') transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing Date objects Testing: new Date(-1e13) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(-1e12) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(-1e9) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(-1e6) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(-1e3) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(0) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(1e3) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(1e6) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(1e9) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(1e12) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing: new Date(1e13) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS typeof result is "object" PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data !== result is true PASS result.toString() is test_data.toString() PASS is(test_data.valueOf(), result.valueOf()) is true Testing RegExp objects Testing RegExp: new RegExp() transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing RegExp: /abc/ transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing RegExp: /abc/g transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing RegExp: /abc/i transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing RegExp: /abc/gi transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing RegExp: /abc/m transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing RegExp: /abc/mg transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing RegExp: /abc/mi transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing RegExp: /abc/mgi transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object RegExp]" PASS result.toString() is test_data.toString() Testing ImageData canvas = document.createElement('canvas') canvas.width = 8 canvas.height = 8 test_data = canvas.getContext('2d').getImageData(0, 0, 8, 8) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object ImageData]" PASS result.width is test_data.width PASS result.height is test_data.height PASS result.data.length is test_data.data.length PASS result data matches Testing Blob PASS FileReader != null is true test_content = 'This is a test. This is only a test.' test_data = new Blob([test_content]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object Blob]" PASS result.size is test_data.size PASS result.type is test_data.type PASS text is "This is a test. This is only a test." Testing File test_content = fileInput.files[0] transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS file1 !== file2 is true PASS Object.prototype.toString.call(file1) is "[object File]" PASS Object.prototype.toString.call(file2) is "[object File]" file1.size: 102 PASS file1.size is file2.size file1.type: text/html PASS file1.type is file2.type file1.name: test-data.html PASS file1.name is file2.name PASS String(file1.lastModifiedDate) is String(file2.lastModifiedDate) PASS text2 is "\nThis is some test data\n

Test data!

\n

Get your test data here!\n" Testing FileList test_content = fileInput.files transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is "[object FileList]" PASS result.length is test_data.length comparing file[0] PASS file1 !== file2 is true PASS Object.prototype.toString.call(file1) is "[object File]" PASS Object.prototype.toString.call(file2) is "[object File]" file1.size: 102 PASS file1.size is file2.size file1.type: text/html PASS file1.type is file2.type file1.name: test-data.html PASS file1.name is file2.name PASS String(file1.lastModifiedDate) is String(file2.lastModifiedDate) PASS text2 is "\nThis is some test data\n

Test data!

\n

Get your test data here!\n" comparing file[1] PASS file1 !== file2 is true PASS Object.prototype.toString.call(file1) is "[object File]" PASS Object.prototype.toString.call(file2) is "[object File]" file1.size: 502 PASS file1.size is file2.size file1.type: text/plain PASS file1.type is file2.type file1.name: test-data.txt PASS file1.name is file2.name PASS String(file1.lastModifiedDate) is String(file2.lastModifiedDate) PASS text2 is "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet dolor id urna eleifend aliquet. Nulla vel dolor ipsum. Aliquam ut turpis nisl, in vulputate sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed congue magna vitae dolor feugiat vehicula. Sed volutpat, tellus vel varius vestibulum, purus quam mollis sapien, in condimentum leo neque sed nulla. Nunc quis porta elit. Pellentesque erat lectus, ultricies a lobortis id, faucibus id quam.\n" Testing Array test_data = [] test_data[0] = 'foo' test_data[1] = 'bar' test_data[10] = true test_data[11] = false test_data[20] = 123 test_data[21] = 456 test_data[30] = null transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS test_data.length === result.length is true PASS test_data[0] is result[0] PASS test_data[1] is result[1] PASS test_data[10] is result[10] PASS test_data[11] is result[11] PASS test_data[20] is result[20] PASS test_data[21] is result[21] PASS test_data[30] is result[30] Testing Object test_data = [] test_data[0] = 'foo' test_data[1] = 'bar' test_data['a'] = true test_data['b'] = false test_data['foo'] = 123 test_data['bar'] = 456 test_data[''] = null transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS arrayCompare(Object.keys(result).sort(), Object.keys(test_data).sort()) is true PASS test_data["0"] is result["0"] PASS test_data["1"] is result["1"] PASS test_data["a"] is result["a"] PASS test_data["b"] is result["b"] PASS test_data["foo"] is result["foo"] PASS test_data["bar"] is result["bar"] PASS test_data[""] is result[""] Testing TypedArray value = new Uint8Array([]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true value = new Uint8Array([0, 1, 254, 255]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true value = new Uint16Array([0x0000, 0x0001, 0xFFFE, 0xFFFF]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true value = new Uint32Array([0x00000000, 0x00000001, 0xFFFFFFFE, 0xFFFFFFFF]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true value = new Int8Array([0, 1, 254, 255]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true value = new Int16Array([0x0000, 0x0001, 0xFFFE, 0xFFFF]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true value = new Int32Array([0x00000000, 0x00000001, 0xFFFFFFFE, 0xFFFFFFFF]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true value = new Uint8ClampedArray([0, 1, 254, 255]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true value = new Float32Array([-Infinity, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, Infinity, NaN]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true PASS is(test_data[4], result[4]) is true PASS is(test_data[5], result[5]) is true PASS is(test_data[6], result[6]) is true PASS is(test_data[7], result[7]) is true PASS is(test_data[8], result[8]) is true PASS is(test_data[9], result[9]) is true value = new Float64Array([-Infinity, -Number.MAX_VALUE, -Number.MIN_VALUE, 0, Number.MIN_VALUE, Number.MAX_VALUE, Infinity, NaN]) transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') store.put(value, 'key') store.get('key') PASS test_data !== result is true PASS Object.prototype.toString.call(result) is Object.prototype.toString.call(test_data) PASS test_data.length === result.length is true PASS is(test_data[0], result[0]) is true PASS is(test_data[1], result[1]) is true PASS is(test_data[2], result[2]) is true PASS is(test_data[3], result[3]) is true PASS is(test_data[4], result[4]) is true PASS is(test_data[5], result[5]) is true PASS is(test_data[6], result[6]) is true PASS is(test_data[7], result[7]) is true Test types that can't be cloned: transaction = db.transaction('storeName', 'readwrite') store = transaction.objectStore('storeName') Other JavaScript object types: Expecting exception from store.put(new Error, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned. Expecting exception from store.put(new Function, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned. Other host object types: Expecting exception from store.put(self, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned. Expecting exception from store.put(document, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned. Expecting exception from store.put(document.body, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR Exception message: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned. PASS successfullyParsed is true TEST COMPLETE