@@ -20,7 +20,10 @@ module ts {
2020 }
2121
2222 describe ( 'VersionCache TS code' , ( ) => {
23- var testContent = `/// <reference path="z.ts" />
23+ let validateEditAtLineCharIndex : ( line : number , char : number , deleteLength : number , insertString : string ) => void ;
24+
25+ before ( ( ) => {
26+ let testContent = `/// <reference path="z.ts" />
2427var x = 10;
2528var y = { zebra: 12, giraffe: "ell" };
2629z.a;
3134var p:Point=new Point();
3235var q:Point=<Point>p;`
3336
34- let { lines, lineMap} = server . LineIndex . linesFromText ( testContent ) ;
35- assert . isTrue ( lines . length > 0 , "Failed to initialize test text. Expected text to have at least one line" ) ;
37+ let { lines, lineMap} = server . LineIndex . linesFromText ( testContent ) ;
38+ assert . isTrue ( lines . length > 0 , "Failed to initialize test text. Expected text to have at least one line" ) ;
3639
37- let lineIndex = new server . LineIndex ( ) ;
38- lineIndex . load ( lines ) ;
40+ let lineIndex = new server . LineIndex ( ) ;
41+ lineIndex . load ( lines ) ;
3942
40- function validateEditAtLineCharIndex ( line : number , char : number , deleteLength : number , insertString : string ) : void {
41- let position = lineColToPosition ( lineIndex , line , char ) ;
42- validateEdit ( lineIndex , testContent , position , deleteLength , insertString ) ;
43- }
43+ validateEditAtLineCharIndex = ( line : number , char : number , deleteLength : number , insertString : string ) => {
44+ let position = lineColToPosition ( lineIndex , line , char ) ;
45+ validateEdit ( lineIndex , testContent , position , deleteLength , insertString ) ;
46+ } ;
47+ } ) ;
48+
49+ after ( ( ) => {
50+ validateEditAtLineCharIndex = undefined ;
51+ } )
4452
4553 it ( 'change 9 1 0 1 {"y"}' , ( ) => {
4654 validateEditAtLineCharIndex ( 9 , 1 , 0 , "y" ) ;
@@ -68,22 +76,35 @@ var q:Point=<Point>p;`
6876 } ) ;
6977
7078 describe ( 'VersionCache simple text' , ( ) => {
71- let testContent = `in this story:
79+ let validateEditAtPosition : ( position : number , deleteLength : number , insertString : string ) => void ;
80+ let testContent : string ;
81+ let lines : string [ ] ;
82+ let lineMap : number [ ] ;
83+ before ( ( ) => {
84+ testContent = `in this story:
7285the lazy brown fox
7386jumped over the cow
7487that ate the grass
7588that was purple at the tips
7689and grew 1cm per day` ;
7790
78- let { lines, lineMap} = server . LineIndex . linesFromText ( testContent ) ;
79- assert . isTrue ( lines . length > 0 , "Failed to initialize test text. Expected text to have at least one line" ) ;
91+ ( { lines, lineMap} = server . LineIndex . linesFromText ( testContent ) ) ;
92+ assert . isTrue ( lines . length > 0 , "Failed to initialize test text. Expected text to have at least one line" ) ;
93+
94+ let lineIndex = new server . LineIndex ( ) ;
95+ lineIndex . load ( lines ) ;
8096
81- let lineIndex = new server . LineIndex ( ) ;
82- lineIndex . load ( lines ) ;
97+ validateEditAtPosition = ( position : number , deleteLength : number , insertString : string ) => {
98+ validateEdit ( lineIndex , testContent , position , deleteLength , insertString ) ;
99+ }
100+ } ) ;
83101
84- function validateEditAtPosition ( position : number , deleteLength : number , insertString : string ) : void {
85- validateEdit ( lineIndex , testContent , position , deleteLength , insertString ) ;
86- }
102+ after ( ( ) => {
103+ validateEditAtPosition = undefined ;
104+ testContent = undefined ;
105+ lines = undefined ;
106+ lineMap = undefined ;
107+ } ) ;
87108
88109 it ( 'Insert at end of file' , ( ) => {
89110 validateEditAtPosition ( testContent . length , 0 , "hmmmm...\r\n" ) ;
@@ -159,50 +180,69 @@ and grew 1cm per day`;
159180 } ) ;
160181
161182 describe ( 'VersionCache stress test' , ( ) => {
162- const iterationCount = 20 ;
163- //const interationCount = 20000; // uncomment for testing
164-
165- // Use scanner.ts, decent size, does not change frequentlly
166- let testFileName = "src/compiler/scanner.ts" ;
167- let testContent = Harness . IO . readFile ( testFileName ) ;
168- let totalChars = testContent . length ;
169- assert . isTrue ( totalChars > 0 , "Failed to read test file." ) ;
170-
171- let { lines, lineMap} = server . LineIndex . linesFromText ( testContent ) ;
172- assert . isTrue ( lines . length > 0 , "Failed to initialize test text. Expected text to have at least one line" ) ;
173-
174- let lineIndex = new server . LineIndex ( ) ;
175- lineIndex . load ( lines ) ;
176-
177183 let rsa : number [ ] = [ ] ;
178184 let la : number [ ] = [ ] ;
179185 let las : number [ ] = [ ] ;
180186 let elas : number [ ] = [ ] ;
181187 let ersa : number [ ] = [ ] ;
182188 let ela : number [ ] = [ ] ;
183- let etotalChars = totalChars ;
184-
185- for ( let j = 0 ; j < 100000 ; j ++ ) {
186- rsa [ j ] = Math . floor ( Math . random ( ) * totalChars ) ;
187- la [ j ] = Math . floor ( Math . random ( ) * ( totalChars - rsa [ j ] ) ) ;
188- if ( la [ j ] > 4 ) {
189- las [ j ] = 4 ;
190- }
191- else {
192- las [ j ] = la [ j ] ;
193- }
194- if ( j < 4000 ) {
195- ersa [ j ] = Math . floor ( Math . random ( ) * etotalChars ) ;
196- ela [ j ] = Math . floor ( Math . random ( ) * ( etotalChars - ersa [ j ] ) ) ;
197- if ( ela [ j ] > 4 ) {
198- elas [ j ] = 4 ;
189+ const iterationCount = 20 ;
190+ //const iterationCount = 20000; // uncomment for testing
191+ let lines : string [ ] ;
192+ let lineMap : number [ ] ;
193+ let lineIndex : server . LineIndex ;
194+ let testContent : string ;
195+
196+ before ( ( ) => {
197+ // Use scanner.ts, decent size, does not change frequently
198+ let testFileName = "src/compiler/scanner.ts" ;
199+ testContent = Harness . IO . readFile ( testFileName ) ;
200+ let totalChars = testContent . length ;
201+ assert . isTrue ( totalChars > 0 , "Failed to read test file." ) ;
202+
203+ ( { lines, lineMap} = server . LineIndex . linesFromText ( testContent ) ) ;
204+ assert . isTrue ( lines . length > 0 , "Failed to initialize test text. Expected text to have at least one line" ) ;
205+
206+ lineIndex = new server . LineIndex ( ) ;
207+ lineIndex . load ( lines ) ;
208+
209+ let etotalChars = totalChars ;
210+
211+ for ( let j = 0 ; j < 100000 ; j ++ ) {
212+ rsa [ j ] = Math . floor ( Math . random ( ) * totalChars ) ;
213+ la [ j ] = Math . floor ( Math . random ( ) * ( totalChars - rsa [ j ] ) ) ;
214+ if ( la [ j ] > 4 ) {
215+ las [ j ] = 4 ;
199216 }
200217 else {
201- elas [ j ] = ela [ j ] ;
218+ las [ j ] = la [ j ] ;
219+ }
220+ if ( j < 4000 ) {
221+ ersa [ j ] = Math . floor ( Math . random ( ) * etotalChars ) ;
222+ ela [ j ] = Math . floor ( Math . random ( ) * ( etotalChars - ersa [ j ] ) ) ;
223+ if ( ela [ j ] > 4 ) {
224+ elas [ j ] = 4 ;
225+ }
226+ else {
227+ elas [ j ] = ela [ j ] ;
228+ }
229+ etotalChars += ( las [ j ] - elas [ j ] ) ;
202230 }
203- etotalChars += ( las [ j ] - elas [ j ] ) ;
204231 }
205- }
232+ } ) ;
233+
234+ after ( ( ) => {
235+ rsa = undefined ;
236+ la = undefined ;
237+ las = undefined ;
238+ elas = undefined ;
239+ ersa = undefined ;
240+ ela = undefined ;
241+ lines = undefined ;
242+ lineMap = undefined ;
243+ lineIndex = undefined ;
244+ testContent = undefined ;
245+ } ) ;
206246
207247 it ( "Range (average length 1/4 file size)" , ( ) => {
208248 for ( let i = 0 ; i < iterationCount ; i ++ ) {
0 commit comments