// META: global=window,worker // META: title=IDBObjectStore.count() // META: script=resources/support.js 'use strict'; async_test(t => { let db; let open_rq = createdb(t); open_rq.onupgradeneeded = function(e) { db = e.target.result; let store = db.createObjectStore("store"); for(let i = 0; i < 10; i++) { store.add({ data: "data" + i }, i); } } open_rq.onsuccess = function(e) { let rq = db.transaction("store", "readonly") .objectStore("store") .count(); rq.onsuccess = t.step_func(function(e) { assert_equals(e.target.result, 10); t.done(); }); } }, "Returns the number of records in the object store "); async_test(t => { let db; let open_rq = createdb(t); open_rq.onupgradeneeded = function(e) { db = e.target.result; let store = db.createObjectStore("store"); for(let i = 0; i < 10; i++) { store.add({ data: "data" + i }, i); } } open_rq.onsuccess = function(e) { let rq = db.transaction("store", "readonly") .objectStore("store") .count(IDBKeyRange.bound(5, 20)); rq.onsuccess = t.step_func(function(e) { assert_equals(e.target.result, 5); t.done(); }); } }, "Returns the number of records that have keys within the range "); async_test(t => { let db createdb(t).onupgradeneeded = function(e) { db = e.target.result let store = db.createObjectStore("store", { keyPath: "k" }) for (let i = 0; i < 5; i++) store.add({ k: "key_" + i }); store.count("key_2").onsuccess = t.step_func(function(e) { assert_equals(e.target.result, 1, "count(key_2)") store.count("key_").onsuccess = t.step_func(function(e) { assert_equals(e.target.result, 0, "count(key_)") t.done() }) }) } }, "Returns the number of records that have keys with the key"); async_test(t => { let db, ostore; let open_rq = createdb(t); open_rq.onupgradeneeded = function (event) { db = event.target.result; ostore = db.createObjectStore("store", {keyPath:"pKey"}); db.deleteObjectStore("store"); assert_throws_dom("InvalidStateError", function(){ ostore.count(); }); t.done(); } }, "If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError ");