Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Side by Side Diff: LayoutTests/imported/web-platform-tests/IndexedDB/key_invalid.htm

Issue 560893005: First checked-in import of the W3C's test suites. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: add new expectations for newly failing w3c tests Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <!-- Submitted from TestTWF Paris -->
3 <meta charset=utf-8">
4 <title>Invalid key</title>
5 <link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html# key-construct">
6 <link rel=assert title="A value is said to be a valid key if it is one of the fo llowing types: Array JavaScript objects [ECMA-262], DOMString [WEBIDL], Date [EC MA-262] or float [WEBIDL]. However Arrays are only valid keys if every item in t he 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-numeri c 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 i s not NaN, and if the value is of type Date it is only a valid key if its [[Prim itiveValue]] internal property, as defined by [ECMA-262], is not NaN. Conforming user agents must support all valid keys as keys.">
7 <!-- original author -->
8 <link rel=author href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
9 <!-- some additions by Baptiste Fontaine (batifon@yahoo.fr) -->
10 <script src=../../../resources/testharness.js></script>
11 <script src=../../../resources/testharnessreport.js></script>
12 <script src=support.js></script>
13
14 <script>
15 var db = createdb_for_multiple_tests(),
16 // cache for ObjectStores
17 objStore = null,
18 objStore2 = null;
19
20 function invalid_key(desc, key) {
21 var t = async_test(document.title + " - " + desc);
22
23 // set the current test, and run it
24 db.setTest(t).onupgradeneeded = function(e) {
25 objStore = objStore || e.target.result.createObjectStore("store");
26 assert_throws('DataError', function() {
27 objStore.add("value", key);
28 });
29
30 objStore2 = objStore2 || e.target.result.createObjectStore("store2", { keyPath: ["x", "keypath"] });
31 assert_throws('DataError', function() {
32 objStore2.add({ x: "value", keypath: key });
33 });
34
35 this.done();
36 };
37 }
38
39 var fake_array = {
40 length : 0,
41 constructor : Array
42 };
43
44 var ArrayClone = function(){};
45 ArrayClone.prototype = Array;
46 var ArrayClone_instance = new ArrayClone();
47
48 // booleans
49 invalid_key( 'true' , true );
50 invalid_key( 'false' , false );
51
52 // null/NaN/undefined
53 invalid_key( 'null' , null );
54 invalid_key( 'NaN' , NaN );
55 invalid_key( 'undefined' , undefined );
56 invalid_key( 'undefined2');
57
58 // functions
59 invalid_key( 'function() {}', function(){} );
60
61 // objects
62 invalid_key( '{}' , {} );
63 invalid_key( '{ obj: 1 }' , { obj: 1 });
64 invalid_key( 'Math' , Math );
65 invalid_key( 'window' , window );
66 invalid_key( '{length:0,constructor:Array}' , fake_array );
67 invalid_key( 'Array clone’s instance' , ArrayClone_instance );
68 invalid_key( 'Array (object)' , Array );
69 invalid_key( 'String (object)' , String );
70 invalid_key( 'new String()' , new String() );
71 invalid_key( 'new Number()' , new Number() );
72 invalid_key( 'new Boolean()' , new Boolean() );
73
74 // arrays
75 invalid_key( '[{}]' , [{}] );
76 invalid_key( '[[], [], [], [[ Date ]]]' , [ [], [], [], [[ Date ]] ] );
77 invalid_key( '[undefined]' , [undefined] );
78 invalid_key( '[,1]' , [,1] );
79
80 invalid_key( 'document.getElements'
81 +'ByTagName("script")' , document.getElementsByTagName("scr ipt") );
82
83 // dates
84 invalid_key( 'new Date(NaN)' , new Date(NaN) );
85 invalid_key( 'new Date(Infinity)' , new Date(Infinity) );
86
87 // regexes
88 invalid_key( '/foo/' , /foo/ );
89 invalid_key( 'new RegExp()' , new RegExp() );
90
91 var sparse = [];
92 sparse[10] = "hei";
93 invalid_key('sparse array', sparse);
94
95 var sparse2 = [];
96 sparse2[0] = 1;
97 sparse2[""] = 2;
98 sparse2[2] = 3;
99 invalid_key('sparse array 2', sparse2);
100
101 invalid_key('[[1], [3], [7], [[ sparse array ]]]', [ [1], [3], [7], [[ spars e2 ]] ]);
102
103 // sparse3
104 invalid_key( '[1,2,3,,]', [1,2,3,,] );
105
106 var recursive = [];
107 recursive.push(recursive);
108 invalid_key('array directly contains self', recursive);
109
110 var recursive2 = [];
111 recursive2.push([recursive2]);
112 invalid_key('array indirectly contains self', recursive2);
113
114 var recursive3 = [recursive];
115 invalid_key('array member contains self', recursive3);
116
117 </script>
118
119 <div id=log></div>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698