idbobjectstore_getAll.any.js (3850B)
1 // META: title=IndexedDB: Test IDBObjectStore.getAll 2 // META: global=window,worker 3 // META: script=resources/nested-cloning-common.js 4 // META: script=resources/support.js 5 // META: script=resources/support-get-all.js 6 // META: script=resources/support-promises.js 7 // META: timeout=long 8 9 'use strict'; 10 11 object_store_get_all_values_test( 12 /*storeName=*/ 'out-of-line', /*options=*/ {query: 'c'}, 'Single item get'); 13 14 object_store_get_all_values_test( 15 /*storeName=*/ 'generated', /*options=*/ {query: 3}, 16 'Single item get (generated key)'); 17 18 object_store_get_all_values_test( 19 /*storeName=*/ 'empty', /*options=*/ undefined, 20 'getAll on empty object store'); 21 22 object_store_get_all_values_test( 23 /*storeName=*/ 'out-of-line', /*options=*/ undefined, 'Get all values'); 24 25 object_store_get_all_values_test( 26 /*storeName=*/ 'large-values', /*options=*/ undefined, 27 'Get all with large values'); 28 29 object_store_get_all_values_test( 30 /*storeName=*/ 'out-of-line', /*options=*/ {count: 10}, 'Test maxCount'); 31 32 object_store_get_all_values_test( 33 /*storeName=*/ 'out-of-line', 34 /*options=*/ {query: IDBKeyRange.bound('g', 'm')}, 'Get bound range'); 35 36 object_store_get_all_values_test( 37 /*storeName=*/ 'out-of-line', 38 /*options=*/ {query: IDBKeyRange.bound('g', 'm'), count: 3}, 39 'Get bound range with maxCount'); 40 41 object_store_get_all_values_test( 42 /*storeName=*/ 'out-of-line', 43 /*options=*/ { 44 query: 45 IDBKeyRange.bound('g', 'k', /*lowerOpen=*/ false, /*upperOpen=*/ true) 46 }, 47 'Get upper excluded'); 48 49 object_store_get_all_values_test( 50 /*storeName=*/ 'out-of-line', 51 /*options=*/ { 52 query: 53 IDBKeyRange.bound('g', 'k', /*lowerOpen=*/ true, /*upperOpen=*/ false) 54 }, 55 'Get lower excluded'); 56 57 object_store_get_all_values_test( 58 /*storeName=*/ 'generated', 59 /*options=*/ {query: IDBKeyRange.bound(4, 15), count: 3}, 60 'Get bound range (generated) with maxCount'); 61 62 object_store_get_all_values_test( 63 /*storeName=*/ 'out-of-line', 64 /*options=*/ {query: 'Doesn\'t exist'}, 'Non existent key'); 65 66 object_store_get_all_values_test( 67 /*storeName=*/ 'out-of-line', /*options=*/ {count: 0}, 'zero maxCount'); 68 69 object_store_get_all_values_test( 70 /*storeName=*/ 'out-of-line', /*options=*/ {count: 4294967295}, 71 'Max value count'); 72 73 object_store_get_all_values_test( 74 /*storeName=*/ 'out-of-line', 75 /*options=*/ {query: IDBKeyRange.upperBound('0')}, 76 'Query with empty range where first key < upperBound'); 77 78 object_store_get_all_values_test( 79 /*storeName=*/ 'out-of-line', 80 /*options=*/ {query: IDBKeyRange.lowerBound('zz')}, 81 'Query with empty range where lowerBound < last key'); 82 83 object_store_get_all_test_setup( 84 /*storeName=*/ 'out-of-line', (test, connection, expectedRecords) => { 85 const transaction = connection.transaction('out-of-line', 'readonly'); 86 const store = transaction.objectStore('out-of-line'); 87 const request = store.getAll(); 88 transaction.commit(); 89 transaction.oncomplete = 90 test.unreached_func('transaction completed before request succeeded'); 91 92 request.onerror = test.unreached_func('getAll request should succeed'); 93 request.onsuccess = test.step_func(event => { 94 // Convert the expected array of records to an array of IDB values. 95 const expectedResults = 96 calculateExpectedGetAllResults('getAll', expectedRecords); 97 98 const actualResults = event.target.result; 99 verifyGetAllResults('getAll', actualResults, expectedResults); 100 transaction.oncomplete = test.step_func_done(); 101 }); 102 }, 'Get all values with transaction.commit()'); 103 104 get_all_with_invalid_keys_test( 105 'getAll', /*storeName=*/ 'out-of-line', /*indexName=*/ undefined, 106 /*shouldUseDictionary=*/ false, 'Get all values with invalid query keys');