2014-10-25 01:03:59 +02:00
/// <reference path="..\..\..\..\src\harness\external\mocha.d.ts" />
/// <reference path="..\..\..\..\src\harness\harnessLanguageService.ts" />
2016-03-14 21:30:38 +01:00
declare namespace chai . assert {
2016-05-24 19:17:16 +02:00
/* tslint:disable no-unused-variable */
2016-03-14 21:30:38 +01:00
function deepEqual ( actual : any , expected : any ) : void ;
2016-05-24 19:17:16 +02:00
/* tslint:enable no-unused-variable */
2016-03-14 21:30:38 +01:00
}
2016-05-24 19:17:16 +02:00
describe ( "PreProcessFile:" , function ( ) {
2015-10-15 02:36:03 +02:00
function test ( sourceText : string , readImportFile : boolean , detectJavaScriptImports : boolean , expectedPreProcess : ts.PreProcessedFileInfo ) : void {
2016-05-24 19:17:16 +02:00
const resultPreProcess = ts . preProcessFile ( sourceText , readImportFile , detectJavaScriptImports ) ;
2014-10-25 01:03:59 +02:00
2016-04-01 21:41:45 +02:00
assert . equal ( resultPreProcess . isLibFile , expectedPreProcess . isLibFile , "Pre-processed file has different value for isLibFile. Expected: " + expectedPreProcess . isLibFile + ". Actual: " + resultPreProcess . isLibFile ) ;
2014-10-25 01:03:59 +02:00
2016-04-01 21:41:45 +02:00
checkFileReferenceList ( "Imported files" , expectedPreProcess . importedFiles , resultPreProcess . importedFiles ) ;
checkFileReferenceList ( "Referenced files" , expectedPreProcess . referencedFiles , resultPreProcess . referencedFiles ) ;
checkFileReferenceList ( "Type reference directives" , expectedPreProcess . typeReferenceDirectives , resultPreProcess . typeReferenceDirectives ) ;
2015-02-25 23:00:44 +01:00
2016-03-14 21:30:38 +01:00
assert . deepEqual ( resultPreProcess . ambientExternalModules , expectedPreProcess . ambientExternalModules ) ;
}
2014-10-25 01:03:59 +02:00
2016-03-14 21:30:38 +01:00
function checkFileReferenceList ( kind : string , expected : ts.FileReference [ ] , actual : ts.FileReference [ ] ) {
if ( expected === actual ) {
return ;
2014-10-25 01:03:59 +02:00
}
2016-03-14 21:30:38 +01:00
if ( ! expected ) {
assert . isTrue ( false , ` Expected ${ JSON . stringify ( expected ) } , got ${ JSON . stringify ( actual ) } ` ) ;
}
assert . equal ( actual . length , expected . length , ` [ ${ kind } ] Actual array's length does not match expected length. Expected files: ${ JSON . stringify ( expected ) } , actual files: ${ JSON . stringify ( actual ) } ` ) ;
2014-10-25 01:03:59 +02:00
2016-05-24 19:17:16 +02:00
for ( let i = 0 ; i < expected . length ; i ++ ) {
const actualReference = actual [ i ] ;
const expectedReference = expected [ i ] ;
2016-03-14 21:30:38 +01:00
assert . equal ( actualReference . fileName , expectedReference . fileName , ` [ ${ kind } ] actual file path does not match expected. Expected: " ${ expectedReference . fileName } ". Actual: " ${ actualReference . fileName } ". ` ) ;
assert . equal ( actualReference . pos , expectedReference . pos , ` [ ${ kind } ] actual file start position does not match expected. Expected: " ${ expectedReference . pos } ". Actual: " ${ actualReference . pos } ". ` ) ;
assert . equal ( actualReference . end , expectedReference . end , ` [ ${ kind } ] actual file end pos does not match expected. Expected: " ${ expectedReference . end } ". Actual: " ${ actualReference . end } ". ` ) ;
2014-10-25 01:03:59 +02:00
}
}
2016-05-24 19:17:16 +02:00
2014-10-27 18:09:57 +01:00
describe ( "Test preProcessFiles," , function ( ) {
2014-10-25 01:03:59 +02:00
it ( "Correctly return referenced files from triple slash" , function ( ) {
2016-05-24 19:17:16 +02:00
test ( "///<reference path = \"refFile1.ts\" />" + "\n" + "///<reference path =\"refFile2.ts\"/>" + "\n" + "///<reference path=\"refFile3.ts\" />" + "\n" + "///<reference path= \"..\\refFile4d.ts\" />" ,
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2014-10-25 01:03:59 +02:00
{
2015-02-04 01:08:46 +01:00
referencedFiles : [ { fileName : "refFile1.ts" , pos : 0 , end : 37 } , { fileName : "refFile2.ts" , pos : 38 , end : 73 } ,
{ fileName : "refFile3.ts" , pos : 74 , end : 109 } , { fileName : "..\\refFile4d.ts" , pos : 110 , end : 150 } ] ,
2014-10-28 22:45:32 +01:00
importedFiles : < ts.FileReference [ ] > [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2014-10-25 01:03:59 +02:00
isLibFile : false
} ) ;
2014-10-28 22:45:32 +01:00
} ) ,
2014-10-25 01:03:59 +02:00
2014-10-28 22:45:32 +01:00
it ( "Do not return reference path because of invalid triple-slash syntax" , function ( ) {
2015-10-15 02:36:03 +02:00
test ( "///<reference path\"refFile1.ts\" />" + "\n" + "///<reference path =\"refFile2.ts\">" + "\n" + "///<referencepath=\"refFile3.ts\" />" + "\n" + "///<reference pat= \"refFile4d.ts\" />" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2014-10-25 01:03:59 +02:00
{
2014-10-28 22:45:32 +01:00
referencedFiles : < ts.FileReference [ ] > [ ] ,
importedFiles : < ts.FileReference [ ] > [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2014-10-25 01:03:59 +02:00
isLibFile : false
} ) ;
2014-10-28 22:45:32 +01:00
} ) ,
2014-10-25 01:03:59 +02:00
it ( "Correctly return imported files" , function ( ) {
2015-10-15 02:36:03 +02:00
test ( "import i1 = require(\"r1.ts\"); import i2 =require(\"r2.ts\"); import i3= require(\"r3.ts\"); import i4=require(\"r4.ts\"); import i5 = require (\"r5.ts\");" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2014-10-25 01:03:59 +02:00
{
2014-10-28 22:45:32 +01:00
referencedFiles : < ts.FileReference [ ] > [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-02-04 01:08:46 +01:00
importedFiles : [ { fileName : "r1.ts" , pos : 20 , end : 25 } , { fileName : "r2.ts" , pos : 49 , end : 54 } , { fileName : "r3.ts" , pos : 78 , end : 83 } ,
{ fileName : "r4.ts" , pos : 106 , end : 111 } , { fileName : "r5.ts" , pos : 138 , end : 143 } ] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2014-10-25 01:03:59 +02:00
isLibFile : false
} ) ;
2014-10-28 22:45:32 +01:00
} ) ,
2014-10-25 01:03:59 +02:00
it ( "Do not return imported files if readImportFiles argument is false" , function ( ) {
2015-10-15 02:36:03 +02:00
test ( "import i1 = require(\"r1.ts\"); import i2 =require(\"r2.ts\"); import i3= require(\"r3.ts\"); import i4=require(\"r4.ts\"); import i5 = require (\"r5.ts\");" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ false ,
/*detectJavaScriptImports*/ false ,
2014-10-25 01:03:59 +02:00
{
2014-10-28 22:45:32 +01:00
referencedFiles : < ts.FileReference [ ] > [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2014-10-28 22:45:32 +01:00
importedFiles : < ts.FileReference [ ] > [ ] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2014-10-25 01:03:59 +02:00
isLibFile : false
} ) ;
2014-10-28 22:45:32 +01:00
} ) ,
2014-10-25 01:03:59 +02:00
2014-10-28 01:09:59 +01:00
it ( "Do not return import path because of invalid import syntax" , function ( ) {
2015-10-15 02:36:03 +02:00
test ( "import i1 require(\"r1.ts\"); import = require(\"r2.ts\") import i3= require(\"r3.ts\"); import i5" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2014-10-28 01:09:59 +01:00
{
2014-10-28 22:45:32 +01:00
referencedFiles : < ts.FileReference [ ] > [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-02-04 01:08:46 +01:00
importedFiles : [ { fileName : "r3.ts" , pos : 73 , end : 78 } ] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2014-10-28 01:09:59 +01:00
isLibFile : false
} ) ;
2014-10-28 22:45:32 +01:00
} ) ,
2014-10-28 01:09:59 +01:00
2014-10-25 01:03:59 +02:00
it ( "Correctly return referenced files and import files" , function ( ) {
2015-10-15 02:36:03 +02:00
test ( "///<reference path=\"refFile1.ts\" />" + "\n" + "///<reference path =\"refFile2.ts\"/>" + "\n" + "import i1 = require(\"r1.ts\"); import i2 =require(\"r2.ts\");" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2014-10-25 01:03:59 +02:00
{
2015-02-04 01:08:46 +01:00
referencedFiles : [ { fileName : "refFile1.ts" , pos : 0 , end : 35 } , { fileName : "refFile2.ts" , pos : 36 , end : 71 } ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-02-04 01:08:46 +01:00
importedFiles : [ { fileName : "r1.ts" , pos : 92 , end : 97 } , { fileName : "r2.ts" , pos : 121 , end : 126 } ] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2014-10-25 01:03:59 +02:00
isLibFile : false
} ) ;
2014-10-28 22:45:32 +01:00
} ) ,
2014-10-28 01:09:59 +01:00
it ( "Correctly return referenced files and import files even with some invalid syntax" , function ( ) {
2015-10-15 02:36:03 +02:00
test ( "///<reference path=\"refFile1.ts\" />" + "\n" + "///<reference path \"refFile2.ts\"/>" + "\n" + "import i1 = require(\"r1.ts\"); import = require(\"r2.ts\"); import i2 = require(\"r3.ts\");" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2014-10-28 01:09:59 +01:00
{
2015-02-04 01:08:46 +01:00
referencedFiles : [ { fileName : "refFile1.ts" , pos : 0 , end : 35 } ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-02-04 01:08:46 +01:00
importedFiles : [ { fileName : "r1.ts" , pos : 91 , end : 96 } , { fileName : "r3.ts" , pos : 148 , end : 153 } ] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2014-10-28 01:09:59 +01:00
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2014-10-28 01:09:59 +01:00
} ) ;
2015-02-25 23:00:44 +01:00
it ( "Correctly return ES6 imports" , function ( ) {
test ( "import * as ns from \"m1\";" + "\n" +
"import def, * as ns from \"m2\";" + "\n" +
"import def from \"m3\";" + "\n" +
"import {a} from \"m4\";" + "\n" +
"import {a as A} from \"m5\";" + "\n" +
"import {a as A, b, c as C} from \"m6\";" + "\n" +
"import def , {a, b, c as C} from \"m7\";" + "\n" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2015-02-25 23:00:44 +01:00
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-02-25 23:00:44 +01:00
importedFiles : [
{ fileName : "m1" , pos : 20 , end : 22 } ,
{ fileName : "m2" , pos : 51 , end : 53 } ,
{ fileName : "m3" , pos : 73 , end : 75 } ,
{ fileName : "m4" , pos : 95 , end : 97 } ,
{ fileName : "m5" , pos : 122 , end : 124 } ,
{ fileName : "m6" , pos : 160 , end : 162 } ,
{ fileName : "m7" , pos : 199 , end : 201 }
] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2015-02-25 23:00:44 +01:00
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2015-02-25 23:00:44 +01:00
} ) ;
it ( "Correctly return ES6 exports" , function ( ) {
test ( "export * from \"m1\";" + "\n" +
"export {a} from \"m2\";" + "\n" +
"export {a as A} from \"m3\";" + "\n" +
"export {a as A, b, c as C} from \"m4\";" + "\n" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2015-02-25 23:00:44 +01:00
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-02-25 23:00:44 +01:00
importedFiles : [
{ fileName : "m1" , pos : 14 , end : 16 } ,
{ fileName : "m2" , pos : 36 , end : 38 } ,
{ fileName : "m3" , pos : 63 , end : 65 } ,
{ fileName : "m4" , pos : 101 , end : 103 } ,
] ,
2015-07-30 01:25:22 +02:00
ambientExternalModules : undefined ,
2015-02-25 23:00:44 +01:00
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2015-02-25 23:00:44 +01:00
} ) ;
2016-05-24 19:17:16 +02:00
2015-07-30 01:25:22 +02:00
it ( "Correctly return ambient external modules" , ( ) = > {
test ( `
declare module A { }
declare module "B" { }
function foo() {
}
2016-05-24 19:17:16 +02:00
` ,
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2015-10-15 02:36:03 +02:00
{
2015-07-30 01:25:22 +02:00
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-07-30 01:25:22 +02:00
importedFiles : [ ] ,
ambientExternalModules : [ "B" ] ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2015-07-30 01:25:22 +02:00
} ) ;
2015-09-10 22:24:45 +02:00
2015-09-16 00:18:24 +02:00
it ( "Correctly handles export import declarations" , function ( ) {
2015-09-10 22:24:45 +02:00
test ( "export import a = require(\"m1\");" ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
2015-09-10 22:24:45 +02:00
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-09-10 22:24:45 +02:00
importedFiles : [
{ fileName : "m1" , pos : 26 , end : 28 }
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2015-09-10 22:24:45 +02:00
} ) ;
2015-10-15 02:36:03 +02:00
it ( "Correctly handles export require calls in JavaScript files" , function ( ) {
test ( `
export import a = require ( "m1" ) ;
var x = require ( 'm2' ) ;
foo ( require ( 'm3' ) ) ;
var z = { f : require ( 'm4' ) }
` ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ true ,
2015-10-15 02:36:03 +02:00
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-10-15 02:36:03 +02:00
importedFiles : [
{ fileName : "m1" , pos : 39 , end : 41 } ,
{ fileName : "m2" , pos : 74 , end : 76 } ,
{ fileName : "m3" , pos : 105 , end : 107 } ,
{ fileName : "m4" , pos : 146 , end : 148 } ,
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2015-10-15 02:36:03 +02:00
} ) ;
it ( "Correctly handles dependency lists in define([deplist]) calls in JavaScript files" , function ( ) {
test ( `
define ( [ "mod1" , "mod2" ] , ( m1 , m2 ) = > {
} ) ;
` ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ true ,
2015-10-15 02:36:03 +02:00
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-10-15 02:36:03 +02:00
importedFiles : [
{ fileName : "mod1" , pos : 21 , end : 25 } ,
{ fileName : "mod2" , pos : 29 , end : 33 } ,
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2015-10-15 02:36:03 +02:00
} ) ;
it ( "Correctly handles dependency lists in define(modName, [deplist]) calls in JavaScript files" , function ( ) {
test ( `
define ( "mod" , [ "mod1" , "mod2" ] , ( m1 , m2 ) = > {
} ) ;
` ,
2016-05-24 19:17:16 +02:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ true ,
2015-10-15 02:36:03 +02:00
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2015-10-15 02:36:03 +02:00
importedFiles : [
{ fileName : "mod1" , pos : 28 , end : 32 } ,
{ fileName : "mod2" , pos : 36 , end : 40 } ,
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2015-10-15 02:36:03 +02:00
} ) ;
2016-03-14 21:30:38 +01:00
it ( "correctly handles augmentations in external modules - 1" , ( ) = > {
test ( `
declare module "../Observable" {
interface I { }
}
2016-05-24 19:17:16 +02:00
2016-03-14 21:30:38 +01:00
export { }
2016-05-24 19:17:16 +02:00
` ,
2016-03-14 21:30:38 +01:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2016-03-14 21:30:38 +01:00
importedFiles : [
{ "fileName" : "../Observable" , "pos" : 28 , "end" : 41 }
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2016-03-14 21:30:38 +01:00
} ) ;
it ( "correctly handles augmentations in external modules - 2" , ( ) = > {
test ( `
declare module "../Observable" {
interface I { }
}
2016-05-24 19:17:16 +02:00
2016-03-14 21:30:38 +01:00
import * as x from "m" ;
2016-05-24 19:17:16 +02:00
` ,
2016-03-14 21:30:38 +01:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2016-03-14 21:30:38 +01:00
importedFiles : [
2016-05-24 19:17:16 +02:00
{ "fileName" : "m" , "pos" : 123 , "end" : 124 } ,
2016-03-14 21:30:38 +01:00
{ "fileName" : "../Observable" , "pos" : 28 , "end" : 41 }
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2016-03-14 21:30:38 +01:00
} ) ;
it ( "correctly handles augmentations in external modules - 3" , ( ) = > {
test ( `
declare module "../Observable" {
interface I { }
}
2016-05-24 19:17:16 +02:00
2016-03-14 21:30:38 +01:00
import m = require ( "m" ) ;
2016-05-24 19:17:16 +02:00
` ,
2016-03-14 21:30:38 +01:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2016-03-14 21:30:38 +01:00
importedFiles : [
2016-05-24 19:17:16 +02:00
{ "fileName" : "m" , "pos" : 123 , "end" : 124 } ,
2016-03-14 21:30:38 +01:00
{ "fileName" : "../Observable" , "pos" : 28 , "end" : 41 }
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2016-03-14 21:30:38 +01:00
} ) ;
it ( "correctly handles augmentations in external modules - 4" , ( ) = > {
test ( `
declare module "../Observable" {
interface I { }
}
namespace N { }
export = N ;
2016-05-24 19:17:16 +02:00
` ,
2016-03-14 21:30:38 +01:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2016-03-14 21:30:38 +01:00
importedFiles : [
{ "fileName" : "../Observable" , "pos" : 28 , "end" : 41 }
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2016-03-14 21:30:38 +01:00
} ) ;
it ( "correctly handles augmentations in external modules - 5" , ( ) = > {
test ( `
declare module "../Observable" {
interface I { }
}
namespace N { }
export import IN = N ;
2016-05-24 19:17:16 +02:00
` ,
2016-03-14 21:30:38 +01:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2016-03-14 21:30:38 +01:00
importedFiles : [
{ "fileName" : "../Observable" , "pos" : 28 , "end" : 41 }
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2016-03-14 21:30:38 +01:00
} ) ;
it ( "correctly handles augmentations in external modules - 6" , ( ) = > {
test ( `
declare module "../Observable" {
interface I { }
}
export let x = 1 ;
2016-05-24 19:17:16 +02:00
` ,
2016-03-14 21:30:38 +01:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2016-03-14 21:30:38 +01:00
importedFiles : [
{ "fileName" : "../Observable" , "pos" : 28 , "end" : 41 }
] ,
ambientExternalModules : undefined ,
isLibFile : false
2016-05-24 19:17:16 +02:00
} ) ;
2016-03-14 21:30:38 +01:00
} ) ;
it ( "correctly handles augmentations in ambient external modules - 1" , ( ) = > {
test ( `
declare module "m1" {
export * from "m2" ;
declare module "augmentation" {
interface I { }
}
}
2016-05-24 19:17:16 +02:00
` ,
2016-03-14 21:30:38 +01:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2016-03-14 21:30:38 +01:00
importedFiles : [
{ "fileName" : "m2" , "pos" : 65 , "end" : 67 } ,
{ "fileName" : "augmentation" , "pos" : 102 , "end" : 114 }
] ,
ambientExternalModules : [ "m1" ] ,
isLibFile : false
} ) ;
} ) ;
it ( "correctly handles augmentations in ambient external modules - 2" , ( ) = > {
test ( `
namespace M { var x ; }
import IM = M ;
declare module "m1" {
export * from "m2" ;
declare module "augmentation" {
interface I { }
}
}
2016-05-24 19:17:16 +02:00
` ,
2016-03-14 21:30:38 +01:00
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [ ] ,
2016-04-01 21:41:45 +02:00
typeReferenceDirectives : [ ] ,
2016-03-14 21:30:38 +01:00
importedFiles : [
{ "fileName" : "m2" , "pos" : 127 , "end" : 129 } ,
{ "fileName" : "augmentation" , "pos" : 164 , "end" : 176 }
] ,
ambientExternalModules : [ "m1" ] ,
isLibFile : false
} ) ;
2016-04-01 21:41:45 +02:00
} ) ;
it ( "correctly recognizes type reference directives" , ( ) = > {
test ( `
/// <reference path="a"/>
/// <reference types="a1"/>
/// <reference path="a2"/>
/// <reference types="a3"/>
` ,
/*readImportFile*/ true ,
/*detectJavaScriptImports*/ false ,
{
referencedFiles : [
{ "pos" : 13 , "end" : 38 , "fileName" : "a" } ,
{ "pos" : 91 , "end" : 117 , "fileName" : "a2" }
] ,
typeReferenceDirectives : [
{ "pos" : 51 , "end" : 78 , "fileName" : "a1" } ,
{ "pos" : 130 , "end" : 157 , "fileName" : "a3" }
] ,
importedFiles : [ ] ,
ambientExternalModules : undefined ,
isLibFile : false
} ) ;
2016-05-24 19:17:16 +02:00
} ) ;
2014-10-25 01:03:59 +02:00
} ) ;
} ) ;