Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1207)

Unified Diff: test/codegen/lib/html/indexeddb_5_test.dart

Issue 1930043002: Add all dart:html tests from the sdk to test/codegen. (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: ptal Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/codegen/lib/html/indexeddb_4_test.dart ('k') | test/codegen/lib/html/input_element_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/codegen/lib/html/indexeddb_5_test.dart
diff --git a/test/codegen/lib/html/indexeddb_5_test.dart b/test/codegen/lib/html/indexeddb_5_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..cbf77d1b1648438e09982e1fb4cb813ed1f4fd52
--- /dev/null
+++ b/test/codegen/lib/html/indexeddb_5_test.dart
@@ -0,0 +1,183 @@
+library IndexedDB1Test;
+import 'package:unittest/unittest.dart';
+import 'package:unittest/html_config.dart';
+import 'dart:async';
+import 'dart:html' as html;
+import 'dart:indexed_db' as idb;
+
+main() {
+ useHtmlConfiguration();
+
+ if (!idb.IdbFactory.supported) {
+ return;
+ }
+
+ var dbName = 'test_db_5';
+ var storeName = 'test_store';
+ var indexName = 'name_index';
+ var db;
+
+ test('init', () {
+ return html.window.indexedDB.deleteDatabase(dbName).then((_) {
+ return html.window.indexedDB.open(dbName, version: 1,
+ onUpgradeNeeded: (e) {
+ var db = e.target.result;
+ var objectStore = db.createObjectStore(storeName,
+ autoIncrement: true);
+ var index = objectStore.createIndex(indexName, 'name_index',
+ unique: false);
+ });
+ }).then((database) {
+ db = database;
+ });
+ });
+
+ if (html.window.indexedDB.supportsDatabaseNames) {
+ test('getDatabaseNames', () {
+ return html.window.indexedDB.getDatabaseNames().then((names) {
+ expect(names.contains(dbName), isTrue);
+ });
+ });
+ }
+
+ var value = {'name_index': 'one', 'value': 'add_value'};
+ test('add/delete', () {
+ var transaction = db.transaction(storeName, 'readwrite');
+ var key;
+ return transaction.objectStore(storeName).add(value).then((addedKey) {
+ key = addedKey;
+ }).then((_) {
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transaction(storeName, 'readonly');
+ return transaction.objectStore(storeName).getObject(key);
+ }).then((readValue) {
+ expect(readValue['value'], value['value']);
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transactionList([storeName], 'readwrite');
+ return transaction.objectStore(storeName).delete(key);
+ }).then((_) {
+ return transaction.completed;
+ }).then((_) {
+ var transaction = db.transactionList([storeName], 'readonly');
+ return transaction.objectStore(storeName).count();
+ }).then((count) {
+ expect(count, 0);
+ });
+ });
+
+ test('clear/count', () {
+ var transaction = db.transaction(storeName, 'readwrite');
+ transaction.objectStore(storeName).add(value);
+
+ return transaction.completed.then((_) {
+ transaction = db.transaction(storeName, 'readonly');
+ return transaction.objectStore(storeName).count();
+ }).then((count) {
+ expect(count, 1);
+ }).then((_) {
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transactionList([storeName], 'readwrite');
+ transaction.objectStore(storeName).clear();
+ return transaction.completed;
+ }).then((_) {
+ var transaction = db.transactionList([storeName], 'readonly');
+ return transaction.objectStore(storeName).count();
+ }).then((count) {
+ expect(count, 0);
+ });
+ });
+
+ test('index', () {
+ var transaction = db.transaction(storeName, 'readwrite');
+ transaction.objectStore(storeName).add(value);
+ transaction.objectStore(storeName).add(value);
+ transaction.objectStore(storeName).add(value);
+ transaction.objectStore(storeName).add(value);
+
+ return transaction.completed.then((_) {
+ transaction = db.transactionList([storeName], 'readonly');
+ var index = transaction.objectStore(storeName).index(indexName);
+ return index.count();
+ }).then((count) {
+ expect(count, 4);
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transaction(storeName, 'readonly');
+ var index = transaction.objectStore(storeName).index(indexName);
+ return index.openCursor(autoAdvance: true).length;
+ }).then((cursorsLength) {
+ expect(cursorsLength, 4);
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transaction(storeName, 'readonly');
+ var index = transaction.objectStore(storeName).index(indexName);
+ return index.openKeyCursor(autoAdvance: true).length;
+ }).then((cursorsLength) {
+ expect(cursorsLength, 4);
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transaction(storeName, 'readonly');
+ var index = transaction.objectStore(storeName).index(indexName);
+ return index.get('one');
+ }).then((readValue) {
+ expect(readValue['value'], value['value']);
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transaction(storeName, 'readwrite');
+ transaction.objectStore(storeName).clear();
+ return transaction.completed;
+ });
+ });
+
+ var deleteValue = {'name_index': 'two', 'value': 'delete_value'};
+ var updateValue = {'name_index': 'three', 'value': 'update_value'};
+ var updatedValue = {'name_index': 'three', 'value': 'updated_value'};
+ test('cursor', () {
+ var transaction = db.transaction(storeName, 'readwrite');
+ transaction.objectStore(storeName).add(value);
+ transaction.objectStore(storeName).add(deleteValue);
+ transaction.objectStore(storeName).add(updateValue);
+
+ return transaction.completed.then((_) {
+ transaction = db.transactionList([storeName], 'readwrite');
+ var index = transaction.objectStore(storeName).index(indexName);
+ var cursors = index.openCursor().asBroadcastStream();
+
+ cursors.listen((cursor) {
+ var value = cursor.value;
+ if (value['value'] == 'delete_value') {
+ cursor.delete().then((_) {
+ cursor.next();
+ });
+ } else if (value['value'] == 'update_value') {
+ cursor.update(updatedValue).then((_) {
+ cursor.next();
+ });
+ } else {
+ cursor.next();
+ }
+ });
+ return cursors.last;
+
+ }).then((_) {
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transaction(storeName, 'readonly');
+ var index = transaction.objectStore(storeName).index(indexName);
+ return index.get('three');
+ }).then((readValue) {
+ expect(readValue['value'], 'updated_value');
+ return transaction.completed;
+ }).then((_) {
+ transaction = db.transaction(storeName, 'readonly');
+ var index = transaction.objectStore(storeName).index(indexName);
+ return index.get('two');
+ }).then((readValue) {
+ expect(readValue, isNull);
+ return transaction.completed;
+ });
+ });
+}
« no previous file with comments | « test/codegen/lib/html/indexeddb_4_test.dart ('k') | test/codegen/lib/html/input_element_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698