<!doctype html>
<meta charset=utf-8>
<title>IndexedDB: IDBIObjectStore getAllKeys() uses [EnforceRange]</title>
<link rel="help" href="https://w3c.github.io/IndexedDB/#object-store-interface">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>
<script>

indexeddb_test(
  (t, db) => {
    const store = db.createObjectStore('store');
  },
  (t, db) => {
    const tx = db.transaction('store');
    const store = tx.objectStore('store');
    [NaN, Infinity, -Infinity, -1, -Number.MAX_SAFE_INTEGER].forEach(count => {
      assert_throws(TypeError(), () => { store.getAllKeys(null, count); },
                    `getAllKeys with count ${count} count should throw TypeError`);
    });
    t.done();
  },
  `IDBObjectStore.getAllKeys() uses [EnforceRange]`
);
</script>
