OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |