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

Side by Side Diff: tests/html/js_test.dart

Issue 1832713002: Optimize dartium dart:html bindings so real world application performance is acceptable. Improves d… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: update cached patches 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 unified diff | Download patch
« no previous file with comments | « tests/html/js_array_test.dart ('k') | tests/html/wrapping_collections_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library jsTest; 5 library jsTest;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:html'; 8 import 'dart:html';
9 import 'dart:typed_data' show ByteBuffer, Int32List; 9 import 'dart:typed_data' show ByteBuffer, Int32List;
10 import 'dart:indexed_db' show IdbFactory, KeyRange; 10 import 'dart:indexed_db' show IdbFactory, KeyRange;
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 useHtmlIndividualConfiguration(); 233 useHtmlIndividualConfiguration();
234 234
235 group('identity', () { 235 group('identity', () {
236 236
237 test('context instances should be identical', () { 237 test('context instances should be identical', () {
238 var c1 = context; 238 var c1 = context;
239 var c2 = context; 239 var c2 = context;
240 expect(identical(c1, c2), isTrue); 240 expect(identical(c1, c2), isTrue);
241 }); 241 });
242 242
243 /*
244 TODO(jacobr): enable this test when dartium supports maintaining proxy
245 equality.
246
247 test('identical JS objects should have identical proxies', () { 243 test('identical JS objects should have identical proxies', () {
248 var o1 = new JsObject(context['Foo'], [1]); 244 var o1 = new JsObject(context['Foo'], [1]);
249 context['f1'] = o1; 245 context['f1'] = o1;
250 var o2 = context['f1']; 246 var o2 = context['f1'];
251 expect(equals(o1, o2), isTrue); 247 expect(identical(o1, o2), isTrue);
252 }); 248 });
253 249
250 /*
251 TODO(jacobr): enable this test when dartium supports maintaining proxy
252 equality.
254 test('identical Dart objects should have identical proxies', () { 253 test('identical Dart objects should have identical proxies', () {
255 var o1 = new TestDartObject(); 254 var o1 = new TestDartObject();
256 expect(context.callMethod('identical', [o1, o1]), isTrue); 255 expect(context.callMethod('identical', [o1, o1]), isTrue);
257 }); 256 });
257 */
258 258
259 test('identical Dart functions should have identical proxies', () { 259 test('identical Dart functions should have identical proxies', () {
260 var f1 = () => print("I'm a Function!"); 260 var f1 = allowInterop(() => print("I'm a Function!"));
261 expect(context.callMethod('identical', [f1, f1]), isTrue); 261 expect(context.callMethod('identical', [f1, f1]), isTrue);
262 }); 262 });
263 */
264 263
265 // TODO(jacobr): switch from equals to indentical when dartium supports 264 test('identical JS functions should have identical proxies', () {
266 // maintaining proxy equality.
267 test('identical JS functions should have equal proxies', () {
268 var f1 = context['Object']; 265 var f1 = context['Object'];
269 var f2 = context['Object']; 266 var f2 = context['Object'];
270 expect(f1, equals(f2)); 267 expect(identical(f1, f2), isTrue);
271 }); 268 });
272 269
273 // TODO(justinfagnani): old tests duplicate checks above, remove 270 // TODO(justinfagnani): old tests duplicate checks above, remove
274 // on test next cleanup pass 271 // on test next cleanup pass
275 test('test proxy equality', () { 272 test('test proxy equality', () {
276 var foo1 = new JsObject(context['Foo'], [1]); 273 var foo1 = new JsObject(context['Foo'], [1]);
277 var foo2 = new JsObject(context['Foo'], [2]); 274 var foo2 = new JsObject(context['Foo'], [2]);
278 context['foo1'] = foo1; 275 context['foo1'] = foo1;
279 context['foo2'] = foo2; 276 context['foo2'] = foo2;
280 expect(foo1, isNot(equals(context['foo2']))); 277 expect(foo1, isNot(equals(context['foo2'])));
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 444
448 test('new JsObject can return a JsFunction', () { 445 test('new JsObject can return a JsFunction', () {
449 var f = new JsObject(context['Function']); 446 var f = new JsObject(context['Function']);
450 expect(f, new isInstanceOf<JsFunction>()); 447 expect(f, new isInstanceOf<JsFunction>());
451 }); 448 });
452 449
453 test('JsFunction.apply on a function defined in JS', () { 450 test('JsFunction.apply on a function defined in JS', () {
454 expect(context['razzle'].apply([]), equals(42)); 451 expect(context['razzle'].apply([]), equals(42));
455 }); 452 });
456 453
457 test('JsFunction.apply on a function that uses "this"', () { 454 test('JsFunction.apply on a function that uses this', () {
458 var object = new Object(); 455 var object = new Object();
459 expect(context['returnThis'].apply([], thisArg: object), same(object)); 456 expect(context['returnThis'].apply([], thisArg: object), same(object));
460 }); 457 });
461 458
462 test('JsObject.callMethod on a function defined in JS', () { 459 test('JsObject.callMethod on a function defined in JS', () {
463 expect(context.callMethod('razzle'), equals(42)); 460 expect(context.callMethod('razzle'), equals(42));
464 expect(() => context.callMethod('dazzle'), throwsA(isNoSuchMethodError)); 461 expect(() => context.callMethod('dazzle'), throwsA(isNoSuchMethodError));
465 }); 462 });
466 463
467 test('callMethod with many arguments', () { 464 test('callMethod with many arguments', () {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 ['a', context['Array']]), isTrue); 507 ['a', context['Array']]), isTrue);
511 var a = context['a']; 508 var a = context['a'];
512 expect(a, new isInstanceOf<JsArray>()); 509 expect(a, new isInstanceOf<JsArray>());
513 expect(a, [1, 2, 3]); 510 expect(a, [1, 2, 3]);
514 context.deleteProperty('a'); 511 context.deleteProperty('a');
515 }); 512 });
516 513
517 test('pass Array to JS', () { 514 test('pass Array to JS', () {
518 context['a'] = [1, 2, 3]; 515 context['a'] = [1, 2, 3];
519 expect(context.callMethod('isPropertyInstanceOf', 516 expect(context.callMethod('isPropertyInstanceOf',
520 ['a', context['Array']]), isFalse); 517 ['a', context['Array']]), isTrue);
521 var a = context['a']; 518 var a = context['a'];
522 expect(a, new isInstanceOf<List>()); 519 expect(a, new isInstanceOf<List>());
523 expect(a, isNot(new isInstanceOf<JsArray>())); 520 expect(a, isNot(new isInstanceOf<JsArray>()));
524 expect(a, [1, 2, 3]); 521 expect(a, [1, 2, 3]);
525 context.deleteProperty('a'); 522 context.deleteProperty('a');
526 }); 523 });
527 524
528 test('[]', () { 525 test('[]', () {
529 var array = new JsArray.from([1, 2]); 526 var array = new JsArray.from([1, 2]);
530 expect(array[0], 1); 527 expect(array[0], 1);
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after
1008 // expect(context.callMethod('isPropertyInstanceOf', ['o', listType]), 1005 // expect(context.callMethod('isPropertyInstanceOf', ['o', listType]),
1009 // isTrue); 1006 // isTrue);
1010 context.deleteProperty('o'); 1007 context.deleteProperty('o');
1011 } 1008 }
1012 }); 1009 });
1013 1010
1014 }); 1011 });
1015 }); 1012 });
1016 1013
1017 } 1014 }
OLDNEW
« no previous file with comments | « tests/html/js_array_test.dart ('k') | tests/html/wrapping_collections_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698