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

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: rename asJsMap -> asDartMap + change JS type to var 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
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('clear', () {
518 final JsArray m = jsify(["a", "b"]);
519 expect(m.length, equals(2));
520 m.clear();
521 expect(m.length, equals(0));
522 });
523 test('remove', () {
524 final JsArray m = jsify(["a", "b"]);
525 expect(m.length, equals(2));
526 m.remove("a");
527 expect(m.length, equals(1));
528 expect(m[0], equals("b"));
529 });
530 test('operator []', () {
531 final JsArray m = jsify(["a", "b"]);
532 expect(() => m[-1], throwsA(isRangeError));
533 expect(() => m[2], throwsA(isRangeError));
534 expect(m[0], equals("a"));
535 expect(m[1], equals("b"));
536 });
537 test('operator []=', () {
538 final JsArray m = jsify(["a", "b"]);
539 expect(() => m[-1] = "c", throwsA(isRangeError));
540 expect(() => m[2] = "c", throwsA(isRangeError));
541 m[0] = "d";
542 m[1] = "e";
543 expect(m[0], equals("d"));
544 expect(m[1], equals("e"));
545 });
546 test('set length', () {
547 final JsArray m = jsify(["a", "b"]);
548 m.length = 10;
549 expect(m.length, equals(10));
550 expect(m[5], equals(null));
551 m.length = 1;
552 expect(m.length, equals(1));
553 expect(m[0], equals("a"));
554 });
555 test('sort', () {
556 final JsArray m = jsify(["c", "a", "b"]);
557 m.sort();
558 expect(m.length, equals(3));
559 expect(m[0], equals("a"));
560 expect(m[1], equals("b"));
561 expect(m[2], equals("c"));
562 });
563 test('insert', () {
564 final JsArray m = jsify(["a", "b", "c"]);
565 m.insert(1, "d");
566 expect(m.length, equals(4));
567 expect(m[0], equals("a"));
568 expect(m[1], equals("d"));
569 expect(m[2], equals("b"));
570 expect(m[3], equals("c"));
571 });
572 test('removeAt', () {
573 final JsArray m = jsify(["a", "b", "c"]);
574 expect(m.removeAt(1), equals("b"));
575 expect(m.length, equals(2));
576 expect(m[0], equals("a"));
577 expect(m[1], equals("c"));
578 expect(() => m.removeAt(2), throwsA(isRangeError));
579 });
580 test('removeLast', () {
581 final JsArray m = jsify(["a", "b", "c", null]);
582 expect(m.removeLast(), isNull);
583 expect(m.removeLast(), equals("c"));
584 expect(m.removeLast(), equals("b"));
585 expect(m.removeLast(), equals("a"));
586 expect(m.length, equals(0));
587 });
588 test('sublist', () {
589 final JsArray m = jsify(["a", "b", "c", null]);
590 final sl1 = m.sublist(2);
591 expect(sl1.length, equals(2));
592 expect(sl1[0], equals("c"));
593 expect(sl1[1], isNull);
594 final sl2 = m.sublist(1, 3);
595 expect(sl2.length, equals(2));
596 expect(sl2[0], equals("b"));
597 expect(sl2[1], equals("c"));
598 });
599 test('setRange', () {
600 final JsArray m = jsify(["a", "b", "c", null]);
601 m.setRange(1, 2, [null, null]);
602 expect(m.length, equals(4));
603 expect(m[0], equals("a"));
604 expect(m[1], isNull);
605 expect(m[2], isNull);
606 expect(m[3], isNull);
607 m.setRange(3, 1, [null, "c", null], 1);
608 expect(m[0], equals("a"));
609 expect(m[1], isNull);
610 expect(m[2], isNull);
611 expect(m[3], equals("c"));
612 });
613 test('removeRange', () {
614 final JsArray m = jsify(["a", "b", "c", null]);
615 m.removeRange(1, 3);
616 expect(m.length, equals(2));
617 expect(m[0], equals("a"));
618 expect(m[1], isNull);
619 });
620 });
621 group('JsObject as Map<String, dynamic>', () {
622 test('get keys', () {
623 final m = jsify({"a": 1, "b": 2}).asDartMap();
624 final keys = m.keys;
625 expect(keys.length, equals(2));
626 expect(keys, contains("a"));
627 expect(keys, contains("b"));
628 });
629 test('containsKey', () {
630 final m = jsify({"a": 1, "b": "c"}).asDartMap();
631 expect(m.containsKey("a"), equals(true));
632 expect(m.containsKey("d"), equals(false));
633 });
634 test('operator []', () {
635 final m = jsify({"a": 1, "b": "c"}).asDartMap();
636 expect(m["a"], equals(1));
637 expect(m["b"], equals("c"));
638 });
639 test('operator []=', () {
640 final m = jsify({}).asDartMap();
641 m["a"] = 1;
642 expect(m["a"], equals(1));
643 expect(m.length, equals(1));
644 m["b"] = "c";
645 expect(m["b"], equals("c"));
646 expect(m.length, equals(2));
647 });
648 test('remove', () {
649 final m = jsify({"a": 1, "b": "c"}).asDartMap();
650 expect(m.remove("a"), equals(1));
651 expect(m["b"], equals("c"));
652 expect(m.length, equals(1));
653 });
654 });
469 } 655 }
OLDNEW
« sdk/lib/js/dartium/js_dartium.dart ('K') | « 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