| OLD | NEW |
| 1 /// <reference path="../typings/mocha/mocha.d.ts"/> | 1 /// <reference path="../typings/mocha/mocha.d.ts"/> |
| 2 import {expectTranslate} from './test_support'; | 2 import {expectTranslate} from './test_support'; |
| 3 | 3 |
| 4 describe('functions', () => { | 4 describe('functions', () => { |
| 5 it('supports declarations', () => { | 5 it('supports declarations', () => { |
| 6 expectTranslate('function x() {}').to.equal(`@JS() | 6 expectTranslate('function x() {}').to.equal(`@JS() |
| 7 external x();`); | 7 external x();`); |
| 8 }); | 8 }); |
| 9 it('hide param default values', () => { | 9 it('hide param default values', () => { |
| 10 expectTranslate('function x(a = 42, b = 1) { return 42; }').to.equal(`@JS() | 10 expectTranslate('function x(a = 42, b = 1) { return 42; }').to.equal(`@JS() |
| 11 external x([a, b]);`); | 11 external x([a, b]);`); |
| 12 expectTranslate('function x(p1, a = 42, b = 1, p2) { return 42; }').to.equal
(`@JS() | 12 expectTranslate('function x(p1, a = 42, b = 1, p2) { return 42; }').to.equal
(`@JS() |
| 13 external x(p1, [a, b, p2]);`); | 13 external x(p1, [a, b, p2]);`); |
| 14 }); | 14 }); |
| 15 it('translates optional parameters', () => { | 15 it('translates optional parameters', () => { |
| 16 expectTranslate('function x(a?: number, b?: number) { return 42; }').to.equa
l(`@JS() | 16 expectTranslate('function x(a?: number, b?: number) { return 42; }').to.equa
l(`@JS() |
| 17 external x([num a, num b]);`); | 17 external x([num a, num b]);`); |
| 18 expectTranslate('function x(p1, a?: number, b?: number, p2) { return 42; }')
.to.equal(`@JS() | 18 expectTranslate('function x(p1, a?: number, b?: number, p2) { return 42; }')
.to.equal(`@JS() |
| 19 external x(p1, [num a, num b, p2]);`); | 19 external x(p1, [num a, num b, p2]);`); |
| 20 }); | 20 }); |
| 21 it('supports empty returns', () => { | 21 it('supports empty returns', () => { |
| 22 expectTranslate('function x() { return; }').to.equal(`@JS() | 22 expectTranslate('function x() { return; }').to.equal(`@JS() |
| 23 external x();`); | 23 external x();`); |
| 24 }); | 24 }); |
| 25 | 25 |
| 26 it('supports type predicates', () => { |
| 27 expectTranslate('function isArrayBuffer(value?: any): value is ArrayBuffer;'
) |
| 28 .to.equal(`import "dart:typed_data" show ByteBuffer; |
| 29 |
| 30 @JS() |
| 31 external bool /*value is ByteBuffer*/ isArrayBuffer([dynamic value]);`); |
| 32 }); |
| 33 |
| 26 it('polyfill var args', () => { | 34 it('polyfill var args', () => { |
| 27 expectTranslate('function x(...a: number[]) { return 42; }').to.equal(`@JS() | 35 expectTranslate('function x(...a: number[]) { return 42; }').to.equal(`@JS() |
| 28 external x([num a1, num a2, num a3, num a4, num a5]);`); | 36 external x([num a1, num a2, num a3, num a4, num a5]);`); |
| 29 }); | 37 }); |
| 30 it('supports function parameters', () => { | 38 it('supports function parameters', () => { |
| 31 expectTranslate('function f(fn: (a: A, b: B) => C) {}').to.equal(`@JS() | 39 expectTranslate('function f(fn: (a: A, b: B) => C) {}').to.equal(`@JS() |
| 32 external f(C fn(A a, B b));`); | 40 external f(C fn(A a, B b));`); |
| 33 }); | 41 }); |
| 34 it('supports recursive function parameters', () => { | 42 it('supports recursive function parameters', () => { |
| 35 expectTranslate('function f(fn: (a: (b: B) => C) => D) {}').to.equal(`@JS() | 43 expectTranslate('function f(fn: (a: (b: B) => C) => D) {}').to.equal(`@JS() |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 }); | 101 }); |
| 94 it('replaces type usage sites, but not idents', () => { | 102 it('replaces type usage sites, but not idents', () => { |
| 95 expectTranslate(`function wobble<T, U>(u: U): T { }`).to.equal(`@JS() | 103 expectTranslate(`function wobble<T, U>(u: U): T { }`).to.equal(`@JS() |
| 96 external dynamic/*=T*/ wobble/*<T, U>*/(dynamic/*=U*/ u);`); | 104 external dynamic/*=T*/ wobble/*<T, U>*/(dynamic/*=U*/ u);`); |
| 97 }); | 105 }); |
| 98 it('translates generic calls', () => { | 106 it('translates generic calls', () => { |
| 99 expectTranslate(`function wobble<T>(foo: T): T { }`).to.equal(`@JS() | 107 expectTranslate(`function wobble<T>(foo: T): T { }`).to.equal(`@JS() |
| 100 external dynamic/*=T*/ wobble/*<T>*/(dynamic/*=T*/ foo);`); | 108 external dynamic/*=T*/ wobble/*<T>*/(dynamic/*=T*/ foo);`); |
| 101 }); | 109 }); |
| 102 }); | 110 }); |
| OLD | NEW |