@@ -14,85 +14,100 @@ namespace ts {
14
14
} ) ;
15
15
}
16
16
17
- function testExtractRange ( s : string ) : void {
18
- const t = extractTest ( s ) ;
19
- const f = createSourceFile ( "a.ts" , t . source , ScriptTarget . Latest , /*setParentNodes*/ true ) ;
20
- const selectionRange = t . ranges . get ( "selection" ) ;
21
- if ( ! selectionRange ) {
22
- throw new Error ( `Test ${ s } does not specify selection range` ) ;
23
- }
24
- const result = refactor . extractSymbol . getRangeToExtract ( f , createTextSpanFromRange ( selectionRange ) ) ;
25
- const expectedRange = t . ranges . get ( "extracted" ) ;
26
- if ( expectedRange ) {
27
- let pos : number , end : number ;
28
- const targetRange = result . targetRange ! ;
29
- if ( isArray ( targetRange . range ) ) {
30
- pos = targetRange . range [ 0 ] . getStart ( f ) ;
31
- end = last ( targetRange . range ) . getEnd ( ) ;
17
+ function testExtractRange ( caption : string , s : string ) {
18
+ return it ( caption , ( ) => {
19
+ const t = extractTest ( s ) ;
20
+ const f = createSourceFile ( "a.ts" , t . source , ScriptTarget . Latest , /*setParentNodes*/ true ) ;
21
+ const selectionRange = t . ranges . get ( "selection" ) ;
22
+ if ( ! selectionRange ) {
23
+ throw new Error ( `Test ${ s } does not specify selection range` ) ;
24
+ }
25
+ const result = refactor . extractSymbol . getRangeToExtract ( f , createTextSpanFromRange ( selectionRange ) ) ;
26
+ const expectedRange = t . ranges . get ( "extracted" ) ;
27
+ if ( expectedRange ) {
28
+ let pos : number , end : number ;
29
+ const targetRange = result . targetRange ! ;
30
+ if ( isArray ( targetRange . range ) ) {
31
+ pos = targetRange . range [ 0 ] . getStart ( f ) ;
32
+ end = last ( targetRange . range ) . getEnd ( ) ;
33
+ }
34
+ else {
35
+ pos = targetRange . range . getStart ( f ) ;
36
+ end = targetRange . range . getEnd ( ) ;
37
+ }
38
+ assert . equal ( pos , expectedRange . pos , "incorrect pos of range" ) ;
39
+ assert . equal ( end , expectedRange . end , "incorrect end of range" ) ;
32
40
}
33
41
else {
34
- pos = targetRange . range . getStart ( f ) ;
35
- end = targetRange . range . getEnd ( ) ;
42
+ assert . isTrue ( ! result . targetRange , `expected range to extract to be undefined` ) ;
36
43
}
37
- assert . equal ( pos , expectedRange . pos , "incorrect pos of range" ) ;
38
- assert . equal ( end , expectedRange . end , "incorrect end of range" ) ;
39
- }
40
- else {
41
- assert . isTrue ( ! result . targetRange , `expected range to extract to be undefined` ) ;
42
- }
44
+ } ) ;
43
45
}
44
46
45
47
describe ( "unittests:: services:: extract:: extractRanges" , ( ) => {
46
- it ( "get extract range from selection" , ( ) => {
47
- testExtractRange ( `
48
+ describe ( "get extract range from selection" , ( ) => {
49
+ testExtractRange ( "extractRange1" , `
48
50
[#|
49
51
[$|var x = 1;
50
52
var y = 2;|]|]
51
53
` ) ;
52
- testExtractRange ( `
53
- [#|
54
- var x = 1;
55
- var y = 2|];
54
+ testExtractRange ( "extractRange2" , `
55
+ [$|[#|var x = 1;
56
+ var y = 2|];|]
56
57
` ) ;
57
- testExtractRange ( `
58
- [#|var x = 1 |];
58
+ testExtractRange ( "extractRange3" , `
59
+ [#|var x = [$|1|] |];
59
60
var y = 2;
60
61
` ) ;
61
- testExtractRange ( `
62
+ testExtractRange ( "extractRange4" , `
63
+ var x = [$|10[#|00|]|];
64
+ ` ) ;
65
+ testExtractRange ( "extractRange5" , `
66
+ [$|va[#|r foo = 1;
67
+ var y = 200|]0;|]
68
+ ` ) ;
69
+ testExtractRange ( "extractRange6" , `
70
+ var x = [$|fo[#|o.bar.baz()|]|];
71
+ ` ) ;
72
+ testExtractRange ( "extractRange7" , `
62
73
if ([#|[#extracted|a && b && c && d|]|]) {
63
74
}
64
75
` ) ;
65
- testExtractRange ( `
76
+ testExtractRange ( "extractRange8" , `
66
77
if [#|(a && b && c && d|]) {
67
78
}
68
79
` ) ;
69
- testExtractRange ( `
80
+ testExtractRange ( "extractRange9" , `
81
+ if ([$|a[#|a && b && c && d|]d|]) {
82
+ }
83
+ ` ) ;
84
+ testExtractRange ( "extractRange10" , `
70
85
if (a && b && c && d) {
71
86
[#| [$|var x = 1;
72
87
console.log(x);|] |]
73
88
}
74
89
` ) ;
75
- testExtractRange ( `
90
+ testExtractRange ( "extractRange11" , `
76
91
[#|
77
92
if (a) {
78
93
return 100;
79
94
} |]
80
95
` ) ;
81
- testExtractRange ( `
96
+ testExtractRange ( "extractRange12" , `
82
97
function foo() {
83
98
[#| [$|if (a) {
84
99
}
85
100
return 100|] |]
86
101
}
87
102
` ) ;
88
- testExtractRange ( `
103
+ testExtractRange ( "extractRange13" , `
89
104
[#|
90
105
[$|l1:
91
106
if (x) {
92
107
break l1;
93
108
}|]|]
94
109
` ) ;
95
- testExtractRange ( `
110
+ testExtractRange ( "extractRange14" , `
96
111
[#|
97
112
[$|l2:
98
113
{
@@ -101,21 +116,21 @@ namespace ts {
101
116
break l2;
102
117
}|]|]
103
118
` ) ;
104
- testExtractRange ( `
119
+ testExtractRange ( "extractRange15" , `
105
120
while (true) {
106
121
[#| if(x) {
107
122
}
108
123
break; |]
109
124
}
110
125
` ) ;
111
- testExtractRange ( `
126
+ testExtractRange ( "extractRange16" , `
112
127
while (true) {
113
128
[#| if(x) {
114
129
}
115
130
continue; |]
116
131
}
117
132
` ) ;
118
- testExtractRange ( `
133
+ testExtractRange ( "extractRange17" , `
119
134
l3:
120
135
{
121
136
[#|
@@ -124,7 +139,7 @@ namespace ts {
124
139
break l3; |]
125
140
}
126
141
` ) ;
127
- testExtractRange ( `
142
+ testExtractRange ( "extractRange18" , `
128
143
function f() {
129
144
while (true) {
130
145
[#|
@@ -134,7 +149,7 @@ namespace ts {
134
149
}
135
150
}
136
151
` ) ;
137
- testExtractRange ( `
152
+ testExtractRange ( "extractRange19" , `
138
153
function f() {
139
154
while (true) {
140
155
[#|
@@ -145,13 +160,13 @@ namespace ts {
145
160
}
146
161
}
147
162
` ) ;
148
- testExtractRange ( `
163
+ testExtractRange ( "extractRange20" , `
149
164
function f() {
150
165
return [#| [$|1 + 2|] |]+ 3;
151
166
}
152
167
}
153
168
` ) ;
154
- testExtractRange ( `
169
+ testExtractRange ( "extractRange21" , `
155
170
function f(x: number) {
156
171
[#|[$|try {
157
172
x++;
@@ -163,17 +178,21 @@ namespace ts {
163
178
` ) ;
164
179
165
180
// Variable statements
166
- testExtractRange ( `[#|let x = [$|1|];|]` ) ;
167
- testExtractRange ( `[#|let x = [$|1|], y;|]` ) ;
168
- testExtractRange ( `[#|[$|let x = 1, y = 1;|]|]` ) ;
181
+ testExtractRange ( "extractRange22" , `[#|let x = [$|1|];|]` ) ;
182
+ testExtractRange ( "extractRange23" , `[#|let x = [$|1|], y;|]` ) ;
183
+ testExtractRange ( "extractRange24" , `[#|[$|let x = 1, y = 1;|]|]` ) ;
169
184
170
185
// Variable declarations
171
- testExtractRange ( `let [#|x = [$|1|]|];` ) ;
172
- testExtractRange ( `let [#|x = [$|1|]|], y = 2;` ) ;
173
- testExtractRange ( `let x = 1, [#|y = [$|2|]|];` ) ;
186
+ testExtractRange ( "extractRange25" , `let [#|x = [$|1|]|];` ) ;
187
+ testExtractRange ( "extractRange26" , `let [#|x = [$|1|]|], y = 2;` ) ;
188
+ testExtractRange ( "extractRange27" , `let x = 1, [#|y = [$|2|]|];` ) ;
174
189
175
190
// Return statements
176
- testExtractRange ( `[#|return [$|1|];|]` ) ;
191
+ testExtractRange ( "extractRange28" , `[#|return [$|1|];|]` ) ;
192
+
193
+ // For statements
194
+ testExtractRange ( "extractRange29" , `for ([#|var i = 1|]; i < 2; i++) {}` ) ;
195
+ testExtractRange ( "extractRange30" , `for (var i = [#|[$|1|]|]; i < 2; i++) {}` ) ;
177
196
} ) ;
178
197
179
198
testExtractRangeFailed ( "extractRangeFailed1" ,
0 commit comments