test_objectStore_getAllKeys.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /**
  2. * Any copyright is dedicated to the Public Domain.
  3. * http://creativecommons.org/publicdomain/zero/1.0/
  4. */
  5. var testGenerator = testSteps();
  6. function testSteps() {
  7. const dbName = this.window ?
  8. window.location.pathname :
  9. "test_objectStore_getAllKeys";
  10. const dbVersion = 1;
  11. const objectStoreName = "foo";
  12. const keyCount = 200;
  13. let request = indexedDB.open(dbName, dbVersion);
  14. request.onerror = errorHandler;
  15. request.onupgradeneeded = grabEventAndContinueHandler;
  16. request.onsuccess = unexpectedSuccessHandler;
  17. let event = yield undefined;
  18. info("Creating database");
  19. let db = event.target.result;
  20. let objectStore = db.createObjectStore(objectStoreName);
  21. for (let i = 0; i < keyCount; i++) {
  22. objectStore.add(true, i);
  23. }
  24. request.onupgradeneeded = unexpectedSuccessHandler;
  25. request.onsuccess = grabEventAndContinueHandler;
  26. event = yield undefined;
  27. db = event.target.result;
  28. objectStore = db.transaction(objectStoreName).objectStore(objectStoreName);
  29. info("Getting all keys");
  30. objectStore.getAllKeys().onsuccess = grabEventAndContinueHandler;
  31. event = yield undefined;
  32. ok(Array.isArray(event.target.result), "Got an array result");
  33. is(event.target.result.length, keyCount, "Got correct array length");
  34. let match = true;
  35. for (let i = 0; i < keyCount; i++) {
  36. if (event.target.result[i] != i) {
  37. match = false;
  38. break;
  39. }
  40. }
  41. ok(match, "Got correct keys");
  42. info("Getting all keys with key range");
  43. let keyRange = IDBKeyRange.bound(10, 20, false, true);
  44. objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
  45. event = yield undefined;
  46. ok(Array.isArray(event.target.result), "Got an array result");
  47. is(event.target.result.length, 10, "Got correct array length");
  48. match = true;
  49. for (let i = 10; i < 20; i++) {
  50. if (event.target.result[i - 10] != i) {
  51. match = false;
  52. break;
  53. }
  54. }
  55. ok(match, "Got correct keys");
  56. info("Getting all keys with unmatched key range");
  57. keyRange = IDBKeyRange.bound(10000, 200000);
  58. objectStore.getAllKeys(keyRange).onsuccess = grabEventAndContinueHandler;
  59. event = yield undefined;
  60. ok(Array.isArray(event.target.result), "Got an array result");
  61. is(event.target.result.length, 0, "Got correct array length");
  62. info("Getting all keys with limit");
  63. objectStore.getAllKeys(null, 5).onsuccess = grabEventAndContinueHandler;
  64. event = yield undefined;
  65. ok(Array.isArray(event.target.result), "Got an array result");
  66. is(event.target.result.length, 5, "Got correct array length");
  67. match = true;
  68. for (let i = 0; i < 5; i++) {
  69. if (event.target.result[i] != i) {
  70. match = false;
  71. break;
  72. }
  73. }
  74. ok(match, "Got correct keys");
  75. info("Getting all keys with key range and limit");
  76. keyRange = IDBKeyRange.bound(10, 20, false, true);
  77. objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
  78. event = yield undefined;
  79. ok(Array.isArray(event.target.result), "Got an array result");
  80. is(event.target.result.length, 5, "Got correct array length");
  81. match = true;
  82. for (let i = 10; i < 15; i++) {
  83. if (event.target.result[i - 10] != i) {
  84. match = false;
  85. break;
  86. }
  87. }
  88. ok(match, "Got correct keys");
  89. info("Getting all keys with unmatched key range and limit");
  90. keyRange = IDBKeyRange.bound(10000, 200000);
  91. objectStore.getAllKeys(keyRange, 5).onsuccess = grabEventAndContinueHandler;
  92. event = yield undefined;
  93. ok(Array.isArray(event.target.result), "Got an array result");
  94. is(event.target.result.length, 0, "Got correct array length");
  95. finishTest();
  96. yield undefined;
  97. }