test_objectCursors.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 objectStores = [
  10. { name: "a", autoIncrement: false },
  11. { name: "b", autoIncrement: true }
  12. ];
  13. const indexes = [
  14. { name: "a", options: { } },
  15. { name: "b", options: { unique: true } }
  16. ];
  17. var j = 0;
  18. for (let i in objectStores) {
  19. let request = indexedDB.open(name, ++j);
  20. request.onerror = errorHandler;
  21. request.onupgradeneeded = grabEventAndContinueHandler;
  22. let event = yield undefined;
  23. let db = event.target.result;
  24. db.onversionchange = function(event) {
  25. event.target.close();
  26. };
  27. let objectStore =
  28. db.createObjectStore(objectStores[i].name,
  29. { keyPath: "id",
  30. autoIncrement: objectStores[i].autoIncrement });
  31. for (let j in indexes) {
  32. objectStore.createIndex(indexes[j].name, "name", indexes[j].options);
  33. }
  34. let data = { name: "Ben" };
  35. if (!objectStores[i].autoIncrement) {
  36. data.id = 1;
  37. }
  38. request = objectStore.add(data);
  39. request.onerror = errorHandler;
  40. request.onsuccess = grabEventAndContinueHandler;
  41. event = yield undefined;
  42. ok(event.target.result == 1 || event.target.result == 2, "Good id");
  43. }
  44. executeSoon(function() { testGenerator.next(); });
  45. yield undefined;
  46. let request = indexedDB.open(name, j);
  47. request.onerror = errorHandler;
  48. request.onsuccess = grabEventAndContinueHandler;
  49. let event = yield undefined;
  50. let db = event.target.result;
  51. for (let i in objectStores) {
  52. for (let j in indexes) {
  53. let objectStore = db.transaction(objectStores[i].name)
  54. .objectStore(objectStores[i].name);
  55. let index = objectStore.index(indexes[j].name);
  56. request = index.openCursor();
  57. request.onerror = errorHandler;
  58. request.onsuccess = function (event) {
  59. is(event.target.result.value.name, "Ben", "Good object");
  60. executeSoon(function() { testGenerator.next(); });
  61. }
  62. yield undefined;
  63. }
  64. }
  65. finishTest();
  66. yield undefined;
  67. }