| Index: LayoutTests/imported/web-platform-tests/IndexedDB/key_valid.html
|
| diff --git a/LayoutTests/imported/web-platform-tests/IndexedDB/key_valid.html b/LayoutTests/imported/web-platform-tests/IndexedDB/key_valid.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ec245cdc075d5cbe885e8494fee458f11edd13b2
|
| --- /dev/null
|
| +++ b/LayoutTests/imported/web-platform-tests/IndexedDB/key_valid.html
|
| @@ -0,0 +1,73 @@
|
| +<!DOCTYPE html>
|
| +<!-- Submitted from TestTWF Paris -->
|
| +<meta charset=utf-8">
|
| +<title>Valid key</title>
|
| +<link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-construct">
|
| +<link rel=assert title="A value is said to be a valid key if it is one of the following types: Array JavaScript objects [ECMA-262], DOMString [WEBIDL], Date [ECMA-262] or float [WEBIDL]. However Arrays are only valid keys if every item in the array is defined and is a valid key (i.e. sparse arrays can not be valid keys) and if the Array doesn't directly or indirectly contain itself. Any non-numeric properties are ignored, and thus does not affect whether the Array is a valid key. Additionally, if the value is of type float, it is only a valid key if it is not NaN, and if the value is of type Date it is only a valid key if its [[PrimitiveValue]] internal property, as defined by [ECMA-262], is not NaN. Conforming user agents must support all valid keys as keys.">
|
| +<link rel=author href="mailto:batifon@yahoo.fr" title="Baptiste Fontaine">
|
| +<script src=../../../resources/testharness.js></script>
|
| +<script src=../../../resources/testharnessreport.js></script>
|
| +<script src=support.js></script>
|
| +
|
| +<script>
|
| + function valid_key(desc, key) {
|
| + var db;
|
| + var t = async_test(document.title + " - " + desc);
|
| + var open_rq = createdb(t);
|
| +
|
| + open_rq.onupgradeneeded = function(e) {
|
| + db = e.target.result;
|
| +
|
| + store = db.createObjectStore("store");
|
| + assert_true(store.add('value', key) instanceof IDBRequest);
|
| +
|
| + store2 = db.createObjectStore("store2", { keyPath: ["x", "keypath"] });
|
| + assert_true(store2.add({ x: 'v', keypath: key }) instanceof IDBRequest);
|
| + };
|
| + open_rq.onsuccess = function(e) {
|
| + var rq = db.transaction("store")
|
| + .objectStore("store")
|
| + .get(key)
|
| + rq.onsuccess = t.step_func(function(e) {
|
| + assert_equals(e.target.result, 'value')
|
| + var rq = db.transaction("store2")
|
| + .objectStore("store2")
|
| + .get(['v', key])
|
| + rq.onsuccess = t.step_func(function(e) {
|
| + assert_object_equals(e.target.result, { x: 'v', keypath: key })
|
| + t.done()
|
| + })
|
| + })
|
| + }
|
| + }
|
| +
|
| + // 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' , 3e38 );
|
| + valid_key( '3e-38' , 3e38 );
|
| +
|
| + // 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" );
|
| +
|
| +</script>
|
| +
|
| +<div id=log></div>
|
|
|