summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/IndexedDB/idbindex_count.any.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:13:27 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:13:27 +0000
commit40a355a42d4a9444dc753c04c6608dade2f06a23 (patch)
tree871fc667d2de662f171103ce5ec067014ef85e61 /testing/web-platform/tests/IndexedDB/idbindex_count.any.js
parentAdding upstream version 124.0.1. (diff)
downloadfirefox-upstream/125.0.1.tar.xz
firefox-upstream/125.0.1.zip
Adding upstream version 125.0.1.upstream/125.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/IndexedDB/idbindex_count.any.js')
-rw-r--r--testing/web-platform/tests/IndexedDB/idbindex_count.any.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/testing/web-platform/tests/IndexedDB/idbindex_count.any.js b/testing/web-platform/tests/IndexedDB/idbindex_count.any.js
new file mode 100644
index 0000000000..25d743e422
--- /dev/null
+++ b/testing/web-platform/tests/IndexedDB/idbindex_count.any.js
@@ -0,0 +1,108 @@
+// META: global=window,worker
+// META: title=IDBIndex.count()
+// META: script=resources/support.js
+// @author Microsoft <https://www.microsoft.com>
+// @author Odin Hørthe Omdal <mailto:odinho@opera.com>
+// @author Intel <http://www.intel.com>
+
+'use_strict';
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const store = db.createObjectStore("store", { autoIncrement: true });
+ store.createIndex("index", "indexedProperty");
+ for (let i = 0; i < 10; i++) {
+ store.add({ indexedProperty: "data" + i });
+ }
+ };
+
+ open_rq.onsuccess = function(e) {
+ const rq = db.transaction("store", "readonly", { durability: 'relaxed' })
+ .objectStore("store")
+ .index("index")
+ .count();
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, 10);
+ t.done();
+ });
+ };
+}, 'count() returns the number of records in the index');
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const store = db.createObjectStore("store", { autoIncrement: true });
+ store.createIndex("index", "indexedProperty");
+
+ for (let i = 0; i < 10; i++) {
+ store.add({ indexedProperty: "data" + i });
+ }
+ };
+
+ open_rq.onsuccess = function(e) {
+ const rq = db.transaction("store", "readonly", { durability: 'relaxed' })
+ .objectStore("store")
+ .index("index")
+ .count(IDBKeyRange.bound('data0', 'data4'));
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, 5);
+ t.done();
+ });
+ };
+}, 'count() returns the number of records that have keys within the range');
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+
+ const store = db.createObjectStore("store", { autoIncrement: true });
+ store.createIndex("myindex", "idx");
+
+ for (let i = 0; i < 10; i++)
+ store.add({ idx: "data_" + (i%2) });
+
+ store.index("myindex").count("data_0").onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, 5, "count(data_0)");
+ t.done();
+ });
+ };
+}, 'count() returns the number of records that have keys with the key');
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ const store = db.createObjectStore("store", { autoIncrement: true });
+ store.createIndex("index", "indexedProperty");
+
+ for (let i = 0; i < 10; i++) {
+ store.add({ indexedProperty: "data" + i });
+ }
+ };
+
+ open_rq.onsuccess = function(e) {
+ const index = db.transaction("store", "readonly", { durability: 'relaxed' })
+ .objectStore("store")
+ .index("index");
+
+ assert_throws_dom("DataError", function () {
+ index.count(NaN);
+ });
+
+ t.done();
+ };
+}, 'count() throws DataError when using invalid key');