OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 define(['dart_sdk'], function(dart_sdk) { | 5 define(['dart_sdk'], function(dart_sdk) { |
6 const assert = chai.assert; | 6 const assert = chai.assert; |
7 const core = dart_sdk.core; | 7 const core = dart_sdk.core; |
8 const collection = dart_sdk.collection; | 8 const collection = dart_sdk.collection; |
9 const dart = dart_sdk.dart; | 9 const dart = dart_sdk.dart; |
10 const dartx = dart.dartx; | 10 const dartx = dart.dartx; |
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 // dart.StrongModeError); | 339 // dart.StrongModeError); |
340 // assert.throws(() => dart.as(m6, Map$(String, String)), | 340 // assert.throws(() => dart.as(m6, Map$(String, String)), |
341 // dart.StrongModeError); | 341 // dart.StrongModeError); |
342 assert.equal(dart.as(m1, Map$(String, String)), m1); | 342 assert.equal(dart.as(m1, Map$(String, String)), m1); |
343 // assert.throws(() => dart.as(m2, Map$(String, String)), | 343 // assert.throws(() => dart.as(m2, Map$(String, String)), |
344 // dart.StrongModeError); | 344 // dart.StrongModeError); |
345 }); | 345 }); |
346 | 346 |
347 test('constructors', () => { | 347 test('constructors', () => { |
348 class C extends core.Object { | 348 class C extends core.Object { |
349 C(x) {}; | 349 new(x) {}; |
350 named(x, y) {}; | 350 named(x, y) {}; |
351 } | 351 } |
352 dart.defineNamedConstructor(C, 'named'); | 352 dart.defineNamedConstructor(C, 'named'); |
353 dart.setSignature(C, { | 353 dart.setSignature(C, { |
354 constructors: () => ({ | 354 constructors: () => ({ |
355 C: dart.definiteFunctionType(C, [core.int]), | 355 new: dart.definiteFunctionType(C, [core.int]), |
356 named: dart.definiteFunctionType(C, [core.int, core.int]) | 356 named: dart.definiteFunctionType(C, [core.int, core.int]) |
357 }) | 357 }) |
358 }); | 358 }); |
359 let getType = dart.classGetConstructorType; | 359 let getType = dart.classGetConstructorType; |
360 isSubtype(getType(C), dart.functionType(C, [core.int])); | 360 isSubtype(getType(C), dart.functionType(C, [core.int])); |
361 isSubtype(getType(C), dart.functionType(C, [core.String]), false); | 361 isSubtype(getType(C), dart.functionType(C, [core.String]), false); |
362 isSubtype(getType(C, 'C'), dart.functionType(C, [core.int])); | 362 isSubtype(getType(C, 'new'), dart.functionType(C, [core.int])); |
363 isSubtype(getType(C, 'C'), dart.functionType(C, [core.String]), false); | 363 isSubtype(getType(C, 'new'), dart.functionType(C, [core.String]), false); |
364 isSubtype(getType(C, 'named'), dart.functionType(C, [core.int, core.int]))
; | 364 isSubtype(getType(C, 'named'), dart.functionType(C, [core.int, core.int]))
; |
365 isSubtype(getType(C, 'named'), | 365 isSubtype(getType(C, 'named'), |
366 dart.functionType(C, [core.int, core.String]), false); | 366 dart.functionType(C, [core.int, core.String]), false); |
367 }); | 367 }); |
368 | 368 |
369 test('generic and inheritance', () => { | 369 test('generic and inheritance', () => { |
370 let aaraw = new AA(); | 370 let aaraw = new AA(); |
371 let aarawtype = getReifiedType(aaraw); | 371 let aarawtype = getReifiedType(aaraw); |
372 let aadynamic = new (AA$(dynamic, dynamic))(); | 372 let aadynamic = new (AA$(dynamic, dynamic))(); |
373 let aadynamictype = getReifiedType(aadynamic); | 373 let aadynamictype = getReifiedType(aadynamic); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 }); | 504 }); |
505 | 505 |
506 test('dcall', () => { | 506 test('dcall', () => { |
507 function dd2d(x, y) {return x}; | 507 function dd2d(x, y) {return x}; |
508 dart.fn(dd2d); | 508 dart.fn(dd2d); |
509 function ii2i(x, y) {return x}; | 509 function ii2i(x, y) {return x}; |
510 dart.fn(ii2i, dart.definiteFunctionType(core.int, [core.int, core.int])); | 510 dart.fn(ii2i, dart.definiteFunctionType(core.int, [core.int, core.int])); |
511 function ii_2i(x, y) {return x}; | 511 function ii_2i(x, y) {return x}; |
512 dart.fn(ii_2i, dart.definiteFunctionType(core.int, [core.int], [core.int])
); | 512 dart.fn(ii_2i, dart.definiteFunctionType(core.int, [core.int], [core.int])
); |
513 function i_i2i(x, opts) {return x}; | 513 function i_i2i(x, opts) {return x}; |
514 dart.fn(i_i2i, | 514 dart.fn(i_i2i, |
515 dart.definiteFunctionType(core.int, [core.int], {extra: core.int})
); | 515 dart.definiteFunctionType(core.int, [core.int], {extra: core.int})
); |
516 | 516 |
517 assert.equal(dart.dcall(dd2d, 0, 1), 0); | 517 assert.equal(dart.dcall(dd2d, 0, 1), 0); |
518 assert.equal(dart.dcall(dd2d, "hello", "world"), "hello"); | 518 assert.equal(dart.dcall(dd2d, "hello", "world"), "hello"); |
519 assert.throws(() => dart.dcall(dd2d, 0)); | 519 assert.throws(() => dart.dcall(dd2d, 0)); |
520 assert.throws(() => dart.dcall(dd2d, 0, 1, 2)); | 520 assert.throws(() => dart.dcall(dd2d, 0, 1, 2)); |
521 assert.throws(() => dart.dcall(dd2d, 0, 1, {extra : 3})); | 521 assert.throws(() => dart.dcall(dd2d, 0, 1, {extra : 3})); |
522 // This should throw but currently doesn't. | 522 // This should throw but currently doesn't. |
523 // assert.throws(() => dart.dcall(dd2d, 0, {extra:3})); | 523 // assert.throws(() => dart.dcall(dd2d, 0, {extra:3})); |
524 | 524 |
(...skipping 10 matching lines...) Expand all Loading... |
535 assert.throws(() => dart.dcall(i_i2i, 0, 1)); | 535 assert.throws(() => dart.dcall(i_i2i, 0, 1)); |
536 assert.throws(() => dart.dcall(i_i2i, "hello", "world")); | 536 assert.throws(() => dart.dcall(i_i2i, "hello", "world")); |
537 assert.equal(dart.dcall(i_i2i, 0), 0); | 537 assert.equal(dart.dcall(i_i2i, 0), 0); |
538 assert.throws(() => dart.dcall(i_i2i, 0, 1, 2)); | 538 assert.throws(() => dart.dcall(i_i2i, 0, 1, 2)); |
539 assert.equal(dart.dcall(i_i2i, 0, {extra: 3}), 0); | 539 assert.equal(dart.dcall(i_i2i, 0, {extra: 3}), 0); |
540 }); | 540 }); |
541 | 541 |
542 test('dsend', () => { | 542 test('dsend', () => { |
543 class Tester extends core.Object { | 543 class Tester extends core.Object { |
544 new() { | 544 new() { |
545 this.f = dart.fn(x => x, | 545 this.f = dart.fn(x => x, |
546 dart.definiteFunctionType(core.int, [core.int])); | 546 dart.definiteFunctionType(core.int, [core.int])); |
547 this.me = this; | 547 this.me = this; |
548 } | 548 } |
549 m(x, y) {return x;} | 549 m(x, y) {return x;} |
550 call(x) {return x;} | 550 call(x) {return x;} |
551 static s(x, y) { return x;} | 551 static s(x, y) { return x;} |
552 } | 552 } |
553 dart.setSignature(Tester, { | 553 dart.setSignature(Tester, { |
554 methods: () => ({ | 554 methods: () => ({ |
555 m: dart.definiteFunctionType(core.int, [core.int, core.int]), | 555 m: dart.definiteFunctionType(core.int, [core.int, core.int]), |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
613 | 613 |
614 // Set the type eagerly | 614 // Set the type eagerly |
615 function ii2i(x, y) {return x}; | 615 function ii2i(x, y) {return x}; |
616 dart.fn(ii2i, dart.definiteFunctionType(core.int, [core.int, core.int])); | 616 dart.fn(ii2i, dart.definiteFunctionType(core.int, [core.int, core.int])); |
617 checkType(ii2i, dart.functionType(core.int, | 617 checkType(ii2i, dart.functionType(core.int, |
618 [core.int, core.int])); | 618 [core.int, core.int])); |
619 | 619 |
620 // Set the type lazily | 620 // Set the type lazily |
621 function ss2s(x, y) {return x}; | 621 function ss2s(x, y) {return x}; |
622 var coreString; | 622 var coreString; |
623 dart.lazyFn(ss2s, | 623 dart.lazyFn(ss2s, |
624 () => dart.definiteFunctionType(coreString, | 624 () => dart.definiteFunctionType(coreString, |
625 [coreString, coreString])); | 625 [coreString, coreString])); |
626 coreString = core.String; | 626 coreString = core.String; |
627 checkType(ss2s, dart.functionType(core.String, | 627 checkType(ss2s, dart.functionType(core.String, |
628 [core.String, core.String])); | 628 [core.String, core.String])); |
629 | 629 |
630 // Optional types | 630 // Optional types |
631 function ii_2i(x, y) {return x}; | 631 function ii_2i(x, y) {return x}; |
632 dart.fn(ii_2i, dart.definiteFunctionType(core.int, [core.int], [core.int])
); | 632 dart.fn(ii_2i, dart.definiteFunctionType(core.int, [core.int], [core.int])
); |
633 checkType(ii_2i, dart.functionType(core.int, [core.int], | 633 checkType(ii_2i, dart.functionType(core.int, [core.int], |
634 [core.int])); | 634 [core.int])); |
635 checkType(ii_2i, dart.functionType(core.int, [core.int, | 635 checkType(ii_2i, dart.functionType(core.int, [core.int, |
636 core.int])); | 636 core.int])); |
637 checkType(ii_2i, dart.functionType(core.int, [], [core.int, | 637 checkType(ii_2i, dart.functionType(core.int, [], [core.int, |
638 core.int]), | 638 core.int]), |
639 false); | 639 false); |
640 checkType(ii_2i, dart.functionType(core.int, [core.int], | 640 checkType(ii_2i, dart.functionType(core.int, [core.int], |
641 {extra: core.int}), false); | 641 {extra: core.int}), false); |
642 | 642 |
643 // Named types | 643 // Named types |
644 function i_i2i(x, opts) {return x}; | 644 function i_i2i(x, opts) {return x}; |
645 dart.fn(i_i2i, dart.definiteFunctionType(core.int, [core.int], | 645 dart.fn(i_i2i, dart.definiteFunctionType(core.int, [core.int], |
646 {extra: core.int})); | 646 {extra: core.int})); |
647 checkType(i_i2i, dart.functionType(core.int, [core.int], | 647 checkType(i_i2i, dart.functionType(core.int, [core.int], |
648 {extra: core.int})); | 648 {extra: core.int})); |
649 checkType(i_i2i, dart.functionType(core.int, | 649 checkType(i_i2i, dart.functionType(core.int, |
650 [core.int, core.int]), false); | 650 [core.int, core.int]), false); |
651 checkType(i_i2i, dart.functionType(core.int, [core.int], {})); | 651 checkType(i_i2i, dart.functionType(core.int, [core.int], {})); |
652 checkType(i_i2i, | 652 checkType(i_i2i, |
653 dart.functionType(core.int, [], {extra: core.int, | 653 dart.functionType(core.int, [], {extra: core.int, |
654 also: core.int}), false); | 654 also: core.int}), false); |
655 checkType(i_i2i, | 655 checkType(i_i2i, |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 class M2 { | 730 class M2 { |
731 m(x) {return x;} | 731 m(x) {return x;} |
732 }; | 732 }; |
733 dart.setSignature(M2, { | 733 dart.setSignature(M2, { |
734 methods: () => ({ | 734 methods: () => ({ |
735 m: dart.definiteFunctionType(core.Object, [core.int]), | 735 m: dart.definiteFunctionType(core.Object, [core.int]), |
736 }) | 736 }) |
737 }); | 737 }); |
738 | 738 |
739 class O extends dart.mixin(Base, M1, M2) { | 739 class O extends dart.mixin(Base, M1, M2) { |
740 O() {}; | 740 new() {}; |
741 }; | 741 }; |
742 dart.setSignature(O, {}); | 742 dart.setSignature(O, {}); |
743 var obj = new O(); | 743 var obj = new O(); |
744 var m = dart.bind(obj, 'm'); | 744 var m = dart.bind(obj, 'm'); |
745 checkType(m, dart.functionType(core.Object, [core.int])); | 745 checkType(m, dart.functionType(core.Object, [core.int])); |
746 checkType(m, dart.functionType(core.int, [core.int]), false, true); | 746 checkType(m, dart.functionType(core.int, [core.int]), false, true); |
747 | 747 |
748 // Test inherited signatures | 748 // Test inherited signatures |
749 class P extends O { | 749 class P extends O { |
750 P() {}; | 750 new() {}; |
751 m(x) {return x;}; | 751 m(x) {return x;}; |
752 }; | 752 }; |
753 dart.setSignature(P, {}); | 753 dart.setSignature(P, {}); |
754 var obj = new P(); | 754 var obj = new P(); |
755 var m = dart.bind(obj, 'm'); | 755 var m = dart.bind(obj, 'm'); |
756 checkType(m, dart.functionType(core.Object, [core.int])); | 756 checkType(m, dart.functionType(core.Object, [core.int])); |
757 checkType(m, dart.functionType(core.int, [core.int]), false, true); | 757 checkType(m, dart.functionType(core.int, [core.int]), false, true); |
758 }); | 758 }); |
759 | 759 |
760 test('Object members', () => { | 760 test('Object members', () => { |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1177 list[0] = 42; | 1177 list[0] = 42; |
1178 assert.throws(() => list.add(42)); | 1178 assert.throws(() => list.add(42)); |
1179 }); | 1179 }); |
1180 | 1180 |
1181 test('toString on ES Symbol', () => { | 1181 test('toString on ES Symbol', () => { |
1182 let sym = Symbol('_foobar'); | 1182 let sym = Symbol('_foobar'); |
1183 assert.equal(dart.toString(sym), 'Symbol(_foobar)'); | 1183 assert.equal(dart.toString(sym), 'Symbol(_foobar)'); |
1184 }); | 1184 }); |
1185 }); | 1185 }); |
1186 }); | 1186 }); |
OLD | NEW |