test_getAll.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  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. {
  8. const name = this.window ? window.location.pathname : "Splendid Test";
  9. const values = [ "a", "1", 1, "foo", 300, true, false, 4.5, null ];
  10. let request = indexedDB.open(name, 1);
  11. request.onerror = errorHandler;
  12. request.onupgradeneeded = grabEventAndContinueHandler;
  13. let event = yield undefined;
  14. let db = event.target.result;
  15. let objectStore = db.createObjectStore("foo", { autoIncrement: true });
  16. request.onsuccess = grabEventAndContinueHandler;
  17. request = objectStore.mozGetAll();
  18. request.onerror = errorHandler;
  19. request.onsuccess = grabEventAndContinueHandler;
  20. event = yield undefined;
  21. is(event.target.result instanceof Array, true, "Got an array object");
  22. is(event.target.result.length, 0, "No elements");
  23. let addedCount = 0;
  24. for (let i in values) {
  25. request = objectStore.add(values[i]);
  26. request.onerror = errorHandler;
  27. request.onsuccess = function(event) {
  28. if (++addedCount == values.length) {
  29. executeSoon(function() { testGenerator.next(); });
  30. }
  31. }
  32. }
  33. yield undefined;
  34. yield undefined;
  35. request = db.transaction("foo").objectStore("foo").mozGetAll();
  36. request.onerror = errorHandler;
  37. request.onsuccess = grabEventAndContinueHandler;
  38. event = yield undefined;
  39. is(event.target.result instanceof Array, true, "Got an array object");
  40. is(event.target.result.length, values.length, "Same length");
  41. for (let i in event.target.result) {
  42. is(event.target.result[i], values[i], "Same value");
  43. }
  44. request = db.transaction("foo").objectStore("foo").mozGetAll(null, 5);
  45. request.onerror = errorHandler;
  46. request.onsuccess = grabEventAndContinueHandler;
  47. event = yield undefined;
  48. is(event.target.result instanceof Array, true, "Got an array object");
  49. is(event.target.result.length, 5, "Correct length");
  50. for (let i in event.target.result) {
  51. is(event.target.result[i], values[i], "Same value");
  52. }
  53. let keyRange = IDBKeyRange.bound(1, 9);
  54. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
  55. request.onerror = errorHandler;
  56. request.onsuccess = grabEventAndContinueHandler;
  57. event = yield undefined;
  58. is(event.target.result instanceof Array, true, "Got an array object");
  59. is(event.target.result.length, values.length, "Correct length");
  60. for (let i in event.target.result) {
  61. is(event.target.result[i], values[i], "Same value");
  62. }
  63. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 0);
  64. request.onerror = errorHandler;
  65. request.onsuccess = grabEventAndContinueHandler;
  66. event = yield undefined;
  67. is(event.target.result instanceof Array, true, "Got an array object");
  68. is(event.target.result.length, values.length, "Correct length");
  69. for (let i in event.target.result) {
  70. is(event.target.result[i], values[i], "Same value");
  71. }
  72. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, null);
  73. request.onerror = errorHandler;
  74. request.onsuccess = grabEventAndContinueHandler;
  75. event = yield undefined;
  76. is(event.target.result instanceof Array, true, "Got an array object");
  77. is(event.target.result.length, values.length, "Correct length");
  78. for (let i in event.target.result) {
  79. is(event.target.result[i], values[i], "Same value");
  80. }
  81. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, undefined);
  82. request.onerror = errorHandler;
  83. request.onsuccess = grabEventAndContinueHandler;
  84. event = yield undefined;
  85. is(event.target.result instanceof Array, true, "Got an array object");
  86. is(event.target.result.length, values.length, "Correct length");
  87. for (let i in event.target.result) {
  88. is(event.target.result[i], values[i], "Same value");
  89. }
  90. keyRange = IDBKeyRange.bound(4, 7);
  91. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
  92. request.onerror = errorHandler;
  93. request.onsuccess = grabEventAndContinueHandler;
  94. event = yield undefined;
  95. is(event.target.result instanceof Array, true, "Got an array object");
  96. is(event.target.result.length, 4, "Correct length");
  97. for (let i in event.target.result) {
  98. is(event.target.result[i], values[parseInt(i) + 3], "Same value");
  99. }
  100. // Get should take a key range also but it doesn't return an array.
  101. request = db.transaction("foo").objectStore("foo").get(keyRange);
  102. request.onerror = errorHandler;
  103. request.onsuccess = grabEventAndContinueHandler;
  104. event = yield undefined;
  105. is(event.target.result instanceof Array, false, "Not an array object");
  106. is(event.target.result, values[3], "Correct value");
  107. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 2);
  108. request.onerror = errorHandler;
  109. request.onsuccess = grabEventAndContinueHandler;
  110. event = yield undefined;
  111. is(event.target.result instanceof Array, true, "Got an array object");
  112. is(event.target.result.length, 2, "Correct length");
  113. for (let i in event.target.result) {
  114. is(event.target.result[i], values[parseInt(i) + 3], "Same value");
  115. }
  116. keyRange = IDBKeyRange.bound(4, 7);
  117. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 50);
  118. request.onerror = errorHandler;
  119. request.onsuccess = grabEventAndContinueHandler;
  120. event = yield undefined;
  121. is(event.target.result instanceof Array, true, "Got an array object");
  122. is(event.target.result.length, 4, "Correct length");
  123. for (let i in event.target.result) {
  124. is(event.target.result[i], values[parseInt(i) + 3], "Same value");
  125. }
  126. keyRange = IDBKeyRange.bound(4, 7);
  127. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange, 0);
  128. request.onerror = errorHandler;
  129. request.onsuccess = grabEventAndContinueHandler;
  130. event = yield undefined;
  131. is(event.target.result instanceof Array, true, "Got an array object");
  132. is(event.target.result.length, 4, "Correct length");
  133. keyRange = IDBKeyRange.bound(4, 7, true, true);
  134. request = db.transaction("foo").objectStore("foo").mozGetAll(keyRange);
  135. request.onerror = errorHandler;
  136. request.onsuccess = grabEventAndContinueHandler;
  137. event = yield undefined;
  138. is(event.target.result instanceof Array, true, "Got an array object");
  139. is(event.target.result.length, 2, "Correct length");
  140. for (let i in event.target.result) {
  141. is(event.target.result[i], values[parseInt(i) + 4], "Same value");
  142. }
  143. finishTest();
  144. yield undefined;
  145. }