@@ -49,7 +49,9 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages
4949import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererTsx
5050import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererTypeScript
5151import software.aws.toolkits.jetbrains.services.codewhisperer.model.CaretContext
52+ import software.aws.toolkits.jetbrains.services.codewhisperer.model.Chunk
5253import software.aws.toolkits.jetbrains.services.codewhisperer.model.FileContextInfo
54+ import software.aws.toolkits.jetbrains.services.codewhisperer.model.SupplementalContextInfo
5355import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants
5456import software.aws.toolkits.jetbrains.services.codewhisperer.util.CrossFileStrategy
5557import software.aws.toolkits.jetbrains.services.codewhisperer.util.DefaultCodeWhispererFileContextProvider
@@ -483,6 +485,28 @@ class CodeWhispererFileContextProviderTest {
483485 verify(sut).extractSupplementalFileContextForTst(any(), any())
484486 }
485487
488+ @Test
489+ fun `truncate context should make context length fit in 20480 cap` () {
490+ val supplementalContext = SupplementalContextInfo (
491+ isUtg = false ,
492+ contents = listOf (
493+ Chunk (content = " a" .repeat(10000 ), path = " a.java" ),
494+ Chunk (content = " b" .repeat(10000 ), path = " b.java" ),
495+ Chunk (content = " c" .repeat(10000 ), path = " c.java" ),
496+ Chunk (content = " d" .repeat(10000 ), path = " d.java" ),
497+ Chunk (content = " e" .repeat(10000 ), path = " e.java" ),
498+ ),
499+ targetFileName = " foo" ,
500+ strategy = CrossFileStrategy .Codemap
501+ )
502+
503+ val r = sut.truncateContext(supplementalContext)
504+ assertThat(r.contents).hasSize(2 )
505+ assertThat(r.contentLength).isEqualTo(20000 )
506+ assertThat(r.strategy).isEqualTo(CrossFileStrategy .Codemap )
507+ assertThat(r.targetFileName).isEqualTo(" foo" )
508+ }
509+
486510 private fun setupFixture (fixture : JavaCodeInsightTestFixture ): List <PsiFile > {
487511 val psiFile1 = fixture.addFileToProject(" Main.java" , JAVA_MAIN )
488512 val psiFile2 = fixture.addFileToProject(" UtilClass.java" , JAVA_UTILCLASS )
0 commit comments