cursor-overloads.any.js (3605B)
1 // META: title=IndexedDB 2 // META: global=window,worker 3 // META: script=resources/support.js 4 5 'use strict'; 6 7 async_test(t => { 8 let db; 9 let trans; 10 let store; 11 let index; 12 let request = createdb(t); 13 14 request.onupgradeneeded = function(e) { 15 db = e.target.result; 16 store = db.createObjectStore('store'); 17 index = store.createIndex('index', 'value'); 18 store.put({value: 0}, 0); 19 trans = request.transaction; 20 trans.oncomplete = verifyOverloads; 21 }; 22 23 function verifyOverloads() { 24 trans = db.transaction('store', 'readonly'); 25 store = trans.objectStore('store'); 26 index = store.index('index'); 27 28 checkCursorDirection(store.openCursor(), 'next'); 29 checkCursorDirection(store.openCursor(0), 'next'); 30 checkCursorDirection(store.openCursor(0, 'next'), 'next'); 31 checkCursorDirection(store.openCursor(0, 'nextunique'), 'nextunique'); 32 checkCursorDirection(store.openCursor(0, 'prev'), 'prev'); 33 checkCursorDirection(store.openCursor(0, 'prevunique'), 'prevunique'); 34 35 checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), 'next'); 36 checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'next'), 'next'); 37 checkCursorDirection( 38 store.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); 39 checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'prev'), 'prev'); 40 checkCursorDirection( 41 store.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); 42 43 checkCursorDirection(index.openCursor(), 'next'); 44 checkCursorDirection(index.openCursor(0), 'next'); 45 checkCursorDirection(index.openCursor(0, 'next'), 'next'); 46 checkCursorDirection(index.openCursor(0, 'nextunique'), 'nextunique'); 47 checkCursorDirection(index.openCursor(0, 'prev'), 'prev'); 48 checkCursorDirection(index.openCursor(0, 'prevunique'), 'prevunique'); 49 50 checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), 'next'); 51 checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'next'), 'next'); 52 checkCursorDirection( 53 index.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); 54 checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'prev'), 'prev'); 55 checkCursorDirection( 56 index.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); 57 58 checkCursorDirection(index.openKeyCursor(), 'next'); 59 checkCursorDirection(index.openKeyCursor(0), 'next'); 60 checkCursorDirection(index.openKeyCursor(0, 'next'), 'next'); 61 checkCursorDirection(index.openKeyCursor(0, 'nextunique'), 'nextunique'); 62 checkCursorDirection(index.openKeyCursor(0, 'prev'), 'prev'); 63 checkCursorDirection(index.openKeyCursor(0, 'prevunique'), 'prevunique'); 64 65 checkCursorDirection(index.openKeyCursor(IDBKeyRange.only(0)), 'next'); 66 checkCursorDirection( 67 index.openKeyCursor(IDBKeyRange.only(0), 'next'), 'next'); 68 checkCursorDirection( 69 index.openKeyCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); 70 checkCursorDirection( 71 index.openKeyCursor(IDBKeyRange.only(0), 'prev'), 'prev'); 72 checkCursorDirection( 73 index.openKeyCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); 74 75 t.done(); 76 } 77 78 function checkCursorDirection(request, direction) { 79 request.onsuccess = function(event) { 80 assert_not_equals( 81 event.target.result, null, 'Check the result is not null') 82 assert_equals( 83 event.target.result.direction, direction, 84 'Check the result direction'); 85 }; 86 } 87 }, 'Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor()');