// META: global=window,worker
// META: title=Valid key
// META: script=resources/support.js
// Spec: https://w3c.github.io/IndexedDB/#key-construct
'use strict' ;
const valid_key = (desc, key) => {
async_test(t => {
let db;
const open_rq = createdb(t);
open_rq.onupgradeneeded = t.step_func(e => {
db = e.target.result;
const store = db.createObjectStore(
'store' );
assert_true(store.add(
'value' , key)
instanceof IDBRequest);
const store2 = db.createObjectStore(
'store2' , {
keyPath: [
'x' ,
'keypath' ],
});
assert_true(store2.add({x:
'v' , keypath: key})
instanceof IDBRequest);
});
open_rq.onsuccess = t.step_func(e => {
const rq =
db.transaction(
'store' ,
'readonly' ).objectStore(
'store' ).get(key);
rq.onsuccess = t.step_func(e => {
assert_equals(e.target.result,
'value' );
const rq2 =
db.transaction(
'store2' ,
'readonly' ).objectStore(
'store2' ).get([
'v' , key
]);
rq2.onsuccess = t.step_func(e => {
assert_equals(e.target.result.x,
'v' );
assert_key_equals(e.target.result.keypath, key);
t.done();
});
});
});
},
'Valid key - ' + desc);
};
// Date
valid_key(
'new Date()' ,
new Date());
valid_key(
'new Date(0)' ,
new Date(
0 ));
// Array
valid_key(
'[]' , []);
valid_key(
'new Array()' ,
new Array());
valid_key(
'["undefined"]' , [
'undefined' ]);
// Float
valid_key(
'Infinity' , Infinity);
valid_key(
'-Infinity' , -Infinity);
valid_key(
'0' ,
0 );
valid_key(
'1.5' ,
1 .
5 );
valid_key(
'3e38' ,
3 e38);
valid_key(
'3e-38' ,
3 e38);
// String
valid_key(
'"foo"' ,
'foo' );
valid_key(
'"\\n"' ,
'\n' );
valid_key(
'""' ,
'' );
valid_key(
'"\\""' ,
'"' );
valid_key(
'"\\u1234"' ,
'\u1234' );
valid_key(
'"\\u0000"' ,
'\u0000' );
valid_key(
'"NaN"' ,
'NaN' );
Messung V0.5 in Prozent C=100 H=99 G=99
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland