idbcursor-direction.any.js (1867B)
1 // META: global=window,worker 2 // META: title=IDBCursor.direction 3 // META: script=resources/support.js 4 5 'use strict'; 6 7 function cursor_direction(constant, dir) { 8 let db; 9 let t = async_test('IDBCursor.direction - ' + dir); 10 let expected = dir ? dir : 'next'; 11 12 let open_rq = createdb(t); 13 14 open_rq.onupgradeneeded = function(e) { 15 db = e.target.result; 16 t.add_cleanup(function() { 17 db.close(); 18 indexedDB.deleteDatabase(db.name); 19 }); 20 21 let objStore = db.createObjectStore('test'); 22 23 objStore.add('data', 'key'); 24 }; 25 26 open_rq.onsuccess = t.step_func(function(e) { 27 let cursor_rq; 28 let count = 0; 29 let os = db.transaction('test', 'readonly').objectStore('test'); 30 if (dir) 31 cursor_rq = os.openCursor(undefined, dir); 32 else 33 cursor_rq = os.openCursor(); 34 35 cursor_rq.onsuccess = t.step_func(function(e) { 36 let cursor = e.target.result; 37 38 assert_equals(cursor.direction, constant, 'direction constant'); 39 assert_equals(cursor.direction, expected, 'direction'); 40 assert_readonly(cursor, 'direction'); 41 42 count++; 43 if (count >= 2) 44 t.done(); 45 }); 46 47 let cursor_rq2 = db.transaction('test', 'readonly') 48 .objectStore('test') 49 .openCursor(undefined, constant); 50 51 cursor_rq2.onsuccess = t.step_func(function(e) { 52 let cursor = e.target.result; 53 54 assert_equals( 55 cursor.direction, constant, 'direction constant (second try)'); 56 assert_equals(cursor.direction, expected, 'direction (second try)'); 57 assert_readonly(cursor, 'direction'); 58 59 count++; 60 if (count >= 2) 61 t.done(); 62 }); 63 }); 64 } 65 66 cursor_direction('next'); 67 cursor_direction('next', 'next'); 68 cursor_direction('prev', 'prev'); 69 cursor_direction('nextunique', 'nextunique'); 70 cursor_direction('prevunique', 'prevunique');