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

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

Issue 23291005: add JsArray and JsObject.asJsMap() Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: optimizations Created 7 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « sdk/lib/js/dartium/js_dartium.dart ('k') | no next file » | 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';
8 import 'dart:html'; 7 import 'dart:html';
9 import 'dart:js'; 8 import 'dart:js';
10 9
11 import '../../pkg/unittest/lib/unittest.dart'; 10 import '../../pkg/unittest/lib/unittest.dart';
12 import '../../pkg/unittest/lib/html_config.dart'; 11 import '../../pkg/unittest/lib/html_config.dart';
13 12
14 _injectJs() { 13 _injectJs() {
15 final script = new ScriptElement(); 14 final script = new ScriptElement();
16 script.type = 'text/javascript'; 15 script.type = 'text/javascript';
17 script.innerHtml = r""" 16 script.innerHtml = r"""
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 return "I'm a Foo a=" + this.a; 58 return "I'm a Foo a=" + this.a;
60 } 59 }
61 60
62 var container = new Object(); 61 var container = new Object();
63 container.Foo = Foo; 62 container.Foo = Foo;
64 63
65 function isArray(a) { 64 function isArray(a) {
66 return a instanceof Array; 65 return a instanceof Array;
67 } 66 }
68 67
68 function checkArray(a, index, value) {
69 return a[index] == value;
70 }
71
69 function checkMap(m, key, value) { 72 function checkMap(m, key, value) {
70 if (m.hasOwnProperty(key)) 73 if (m.hasOwnProperty(key))
71 return m[key] == value; 74 return m[key] == value;
72 else 75 else
73 return false; 76 return false;
74 } 77 }
75 78
76 function invokeCallback() { 79 function invokeCallback() {
77 return callback(); 80 return callback();
78 } 81 }
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 expect(() => foo.callMethod('baz'), throwsA(isNoSuchMethodError)); 309 expect(() => foo.callMethod('baz'), throwsA(isNoSuchMethodError));
307 }); 310 });
308 311
309 test('call toString()', () { 312 test('call toString()', () {
310 var foo = new JsObject(context['Foo'], [42]); 313 var foo = new JsObject(context['Foo'], [42]);
311 expect(foo.toString(), equals("I'm a Foo a=42")); 314 expect(foo.toString(), equals("I'm a Foo a=42"));
312 var container = context['container']; 315 var container = context['container'];
313 expect(container.toString(), equals("[object Object]")); 316 expect(container.toString(), equals("[object Object]"));
314 }); 317 });
315 318
319 test('use Iterable as parameters', () {
320 final set = new Set.from([1, 2, 3, 4, 5, 6, 7, 8]);
321 expect(context.callMethod('isArray', [set]), isTrue);
322 for (var i = 0; i < set.length ; i++) {
323 expect(context.callMethod('checkArray', [set, i, set.elementAt(i)]), isTru e);
324 }
325 });
326
327 test('use Map as parameters', () {
328 var map = {'a': 1, 'b': 2, 'c': 3};
329 expect(!context.callMethod('isArray', [map]), isTrue);
330 for (final key in map.keys) {
331 expect(context.callMethod('checkMap', [map, key, map[key]]), isTrue);
332 }
333 });
334
316 test('allocate simple JS array', () { 335 test('allocate simple JS array', () {
317 final list = [1, 2, 3, 4, 5, 6, 7, 8]; 336 final list = [1, 2, 3, 4, 5, 6, 7, 8];
318 var array = jsify(list); 337 var array = jsify(list);
319 expect(context.callMethod('isArray', [array]), isTrue); 338 expect(context.callMethod('isArray', [array]), isTrue);
320 expect(array['length'], equals(list.length)); 339 expect(array['length'], equals(list.length));
321 for (var i = 0; i < list.length ; i++) { 340 for (var i = 0; i < list.length ; i++) {
322 expect(array[i], equals(list[i])); 341 expect(array[i], equals(list[i]));
323 } 342 }
324 }); 343 });
325 344
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 final date = new DateTime.now(); 478 final date = new DateTime.now();
460 context['dartDate'] = date; 479 context['dartDate'] = date;
461 expect(context['dartDate'], equals(date)); 480 expect(context['dartDate'], equals(date));
462 }); 481 });
463 482
464 test('usage of Serializable', () { 483 test('usage of Serializable', () {
465 final red = Color.RED; 484 final red = Color.RED;
466 context['color'] = red; 485 context['color'] = red;
467 expect(context['color'], equals(red._value)); 486 expect(context['color'], equals(red._value));
468 }); 487 });
488
489 group('JsArrayToListAdapter', () {
490 test('iterator', () {
491 final JsArray m = jsify(["e0", "e1", "e2"]);
492 final iterator = m.iterator;
493 iterator.moveNext();
494 expect(iterator.current, equals("e0"));
495 iterator.moveNext();
496 expect(iterator.current, equals("e1"));
497 iterator.moveNext();
498 expect(iterator.current, equals("e2"));
499 });
500 test('get length', () {
501 final JsArray m1 = jsify([]);
502 expect(m1.length, equals(0));
503 final JsArray m2 = jsify(["a", "b"]);
504 expect(m2.length, equals(2));
505 });
506 test('add', () {
507 final JsArray m = jsify([]);
508 expect(m.length, equals(0));
509 m.add("a");
510 expect(m.length, equals(1));
511 expect(m[0], equals("a"));
512 m.add("b");
513 expect(m.length, equals(2));
514 expect(m[0], equals("a"));
515 expect(m[1], equals("b"));
516 });
517 test('addAll', () {
518 final JsArray m = jsify([]);
519 expect(m.length, equals(0));
520 m.addAll(["a", 'b']);
521 expect(m.length, equals(2));
522 expect(m[0], equals("a"));
523 expect(m[1], equals("b"));
524 });
525 test('clear', () {
526 final JsArray m = jsify(["a", "b"]);
527 expect(m.length, equals(2));
528 m.clear();
529 expect(m.length, equals(0));
530 });
531 test('remove', () {
532 final JsArray m = jsify(["a", "b"]);
533 expect(m.length, equals(2));
534 m.remove("a");
535 expect(m.length, equals(1));
536 expect(m[0], equals("b"));
537 });
538 test('operator []', () {
539 final JsArray m = jsify(["a", "b"]);
540 expect(() => m[-1], throwsA(isRangeError));
541 expect(() => m[2], throwsA(isRangeError));
542 expect(m[0], equals("a"));
543 expect(m[1], equals("b"));
544 });
545 test('operator []=', () {
546 final JsArray m = jsify(["a", "b"]);
547 expect(() => m[-1] = "c", throwsA(isRangeError));
548 expect(() => m[2] = "c", throwsA(isRangeError));
549 m[0] = "d";
550 m[1] = "e";
551 expect(m[0], equals("d"));
552 expect(m[1], equals("e"));
553 });
554 test('set length', () {
555 final JsArray m = jsify(["a", "b"]);
556 m.length = 10;
557 expect(m.length, equals(10));
558 expect(m[5], equals(null));
559 m.length = 1;
560 expect(m.length, equals(1));
561 expect(m[0], equals("a"));
562 });
563 test('sort', () {
564 final JsArray m = jsify(["c", "a", "b"]);
565 m.sort();
566 expect(m.length, equals(3));
567 expect(m[0], equals("a"));
568 expect(m[1], equals("b"));
569 expect(m[2], equals("c"));
570 });
571 test('insert', () {
572 final JsArray m = jsify(["a", "b", "c"]);
573 m.insert(1, "d");
574 expect(m.length, equals(4));
575 expect(m[0], equals("a"));
576 expect(m[1], equals("d"));
577 expect(m[2], equals("b"));
578 expect(m[3], equals("c"));
579 });
580 test('removeAt', () {
581 final JsArray m = jsify(["a", "b", "c"]);
582 expect(m.removeAt(1), equals("b"));
583 expect(m.length, equals(2));
584 expect(m[0], equals("a"));
585 expect(m[1], equals("c"));
586 expect(() => m.removeAt(2), throwsA(isRangeError));
587 });
588 test('removeLast', () {
589 final JsArray m = jsify(["a", "b", "c", null]);
590 expect(m.removeLast(), isNull);
591 expect(m.removeLast(), equals("c"));
592 expect(m.removeLast(), equals("b"));
593 expect(m.removeLast(), equals("a"));
594 expect(m.length, equals(0));
595 });
596 test('sublist', () {
597 final JsArray m = jsify(["a", "b", "c", null]);
598 final sl1 = m.sublist(2);
599 expect(sl1.length, equals(2));
600 expect(sl1[0], equals("c"));
601 expect(sl1[1], isNull);
602 final sl2 = m.sublist(1, 3);
603 expect(sl2.length, equals(2));
604 expect(sl2[0], equals("b"));
605 expect(sl2[1], equals("c"));
606 });
607 test('setRange', () {
608 final JsArray m = jsify(["a", "b", "c", null]);
609 m.setRange(1, 2, [null, null]);
610 expect(m.length, equals(4));
611 expect(m[0], equals("a"));
612 expect(m[1], isNull);
613 expect(m[2], isNull);
614 expect(m[3], isNull);
615 m.setRange(3, 1, [null, "c", null], 1);
616 expect(m[0], equals("a"));
617 expect(m[1], isNull);
618 expect(m[2], isNull);
619 expect(m[3], equals("c"));
620 });
621 test('removeRange', () {
622 final JsArray m = jsify(["a", "b", "c", null]);
623 m.removeRange(1, 3);
624 expect(m.length, equals(2));
625 expect(m[0], equals("a"));
626 expect(m[1], isNull);
627 });
628 });
629 group('JsObject as Map<String, dynamic>', () {
630 test('operator []', () {
631 final m = jsify({"a": 1, "b": "c"}).asDartMap();
632 expect(m["a"], equals(1));
633 expect(m["b"], equals("c"));
634 });
635 test('operator []=', () {
636 final m = jsify({}).asDartMap();
637 m["a"] = 1;
638 expect(m["a"], equals(1));
639 expect(m.length, equals(1));
640 m["b"] = "c";
641 expect(m["b"], equals("c"));
642 expect(m.length, equals(2));
643 });
644 test('remove', () {
645 final m = jsify({"a": 1, "b": "c"}).asDartMap();
646 expect(m.remove("a"), equals(1));
647 expect(m["a"], isNull);
648 expect(m["b"], equals("c"));
649 expect(m.length, equals(1));
650 });
651 test('get keys', () {
652 final m = jsify({"a": 1, "b": 2}).asDartMap();
653 final keys = m.keys;
654 expect(keys.length, equals(2));
655 expect(keys, contains("a"));
656 expect(keys, contains("b"));
657 });
658 test('containsValue', () {
659 final m = jsify({"a": 1, "b": "c"}).asDartMap();
660 expect(m.containsValue(1), equals(true));
661 expect(m.containsValue("c"), equals(true));
662 expect(m.containsValue("a"), equals(false));
663 });
664 test('containsKey', () {
665 final m = jsify({"a": 1, "b": "c"}).asDartMap();
666 expect(m.containsKey("a"), equals(true));
667 expect(m.containsKey("d"), equals(false));
668 });
669 test('addAll', () {
670 final m = jsify({'a': 1, 'b': 'c'}).asDartMap();
671 m.addAll({'b': 2, 'c': 'd'});
672 expect(m['a'], equals(1));
673 expect(m['b'], equals(2));
674 expect(m['c'], equals('d'));
675 });
676 test('values', () {
677 final m = jsify({'a': 1, 'b': 'c'}).asDartMap();
678 final values = m.values;
679 expect(values.length, equals(2));
680 expect(values.contains(1), isTrue);
681 expect(values.contains('c'), isTrue);
682 });
683 test('length', () {
684 final m = jsify({'a': 1, 'b': 'c'}).asDartMap();
685 expect(m.length, equals(2));
686 m['c'] = 'd';
687 expect(m.length, equals(3));
688 });
689 });
469 } 690 }
OLDNEW
« no previous file with comments | « sdk/lib/js/dartium/js_dartium.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698