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

Side by Side Diff: test/declaration_test.ts

Issue 2394683003: JS Interop Facade generation polish.
Patch Set: more cleanup Created 4 years, 2 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
« no previous file with comments | « lib/type.ts ('k') | test/js_interop_test.ts » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /// <reference path="../typings/mocha/mocha.d.ts"/> 1 /// <reference path="../typings/mocha/mocha.d.ts"/>
2 import {expectErroneousCode, expectTranslate} from './test_support'; 2 import {expectErroneousCode, expectTranslate} from './test_support';
3 3
4 describe('variables', () => { 4 describe('variables', () => {
5 it('should print variable declaration with initializer', () => { 5 it('should print variable declaration with initializer', () => {
6 expectTranslate('var a:number = 1;').to.equal(`@JS() 6 expectTranslate('var a:number = 1;').to.equal(`@JS()
7 external num get a; 7 external num get a;
8 @JS() 8 @JS()
9 external set a(num v);`); 9 external set a(num v);`);
10 }); 10 });
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 expectTranslate('interface X { x: string; y; }').to.equal(`@anonymous 385 expectTranslate('interface X { x: string; y; }').to.equal(`@anonymous
386 @JS() 386 @JS()
387 abstract class X { 387 abstract class X {
388 external String get x; 388 external String get x;
389 external set x(String v); 389 external set x(String v);
390 external get y; 390 external get y;
391 external set y(v); 391 external set y(v);
392 external factory X({String x, y}); 392 external factory X({String x, y});
393 }`); 393 }`);
394 }); 394 });
395
396 it('supports interfaces with constructors', () => {
397 expectTranslate(`
398 interface XStatic {
399 new (a: string, b): X;
400 foo();
401 }
402
403 declare var X: XStatic;
404 `).to.equal(`@JS("X")
405 abstract class XStatic {
406 external factory XStatic(String a, b);
407 external foo();
408 }
409
410 @JS()
411 external XStatic get X;
412 @JS()
413 external set X(XStatic v);`);
414
415 expectTranslate(`
416 interface XStatic {
417 new (a: string, b): XStatic;
418 foo();
419 }
420
421 declare module Foo {
422 declare var X: XStatic;
423 }
424 `).to.equal(`@JS("Foo.X")
425 abstract class XStatic {
426 external factory XStatic(String a, b);
427 external foo();
428 }
429
430 // Module Foo
431 @JS("Foo.X")
432 external XStatic get X;
433 @JS("Foo.X")
434 external set X(XStatic v);
435 // End module Foo`);
436
437 // Case where we cannot find a variable matching the interface so it is unsa fe to give the
438 // interface a constructor.
439 expectTranslate(`
440 interface XStatic {
441 new (a: string|bool, b): XStatic;
442 foo();
443 }`).to.equal(`@anonymous
444 @JS()
445 abstract class XStatic {
446 // Constructors on anonymous interfaces are not yet supported.
447 /*external factory XStatic(String|bool a, b);*/
448 external foo();
449 }`);
450 });
395 }); 451 });
396 452
397 describe('single call signature interfaces', () => { 453 describe('single call signature interfaces', () => {
398 it('should support declaration', () => { 454 it('should support declaration', () => {
399 expectTranslate('interface F { (n: number): boolean; }').to.equal('typedef b ool F(num n);'); 455 expectTranslate('interface F { (n: number): boolean; }').to.equal('typedef b ool F(num n);');
400 }); 456 });
401 it('should support generics', () => { 457 it('should support generics', () => {
402 expectTranslate('interface F<A, B> { (a: A): B; }').to.equal('typedef B F<A, B>(A a);'); 458 expectTranslate('interface F<A, B> { (a: A): B; }').to.equal('typedef B F<A, B>(A a);');
403 }); 459 });
404 }); 460 });
(...skipping 19 matching lines...) Expand all
424 external static num get Blue; 480 external static num get Blue;
425 }`); 481 }`);
426 }); 482 });
427 it('should ingore switch', () => { 483 it('should ingore switch', () => {
428 expectTranslate('switch(c) { case Color.Red: break; default: break; }').to.e qual(''); 484 expectTranslate('switch(c) { case Color.Red: break; default: break; }').to.e qual('');
429 }); 485 });
430 it('does not support const enum', () => { 486 it('does not support const enum', () => {
431 expectErroneousCode('const enum Color { Red }').to.throw('const enums are no t supported'); 487 expectErroneousCode('const enum Color { Red }').to.throw('const enums are no t supported');
432 }); 488 });
433 }); 489 });
OLDNEW
« no previous file with comments | « lib/type.ts ('k') | test/js_interop_test.ts » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698