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 Skipping test Testing File Skipping test Testing FileList Skipping test 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 Expecting exception from store.put(new Function, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR Other host object types: Expecting exception from store.put(self, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR Expecting exception from store.put(document, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR Expecting exception from store.put(document.body, 'key') PASS Exception was thrown. PASS code is DOMException.DATA_CLONE_ERR PASS successfullyParsed is true TEST COMPLETE