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

Unified Diff: tests/html/postmessage_structured_test.dart

Issue 12706024: Narrowing html/postmessage_test's FF exclusion (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 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 | « tests/html/html.status ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/html/postmessage_structured_test.dart
diff --git a/tests/html/postmessage_structured_test.dart b/tests/html/postmessage_structured_test.dart
index 76860eaa55b1b91190c3e00b8907d5174a6b1021..ba3542035719f959ea6dd54e5434bc0d945e3a9e 100644
--- a/tests/html/postmessage_structured_test.dart
+++ b/tests/html/postmessage_structured_test.dart
@@ -4,7 +4,7 @@
library postmessage_js_test;
import '../../pkg/unittest/lib/unittest.dart';
-import '../../pkg/unittest/lib/html_config.dart';
+import '../../pkg/unittest/lib/html_individual_config.dart';
import 'dart:html';
import 'dart:collection'; // SplayTreeMap
import 'utils.dart';
@@ -17,9 +17,45 @@ injectSource(code) {
}
main() {
- useHtmlConfiguration();
+ useHtmlIndividualConfiguration();
- test('js-to-dart-postmessage', () {
+ go(testName, value) =>
+ test(testName, () {
+ // Round-trip graph from Dart to JavaScript and back.
+
+ final JS_CODE = """
+ window.addEventListener('message', handler);
+ function handler(e) {
+ var data = e.data;
+ if (typeof data == 'string') return;
+ if (data.recipient != 'JS') return;
+ window.console.log(data.data);
+ var response = {recipient: 'DART', data: data.data};
+ window.removeEventListener('message', handler);
+ window.postMessage(response, '*');
+ }
+ """;
+ var completed = false;
+ var subscription = null;
+ subscription = window.onMessage.listen(expectAsyncUntil1(
+ (e) {
+ var data = e.data;
+ if (data is String) return; // Messages from unit test protocol.
+ if (data['recipient'] != 'DART') return; // Not for me.
+ completed = true;
+ subscription.cancel();
+ expect(data, isMap);
+ var returnedValue = data['data'];
+ expect(returnedValue, isNot(same(value)));
+ verifyGraph(value, returnedValue);
+ },
+ () => completed));
+ injectSource(JS_CODE);
+ window.postMessage({'recipient': 'JS', 'data': value}, '*');
+ });
+
+ group('primitives', () {
+ test('js-to-dart-postmessage', () {
// Pass an object literal from JavaScript. It should be seen as a Dart
// Map.
@@ -41,7 +77,7 @@ main() {
injectSource(JS_CODE);
});
- test('dart-to-js-to-dart-postmessage', () {
+ test('dart-to-js-to-dart-postmessage', () {
// Pass dictionaries between Dart and JavaScript.
final JS_CODE = """
@@ -73,69 +109,43 @@ main() {
window.postMessage({'recipient': 'JS', 'curry': 'peas'}, '*');
});
- go(testName, value) =>
- test(testName, () {
- // Round-trip graph from Dart to JavaScript and back.
+ var obj1 = {'a': 100, 'b': 's'};
+ var obj2 = {'x': obj1, 'y': obj1}; // DAG.
- final JS_CODE = """
- window.addEventListener('message', handler);
- function handler(e) {
- var data = e.data;
- if (typeof data == 'string') return;
- if (data.recipient != 'JS') return;
- window.console.log(data.data);
- var response = {recipient: 'DART', data: data.data};
- window.removeEventListener('message', handler);
- window.postMessage(response, '*');
- }
- """;
- var completed = false;
- var subscription = null;
- subscription = window.onMessage.listen(expectAsyncUntil1(
- (e) {
- var data = e.data;
- if (data is String) return; // Messages from unit test protocol.
- if (data['recipient'] != 'DART') return; // Not for me.
- completed = true;
- subscription.cancel();
- expect(data, isMap);
- var returnedValue = data['data'];
- expect(returnedValue, isNot(same(value)));
- verifyGraph(value, returnedValue);
- },
- () => completed));
- injectSource(JS_CODE);
- window.postMessage({'recipient': 'JS', 'data': value}, '*');
- });
+ var obj3 = {};
+ obj3['a'] = 100;
+ obj3['b'] = obj3; // Cycle.
+
+ var obj4 = new SplayTreeMap<String, dynamic>(); // Different implementation.
+ obj4['a'] = 100;
+ obj4['b'] = 's';
+
+ var cyclic_list = [1, 2, 3];
+ cyclic_list[1] = cyclic_list;
+
+ go('test_simple_list', [1, 2, 3]);
+ go('test_map', obj1);
+ go('test_DAG', obj2);
+ go('test_cycle', obj3);
+ go('test_simple_splay', obj4);
+ go('const_array_1', const [const [1], const [2]]);
+ go('const_array_dag', const [const [1], const [1]]);
+ go('array_deferred_copy', [1,2,3, obj3, obj3, 6]);
+ go('array_deferred_copy_2', [1,2,3, [4, 5, obj3], [obj3, 6]]);
+ go('cyclic_list', cyclic_list);
+ });
+
+ group('typed_arrays', () {
+ var array_buffer = new ArrayBuffer(16);
+ var view_a = new Float32Array.fromBuffer(array_buffer, 0, 4);
+ var view_b = new Uint8Array.fromBuffer(array_buffer, 1, 13);
+ var typed_arrays_list = [view_a, array_buffer, view_b];
+
+ // Note that FF is failing this test because in the sent message:
+ // view_a.buffer == array_buffer
+ // But in the response:
+ // view_a.buffer != array_buffer
+ go('typed_arrays_list', typed_arrays_list);
+ });
- var obj1 = {'a': 100, 'b': 's'};
- var obj2 = {'x': obj1, 'y': obj1}; // DAG.
-
- var obj3 = {};
- obj3['a'] = 100;
- obj3['b'] = obj3; // Cycle.
-
- var obj4 = new SplayTreeMap<String, dynamic>(); // Different implementation.
- obj4['a'] = 100;
- obj4['b'] = 's';
-
- var cyclic_list = [1, 2, 3];
- cyclic_list[1] = cyclic_list;
-
- var array_buffer = new ArrayBuffer(16);
- var view_a = new Float32Array.fromBuffer(array_buffer, 0, 4);
- var view_b = new Uint8Array.fromBuffer(array_buffer, 1, 13);
- var typed_arrays_list = [view_a, array_buffer, view_b];
-
- go('test_simple_list', [1, 2, 3]);
- go('test_map', obj1);
- go('test_DAG', obj2);
- go('test_cycle', obj3);
- go('test_simple_splay', obj4);
- go('const_array_1', const [const [1], const [2]]);
- go('const_array_dag', const [const [1], const [1]]);
- go('array_deferred_copy', [1,2,3, obj3, obj3, 6]);
- go('array_deferred_copy_2', [1,2,3, [4, 5, obj3], [obj3, 6]]);
- go('cyclic_list', cyclic_list);
- go('typed_arrays_list', typed_arrays_list);
}
« no previous file with comments | « tests/html/html.status ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698