OLD | NEW |
---|---|
1 if (this.importScripts) { | 1 if (this.importScripts) { |
2 importScripts('../../../resources/testharness.js'); | 2 importScripts('../../../resources/testharness.js'); |
3 } | 3 } |
4 | 4 |
5 function compareChanges(actual, expected) { | 5 function compareChanges(actual, expected) { |
6 assert_equals(actual.database.name, expected.dbName, 'The change record databa se should be the same as the database being acted on'); | 6 assert_equals(actual.database.name, expected.dbName, 'The change record databa se should be the same as the database being acted on'); |
7 assert_equals(actual.records.size, expected.records.size, 'Incorrect number of objectStores recorded by observer'); | 7 var stores = Object.keys(expected.records); |
8 for (var key in expected.records) { | 8 assert_equals(actual.records.size, stores.length, 'Incorrect number of objectS tores recorded by observer'); |
9 | |
10 for (var i in stores){ | |
11 var key = stores[i]; | |
9 assert_true(actual.records.has(key)); | 12 assert_true(actual.records.has(key)); |
10 var actual_observation = actual.records.get(key); | 13 var actual_obsv = actual.records.get(key); |
11 var expected_observation = expected.records[key]; | 14 var expected_obsv = expected.records[key]; |
12 assert_equals(actual_observation.length, expected_observation.length, 'Numbe r of observations recorded for objectStore '+key+ ' should match observed operat ions'); | 15 assert_equals(actual_obsv.length, expected_obsv.length, 'Number of observati ons recorded for objectStore '+key+ ' should match observed operations'); |
13 for (var i in expected_observation) | 16 for (j in expected_obsv) |
cmumford
2016/07/21 15:00:55
var before "j"
palakj1
2016/07/21 20:56:46
done
| |
14 compareObservations(actual_observation[i], expected_observation[i]); | 17 compareObservations(actual_obsv[j], expected_obsv[j]); |
15 } | 18 } |
16 } | 19 } |
17 | 20 |
18 function compareObservations(actual, expected) { | 21 function compareObservations(actual, expected) { |
19 assert_equals(actual.type, expected.type); | 22 assert_equals(actual.type, expected.type); |
20 if (actual.type == 'clear') { | 23 if (actual.type == 'clear') { |
21 assert_equals(actual.key, undefined, 'clear operation has no key'); | 24 assert_equals(actual.key, undefined, 'clear operation has no key'); |
22 assert_equals(actual.value, null, 'clear operation has no value'); | 25 assert_equals(actual.value, null, 'clear operation has no value'); |
23 return; | 26 return; |
24 } | 27 } |
25 // TODO(palakj): Type should return 'delete' instead of 'kDelete', once fixed. Issue crbug.com/609934. | 28 // TODO(palakj): Type should return 'delete' instead of 'kDelete', once fixed. Issue crbug.com/609934. |
26 if (actual.type == 'kDelete') { | 29 if (actual.type == 'kDelete') { |
27 assert_equals(actual.key.lower, expected.key.lower, 'Observed operation key lower bound should match operation performed'); | 30 assert_equals(actual.key.lower, expected.key.lower, 'Observed operation key lower bound should match operation performed'); |
28 assert_equals(actual.key.upper, expected.key.upper, 'Observed operation key upper bound should match operation performed'); | 31 assert_equals(actual.key.upper, expected.key.upper, 'Observed operation key upper bound should match operation performed'); |
29 assert_equals(actual.key.lower_open, expected.key.lower_open, 'Observed oper ation key lower open should match operation performed'); | 32 assert_equals(actual.key.lower_open, expected.key.lower_open, 'Observed oper ation key lower open should match operation performed'); |
30 assert_equals(actual.key.upper_open, expected.key.upper_open, 'Observed oper ation key upper open should match operation performed'); | 33 assert_equals(actual.key.upper_open, expected.key.upper_open, 'Observed oper ation key upper open should match operation performed'); |
31 // TODO(palakj): Value needs to be updated, once returned correctly. Issue c rbug.com/609934. | 34 // TODO(palakj): Value needs to be updated, once returned correctly. Issue c rbug.com/609934. |
32 assert_equals(actual.value, null, 'Delete operation has no value'); | 35 assert_equals(actual.value, null, 'Delete operation has no value'); |
33 return; | 36 return; |
34 } | 37 } |
35 assert_equals(actual.key.lower, expected.key, 'Observed operation key lower bo und should match operation performed'); | 38 assert_equals(actual.key.lower, expected.key, 'Observed operation key lower bo und should match operation performed'); |
36 assert_equals(actual.key.upper, expected.key, 'Observed operation key upper bo und should match operation performed'); | 39 assert_equals(actual.key.upper, expected.key, 'Observed operation key upper bo und should match operation performed'); |
37 // TODO(palakj): Value needs to be updated, once returned correctly. Issue crb ug.com/609934. | 40 // TODO(palakj): Value needs to be updated, once returned correctly. Issue crb ug.com/609934. |
38 assert_equals(actual.value, null, 'Put/Add operation value should be nil'); | 41 assert_equals(actual.value, null, 'Put/Add operation value does not match'); |
39 } | 42 } |
40 | 43 |
41 function countCallbacks(actual, expected) { | 44 function countCallbacks(actual, expected){ |
42 assert_equals(actual, expected, 'Number of callbacks fired for observer should match number of transactions it observed') | 45 assert_equals(actual, expected, 'Number of callbacks fired for observer should match number of transactions it observed') |
43 } | 46 } |
44 | 47 |
45 function createDatabase(db, stores) { | 48 function createDatabase(db, stores) { |
46 for (var i in stores) | 49 for (i in stores) |
47 db.createObjectStore(stores[i]); | 50 db.createObjectStore(stores[i]); |
48 } | 51 } |
49 | 52 |
53 function operateOnDbName(dbname, records) { | |
54 var openRequest = indexedDB.open(dbname); | |
cmumford
2016/07/21 15:00:55
Add onerror handlers in these functions as well.
| |
55 openRequest.onsuccess = function(){ | |
cmumford
2016/07/21 15:00:55
space before brace.
| |
56 operateOnDb(openRequest.result, records); | |
57 } | |
58 } | |
59 | |
60 function operateOnDb(db, records) { | |
61 var tx = db.transaction(Object.keys(records), 'readwrite'); | |
62 console.log(tx+' '+ Object.keys(records)) | |
cmumford
2016/07/21 15:00:55
space around +
| |
63 operateOnTx(tx, records); | |
64 tx.oncomplete = function(){ | |
cmumford
2016/07/21 15:00:55
space.
| |
65 console.log('tx completes') | |
66 } | |
67 tx.onabort = function(){ | |
68 console.log('tx should not abort') | |
69 } | |
70 } | |
71 | |
72 function operateOnTx(tx, records) { | |
73 for (storeName in records){ | |
74 console.log('tx '+storeName) | |
75 var store = tx.objectStore(storeName); | |
76 operateOnStore(store, records[storeName]); | |
77 } | |
78 } | |
79 | |
50 function operateOnStore(store, operations) { | 80 function operateOnStore(store, operations) { |
51 for (var i in operations ) { | 81 for (i in operations ) { |
52 var op = operations[i]; | 82 var op = operations[i]; |
53 assert_in_array(op.type, ['put', 'add', 'delete', 'clear', 'get'], 'Operatio n type not defined'); | 83 assert_in_array(op.type, ['put', 'add', 'delete', 'clear', 'get'], 'Operatio n type not defined'); |
54 if (op.type == 'put') | 84 if (op.type == 'put') |
55 store.put(op.value, op.key); | 85 store.put(op.value, op.key); |
56 else if (op.type == 'add') | 86 else if (op.type == 'add') |
57 store.add(op.value, op.key); | 87 store.add(op.value, op.key); |
58 else if (op.type == 'delete') | 88 else if (op.type == 'delete') |
59 store.delete(IDBKeyRange.bound(op.key.lower, op.key.upper)); | 89 store.delete(IDBKeyRange.bound(op.key.lower, op.key.upper)); |
60 else if (op.type == 'clear') | 90 else if (op.type == 'clear') |
61 store.clear(); | 91 store.clear(); |
62 else | 92 else |
63 store.get(op.key) | 93 store.get(op.key) |
64 } | 94 } |
65 } | 95 } |
OLD | NEW |