@@ -7,7 +7,7 @@ import assert from 'assert'
7
7
import * as vscode from 'vscode'
8
8
import * as sinon from 'sinon'
9
9
import * as crossFile from 'aws-core-vscode/codewhisperer'
10
- import { createMockTextEditor } from 'aws-core-vscode/test'
10
+ import { aStringWithLineCount , createMockTextEditor } from 'aws-core-vscode/test'
11
11
import { crossFileContextConfig } from 'aws-core-vscode/codewhisperer'
12
12
import {
13
13
assertTabCount ,
@@ -35,18 +35,18 @@ describe('crossFileContextUtil', function () {
35
35
tempFolder = ( await createTestWorkspaceFolder ( ) ) . uri . fsPath
36
36
} )
37
37
38
- it ( 'should fetch 3 chunks and each chunk should contains 10 lines' , async function ( ) {
39
- await toTextEditor ( sampleFileOf60Lines , 'CrossFile.java' , tempFolder , { preview : false } )
38
+ it ( 'should fetch 3 chunks and each chunk should contains 50 lines' , async function ( ) {
39
+ await toTextEditor ( aStringWithLineCount ( 200 ) , 'CrossFile.java' , tempFolder , { preview : false } )
40
40
const myCurrentEditor = await toTextEditor ( '' , 'TargetFile.java' , tempFolder , {
41
41
preview : false ,
42
42
} )
43
43
const actual = await crossFile . fetchSupplementalContextForSrc ( myCurrentEditor , fakeCancellationToken )
44
44
assert . ok ( actual )
45
45
assert . ok ( actual . supplementalContextItems . length === 3 )
46
46
47
- assert . strictEqual ( actual . supplementalContextItems [ 0 ] . content . split ( '\n' ) . length , 10 )
48
- assert . strictEqual ( actual . supplementalContextItems [ 1 ] . content . split ( '\n' ) . length , 10 )
49
- assert . strictEqual ( actual . supplementalContextItems [ 2 ] . content . split ( '\n' ) . length , 10 )
47
+ assert . strictEqual ( actual . supplementalContextItems [ 0 ] . content . split ( '\n' ) . length , 50 )
48
+ assert . strictEqual ( actual . supplementalContextItems [ 1 ] . content . split ( '\n' ) . length , 50 )
49
+ assert . strictEqual ( actual . supplementalContextItems [ 2 ] . content . split ( '\n' ) . length , 50 )
50
50
} )
51
51
} )
52
52
@@ -250,73 +250,59 @@ describe('crossFileContextUtil', function () {
250
250
assert . strictEqual ( chunks [ 1 ] . content , 'line_6\nline_7' )
251
251
} )
252
252
253
- it ( 'codewhisperer crossfile config should use 10 lines' , async function ( ) {
253
+ it ( 'codewhisperer crossfile config should use 50 lines' , async function ( ) {
254
254
const filePath = path . join ( tempFolder , 'file.txt' )
255
- await toFile ( sampleFileOf60Lines , filePath )
255
+ await toFile ( aStringWithLineCount ( 210 ) , filePath )
256
256
257
257
const chunks = await crossFile . splitFileToChunks ( filePath , crossFileContextConfig . numberOfLinesEachChunk )
258
- assert . strictEqual ( chunks . length , 6 )
258
+
259
+ // (210 / 50) + 1
260
+ assert . strictEqual ( chunks . length , 5 )
261
+ // line0 -> line49
262
+ assert . strictEqual ( chunks [ 0 ] . content , aStringWithLineCount ( 50 , 0 ) )
263
+ // line50 -> line99
264
+ assert . strictEqual ( chunks [ 1 ] . content , aStringWithLineCount ( 50 , 50 ) )
265
+ // line100 -> line149
266
+ assert . strictEqual ( chunks [ 2 ] . content , aStringWithLineCount ( 50 , 100 ) )
267
+ // line150 -> line199
268
+ assert . strictEqual ( chunks [ 3 ] . content , aStringWithLineCount ( 50 , 150 ) )
269
+ // line 200 -> line209
270
+ assert . strictEqual ( chunks [ 4 ] . content , aStringWithLineCount ( 10 , 200 ) )
271
+ } )
272
+
273
+ it ( 'linkChunks should add another chunk which will link to the first chunk and chunk.nextContent should reflect correct value' , async function ( ) {
274
+ const filePath = path . join ( tempFolder , 'file.txt' )
275
+ await toFile ( aStringWithLineCount ( 210 ) , filePath )
276
+
277
+ const chunks = await crossFile . splitFileToChunks ( filePath , crossFileContextConfig . numberOfLinesEachChunk )
278
+ const linkedChunks = crossFile . linkChunks ( chunks )
279
+
280
+ // 210 / 50 + 2
281
+ assert . strictEqual ( linkedChunks . length , 6 )
282
+
283
+ // 0th
284
+ assert . strictEqual ( linkedChunks [ 0 ] . content , aStringWithLineCount ( 3 , 0 ) )
285
+ assert . strictEqual ( linkedChunks [ 0 ] . nextContent , aStringWithLineCount ( 50 , 0 ) )
286
+
287
+ // 1st
288
+ assert . strictEqual ( linkedChunks [ 1 ] . content , aStringWithLineCount ( 50 , 0 ) )
289
+ assert . strictEqual ( linkedChunks [ 1 ] . nextContent , aStringWithLineCount ( 50 , 50 ) )
290
+
291
+ // 2nd
292
+ assert . strictEqual ( linkedChunks [ 2 ] . content , aStringWithLineCount ( 50 , 50 ) )
293
+ assert . strictEqual ( linkedChunks [ 2 ] . nextContent , aStringWithLineCount ( 50 , 100 ) )
294
+
295
+ // 3rd
296
+ assert . strictEqual ( linkedChunks [ 3 ] . content , aStringWithLineCount ( 50 , 100 ) )
297
+ assert . strictEqual ( linkedChunks [ 3 ] . nextContent , aStringWithLineCount ( 50 , 150 ) )
298
+
299
+ // 4th
300
+ assert . strictEqual ( linkedChunks [ 4 ] . content , aStringWithLineCount ( 50 , 150 ) )
301
+ assert . strictEqual ( linkedChunks [ 4 ] . nextContent , aStringWithLineCount ( 10 , 200 ) )
302
+
303
+ // 5th
304
+ assert . strictEqual ( linkedChunks [ 5 ] . content , aStringWithLineCount ( 10 , 200 ) )
305
+ assert . strictEqual ( linkedChunks [ 5 ] . nextContent , aStringWithLineCount ( 10 , 200 ) )
259
306
} )
260
307
} )
261
308
} )
262
-
263
- const sampleFileOf60Lines = `import java.util.List;
264
- // we need this comment on purpose because chunk will be trimed right, adding this to avoid trimRight and make assertion easier
265
- /**
266
- *
267
- *
268
- *
269
- *
270
- *
271
- **/
272
- class Main {
273
- public static void main(String[] args) {
274
- Calculator calculator = new Calculator();
275
- calculator.add(1, 2);
276
- calculator.subtract(1, 2);
277
- calculator.multiply(1, 2);
278
- calculator.divide(1, 2);
279
- calculator.remainder(1, 2);
280
- }
281
- }
282
- //
283
- class Calculator {
284
- public Calculator() {
285
- System.out.println("constructor");
286
- }
287
- //
288
- public add(int num1, int num2) {
289
- System.out.println("add");
290
- return num1 + num2;
291
- }
292
- //
293
- public subtract(int num1, int num2) {
294
- System.out.println("subtract");
295
- return num1 - num2;
296
- }
297
- //
298
- public multiply(int num1, int num2) {
299
- System.out.println("multiply");
300
- return num1 * num2;
301
- }
302
- //
303
- public divide(int num1, int num2) {
304
- System.out.println("divide");
305
- return num1 / num2;
306
- }
307
- //
308
- public remainder(int num1, int num2) {
309
- System.out.println("remainder");
310
- return num1 % num2;
311
- }
312
- //
313
- public power(int num1, int num2) {
314
- System.out.println("power");
315
- return (int) Math.pow(num1, num2);
316
- }
317
- //
318
- public squareRoot(int num1) {
319
- System.out.println("squareRoot");
320
- return (int) Math.sqrt(num1);
321
- }
322
- }`
0 commit comments