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

Side by Side Diff: LayoutTests/imported/web-platform-tests/IndexedDB/keygenerator-overflow.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 <meta charset="utf-8">
3 <title>Keygenerator overflow</title>
4 <link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
5 <link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html# key-generator-concept">
6 <link rel=assert title="When the current number of a key generator reaches above the value 2^53 (9007199254740992) any attempts to use the key generator to gene rate a new key will result in an error. It's still possible to insert records in to the object store by specifying an explicit key, however the only way to use a key generator again for the object store is to delete the object store and crea te a new one.">
7 <script src="../../../resources/testharness.js"></script>
8 <script src="../../../resources/testharnessreport.js"></script>
9 <script src="support.js"></script>
10
11 <script>
12
13 var db,
14 t = async_test(document.title, {timeout: 10000}),
15 overflow_error_fired = false,
16 objects = [9007199254740991, null, "error", 2, "error" ],
17 expected_keys = [2, 9007199254740991, 9007199254740992];
18
19 var open_rq = createdb(t);
20 open_rq.onupgradeneeded = function(e) {
21 db = e.target.result;
22 var objStore = db.createObjectStore("store", { keyPath: "id", autoIncrem ent: true });
23
24 for (var i = 0; i < objects.length; i++)
25 {
26 if (objects[i] === null)
27 {
28 objStore.add({});
29 }
30 else if (objects[i] === "error")
31 {
32 var rq = objStore.add({});
33 rq.onsuccess = fail(t, 'When "current number" overflows, error e vent is expected');
34 rq.onerror = t.step_func(function(e) {
35 overflow_error_fired = true;
36 assert_equals(e.target.error.name, "ConstraintError", "error name");
37 e.preventDefault();
38 e.stopPropagation();
39 });
40 }
41 else
42 objStore.add({ id: objects[i] });
43 }
44 };
45
46 open_rq.onsuccess = function(e) {
47 var actual_keys = [],
48 rq = db.transaction("store")
49 .objectStore("store")
50 .openCursor();
51
52 rq.onsuccess = t.step_func(function(e) {
53 var cursor = e.target.result;
54
55 if (cursor) {
56 actual_keys.push(cursor.key.valueOf());
57 cursor.continue();
58 }
59 else {
60 assert_true(overflow_error_fired, "error fired on 'current numbe r' overflow");
61 assert_object_equals(actual_keys, expected_keys, "keygenerator a rray");
62
63 t.done();
64 }
65 });
66 };
67
68 </script>
69
70 <div id="log"></div>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698