@@ -7,7 +7,7 @@ import assert from 'assert'
77import * as vscode from 'vscode'
88import * as sinon from 'sinon'
99import * as crossFile from 'aws-core-vscode/codewhisperer'
10- import { createMockTextEditor } from 'aws-core-vscode/test'
10+ import { aStringWithLineCount , createMockTextEditor } from 'aws-core-vscode/test'
1111import { CodeWhispererUserGroupSettings , UserGroup , crossFileContextConfig } from 'aws-core-vscode/codewhisperer'
1212import {
1313 assertTabCount ,
@@ -36,19 +36,19 @@ describe('crossFileContextUtil', function () {
3636 tempFolder = ( await createTestWorkspaceFolder ( ) ) . uri . fsPath
3737 } )
3838
39- describe ( 'should fetch 3 chunks and each chunk should contains 10 lines' , function ( ) {
39+ describe ( 'should fetch 3 chunks and each chunk should contains 50 lines' , function ( ) {
4040 async function assertCorrectCodeChunk ( ) {
41- await toTextEditor ( sampleFileOf60Lines , 'CrossFile.java' , tempFolder , { preview : false } )
41+ await toTextEditor ( aStringWithLineCount ( 200 ) , 'CrossFile.java' , tempFolder , { preview : false } )
4242 const myCurrentEditor = await toTextEditor ( '' , 'TargetFile.java' , tempFolder , {
4343 preview : false ,
4444 } )
4545 const actual = await crossFile . fetchSupplementalContextForSrc ( myCurrentEditor , fakeCancellationToken )
4646 assert . ok ( actual )
4747 assert . ok ( actual . supplementalContextItems . length === 3 )
4848
49- assert . strictEqual ( actual . supplementalContextItems [ 0 ] . content . split ( '\n' ) . length , 10 )
50- assert . strictEqual ( actual . supplementalContextItems [ 1 ] . content . split ( '\n' ) . length , 10 )
51- assert . strictEqual ( actual . supplementalContextItems [ 2 ] . content . split ( '\n' ) . length , 10 )
49+ assert . strictEqual ( actual . supplementalContextItems [ 0 ] . content . split ( '\n' ) . length , 50 )
50+ assert . strictEqual ( actual . supplementalContextItems [ 1 ] . content . split ( '\n' ) . length , 50 )
51+ assert . strictEqual ( actual . supplementalContextItems [ 2 ] . content . split ( '\n' ) . length , 50 )
5252 }
5353
5454 it ( 'control group' , async function ( ) {
@@ -265,73 +265,59 @@ describe('crossFileContextUtil', function () {
265265 assert . strictEqual ( chunks [ 1 ] . content , 'line_6\nline_7' )
266266 } )
267267
268- it ( 'codewhisperer crossfile config should use 10 lines' , async function ( ) {
268+ it ( 'codewhisperer crossfile config should use 50 lines' , async function ( ) {
269269 const filePath = path . join ( tempFolder , 'file.txt' )
270- await toFile ( sampleFileOf60Lines , filePath )
270+ await toFile ( aStringWithLineCount ( 210 ) , filePath )
271271
272272 const chunks = await crossFile . splitFileToChunks ( filePath , crossFileContextConfig . numberOfLinesEachChunk )
273- assert . strictEqual ( chunks . length , 6 )
273+
274+ // (210 / 50) + 1
275+ assert . strictEqual ( chunks . length , 5 )
276+ // line0 -> line49
277+ assert . strictEqual ( chunks [ 0 ] . content , aStringWithLineCount ( 50 , 0 ) )
278+ // line50 -> line99
279+ assert . strictEqual ( chunks [ 1 ] . content , aStringWithLineCount ( 50 , 50 ) )
280+ // line100 -> line149
281+ assert . strictEqual ( chunks [ 2 ] . content , aStringWithLineCount ( 50 , 100 ) )
282+ // line150 -> line199
283+ assert . strictEqual ( chunks [ 3 ] . content , aStringWithLineCount ( 50 , 150 ) )
284+ // line 200 -> line209
285+ assert . strictEqual ( chunks [ 4 ] . content , aStringWithLineCount ( 10 , 200 ) )
286+ } )
287+
288+ it ( 'link' , async function ( ) {
289+ const filePath = path . join ( tempFolder , 'file.txt' )
290+ await toFile ( aStringWithLineCount ( 210 ) , filePath )
291+
292+ const chunks = await crossFile . splitFileToChunks ( filePath , crossFileContextConfig . numberOfLinesEachChunk )
293+ const linkedChunks = await crossFile . linkChunks ( chunks )
294+
295+ // 210 / 50 + 2
296+ assert . strictEqual ( linkedChunks . length , 6 )
297+
298+ // 0th
299+ assert . strictEqual ( linkedChunks [ 0 ] . content , aStringWithLineCount ( 3 , 0 ) )
300+ assert . strictEqual ( linkedChunks [ 0 ] . nextContent , aStringWithLineCount ( 50 , 0 ) )
301+
302+ // 1st
303+ assert . strictEqual ( linkedChunks [ 1 ] . content , aStringWithLineCount ( 50 , 0 ) )
304+ assert . strictEqual ( linkedChunks [ 1 ] . nextContent , aStringWithLineCount ( 50 , 50 ) )
305+
306+ // 2nd
307+ assert . strictEqual ( linkedChunks [ 2 ] . content , aStringWithLineCount ( 50 , 50 ) )
308+ assert . strictEqual ( linkedChunks [ 2 ] . nextContent , aStringWithLineCount ( 50 , 100 ) )
309+
310+ // 3rd
311+ assert . strictEqual ( linkedChunks [ 3 ] . content , aStringWithLineCount ( 50 , 100 ) )
312+ assert . strictEqual ( linkedChunks [ 3 ] . nextContent , aStringWithLineCount ( 50 , 150 ) )
313+
314+ // 4th
315+ assert . strictEqual ( linkedChunks [ 4 ] . content , aStringWithLineCount ( 50 , 150 ) )
316+ assert . strictEqual ( linkedChunks [ 4 ] . nextContent , aStringWithLineCount ( 10 , 200 ) )
317+
318+ // 5th
319+ assert . strictEqual ( linkedChunks [ 5 ] . content , aStringWithLineCount ( 10 , 200 ) )
320+ assert . strictEqual ( linkedChunks [ 5 ] . nextContent , aStringWithLineCount ( 10 , 200 ) )
274321 } )
275322 } )
276323} )
277-
278- const sampleFileOf60Lines = `import java.util.List;
279- // we need this comment on purpose because chunk will be trimed right, adding this to avoid trimRight and make assertion easier
280- /**
281- *
282- *
283- *
284- *
285- *
286- **/
287- class Main {
288- public static void main(String[] args) {
289- Calculator calculator = new Calculator();
290- calculator.add(1, 2);
291- calculator.subtract(1, 2);
292- calculator.multiply(1, 2);
293- calculator.divide(1, 2);
294- calculator.remainder(1, 2);
295- }
296- }
297- //
298- class Calculator {
299- public Calculator() {
300- System.out.println("constructor");
301- }
302- //
303- public add(int num1, int num2) {
304- System.out.println("add");
305- return num1 + num2;
306- }
307- //
308- public subtract(int num1, int num2) {
309- System.out.println("subtract");
310- return num1 - num2;
311- }
312- //
313- public multiply(int num1, int num2) {
314- System.out.println("multiply");
315- return num1 * num2;
316- }
317- //
318- public divide(int num1, int num2) {
319- System.out.println("divide");
320- return num1 / num2;
321- }
322- //
323- public remainder(int num1, int num2) {
324- System.out.println("remainder");
325- return num1 % num2;
326- }
327- //
328- public power(int num1, int num2) {
329- System.out.println("power");
330- return (int) Math.pow(num1, num2);
331- }
332- //
333- public squareRoot(int num1) {
334- System.out.println("squareRoot");
335- return (int) Math.sqrt(num1);
336- }
337- }`
0 commit comments