1040 lines
38 KiB
Plaintext
1040 lines
38 KiB
Plaintext
Test structured clone permutations in IndexedDB.
|
|
|
|
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;
|
|
|
|
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 BigInt primitives
|
|
Testing: -12345678901234567890n
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS is(test_data, result) is true
|
|
Testing: -1n
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS is(test_data, result) is true
|
|
Testing: 0n
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS is(test_data, result) is true
|
|
Testing: 1n
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS is(test_data, result) is true
|
|
Testing: 12345678901234567890n
|
|
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 BigInt objects
|
|
Testing BigInt object: BigInt(-12345678901234567890)
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof result is "bigint"
|
|
PASS test_data.toString() is result.toString()
|
|
Testing BigInt object: BigInt(-1)
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof result is "bigint"
|
|
PASS test_data.toString() is result.toString()
|
|
Testing BigInt object: BigInt(0)
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof result is "bigint"
|
|
PASS test_data.toString() is result.toString()
|
|
Testing BigInt object: BigInt(1)
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof result is "bigint"
|
|
PASS test_data.toString() is result.toString()
|
|
Testing BigInt object: BigInt(-0)
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof result is "bigint"
|
|
PASS test_data.toString() is result.toString()
|
|
Testing BigInt object: BigInt('0x1fffffffffffff')
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof result is "bigint"
|
|
PASS test_data.toString() is result.toString()
|
|
|
|
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
|
|
Testing ImageData: { colorSpace: "srgb" }
|
|
canvas = document.createElement('canvas')
|
|
canvas.width = 8
|
|
canvas.height = 8
|
|
test_data = canvas.getContext('2d').getImageData(0, 0, 8, 8, { colorSpace: "srgb" })
|
|
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.colorSpace is test_data.colorSpace
|
|
PASS result data matches
|
|
Testing ImageData: { colorSpace: undefined }
|
|
canvas = document.createElement('canvas')
|
|
canvas.width = 8
|
|
canvas.height = 8
|
|
test_data = canvas.getContext('2d').getImageData(0, 0, 8, 8, { colorSpace: undefined })
|
|
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.colorSpace is test_data.colorSpace
|
|
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 = 'This is a test. This is only a test.'
|
|
blob = new Blob([test_content])
|
|
test_data = new File([blob], 'fileName')
|
|
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]"
|
|
PASS file1.name is file2.name
|
|
PASS String(file1.lastModifiedDate) is String(file2.lastModifiedDate)
|
|
PASS text2 is "This is a test. This is only a test."
|
|
|
|
Testing FileList
|
|
test_data = document.getElementById('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
|
|
|
|
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 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 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
|
|
value = new BigInt64Array([0x7fffffffffffffffn, 1n, 0n, -1n, -0x8000000000000000n])
|
|
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
|
|
value = new BigUint64Array([0n, 0xffffffffffffffffn])
|
|
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
|
|
|
|
Testing Arrays
|
|
test_data = []
|
|
test_data[0] = []
|
|
test_data[1] = [1, 2, 3]
|
|
test_data[10] = Object.assign(['foo', 'bar'], {10: true, 11: false, 20: 123, 21: 456, 30: null})
|
|
test_data[11] = Object.assign(['foo', 'bar'], {a: true, b: false, foo: 123, bar: 456, '': null})
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS test_data !== result is true
|
|
PASS typeof test_data is typeof result
|
|
PASS test_data.length === result.length is true
|
|
PASS arrayCompare(test_data[0], result[0]) is true
|
|
PASS arrayCompare(test_data[1], result[1]) is true
|
|
PASS arrayCompare(test_data[10], result[10]) is true
|
|
PASS arrayCompare(test_data[11], result[11]) is true
|
|
|
|
Testing Map
|
|
test_data = new Map([[1,2],[3,4]])
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof test_data is typeof result
|
|
PASS test_data.size is result.size
|
|
|
|
Testing Set
|
|
test_data = new Set([1,2,3,4])
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof test_data is typeof result
|
|
PASS test_data.size is result.size
|
|
PASS result.has(1) is true
|
|
PASS result.has(2) is true
|
|
PASS result.has(3) is true
|
|
PASS result.has(4) is true
|
|
|
|
Testing geometry types
|
|
Testing geometry type: new DOMMatrix()
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS test_data !== result is true
|
|
PASS typeof result is "object"
|
|
PASS Object.prototype.toString.call(test_data) is Object.prototype.toString.call(result)
|
|
PASS test_data.toString() is result.toString()
|
|
Testing geometry type: new DOMMatrixReadOnly()
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS test_data !== result is true
|
|
PASS typeof result is "object"
|
|
PASS Object.prototype.toString.call(test_data) is Object.prototype.toString.call(result)
|
|
PASS test_data.toString() is result.toString()
|
|
Testing geometry type: new DOMPoint()
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS test_data !== result is true
|
|
PASS typeof result is "object"
|
|
PASS Object.prototype.toString.call(test_data) is Object.prototype.toString.call(result)
|
|
PASS test_data.toString() is result.toString()
|
|
Testing geometry type: new DOMPointReadOnly()
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS test_data !== result is true
|
|
PASS typeof result is "object"
|
|
PASS Object.prototype.toString.call(test_data) is Object.prototype.toString.call(result)
|
|
PASS test_data.toString() is result.toString()
|
|
Testing geometry type: new DOMRect()
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS test_data !== result is true
|
|
PASS typeof result is "object"
|
|
PASS Object.prototype.toString.call(test_data) is Object.prototype.toString.call(result)
|
|
PASS test_data.toString() is result.toString()
|
|
Testing geometry type: new DOMRectReadOnly()
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS test_data !== result is true
|
|
PASS typeof result is "object"
|
|
PASS Object.prototype.toString.call(test_data) is Object.prototype.toString.call(result)
|
|
PASS test_data.toString() is result.toString()
|
|
Testing geometry type: new DOMQuad()
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS test_data !== result is true
|
|
PASS typeof result is "object"
|
|
PASS Object.prototype.toString.call(test_data) is Object.prototype.toString.call(result)
|
|
PASS test_data.toString() is result.toString()
|
|
|
|
Testing CryptoKey
|
|
promise = crypto.subtle.generateKey({ name: 'HMAC', hash: {name: 'SHA-512'}}, true, ['sign', 'verify']);
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
store.put(value, 'key')
|
|
store.get('key')
|
|
PASS typeof test_data is typeof result
|
|
PASS test_data.type is result.type
|
|
PASS test_data.extractable is result.extractable
|
|
PASS test_data.algorithm.toString() is result.algorithm.toString()
|
|
PASS arrayCompare(test_data.usages, result.usages) is true
|
|
|
|
Testing DOMException objects
|
|
Testing: new DOMException()
|
|
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()
|
|
Testing: new DOMException("message")
|
|
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()
|
|
Testing: new DOMException("message", "name")
|
|
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()
|
|
Testing: new DOMException("", "")
|
|
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()
|
|
|
|
Test types that can't be cloned:
|
|
transaction = db.transaction('storeName', 'readwrite')
|
|
store = transaction.objectStore('storeName')
|
|
Testing Error
|
|
Expecting exception from store.put(new Error, 'key')
|
|
PASS Exception was thrown.
|
|
PASS code is DOMException.DATA_CLONE_ERR
|
|
Exception message: The object can not be cloned.
|
|
Testing Function
|
|
Expecting exception from store.put(new Function, 'key')
|
|
PASS Exception was thrown.
|
|
PASS code is DOMException.DATA_CLONE_ERR
|
|
Exception message: The object can not be cloned.
|
|
Testing other host object types
|
|
Expecting exception from store.put(self, 'key')
|
|
PASS Exception was thrown.
|
|
PASS code is DOMException.DATA_CLONE_ERR
|
|
Exception message: The object can not be cloned.
|
|
Expecting exception from store.put(document, 'key')
|
|
PASS Exception was thrown.
|
|
PASS code is DOMException.DATA_CLONE_ERR
|
|
Exception message: The object can not be cloned.
|
|
Expecting exception from store.put(document.body, 'key')
|
|
PASS Exception was thrown.
|
|
PASS code is DOMException.DATA_CLONE_ERR
|
|
Exception message: The object can not be cloned.
|
|
PASS successfullyParsed is true
|
|
|
|
TEST COMPLETE
|
|
|