mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-20 01:02:02 +00:00
43 lines
1.9 KiB
Java
43 lines
1.9 KiB
Java
package ee.carlrobert.codegpt.codecompletions;
|
|
|
|
import static ee.carlrobert.codegpt.CodeGPTKeys.PREVIOUS_INLAY_TEXT;
|
|
import static ee.carlrobert.codegpt.codecompletions.InfillPromptTemplate.LLAMA;
|
|
import static ee.carlrobert.codegpt.util.file.FileUtil.getResourceContent;
|
|
import static ee.carlrobert.llm.client.util.JSONUtil.e;
|
|
import static ee.carlrobert.llm.client.util.JSONUtil.jsonMapResponse;
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
import com.intellij.openapi.editor.VisualPosition;
|
|
import ee.carlrobert.codegpt.settings.service.llama.LlamaSettings;
|
|
import ee.carlrobert.llm.client.http.exchange.StreamHttpExchange;
|
|
import java.util.List;
|
|
import testsupport.IntegrationTest;
|
|
|
|
public class CodeCompletionServiceTest extends IntegrationTest {
|
|
|
|
private final VisualPosition cursorPosition = new VisualPosition(3, 0);
|
|
|
|
public void testFetchCodeCompletionLlama() {
|
|
useLlamaService();
|
|
LlamaSettings.getCurrentState().setCodeCompletionsEnabled(true);
|
|
myFixture.configureByText(
|
|
"CompletionTest.java",
|
|
getResourceContent("/codecompletions/code-completion-file.txt"));
|
|
myFixture.getEditor().getCaretModel().moveToVisualPosition(cursorPosition);
|
|
var expectedCompletion = "TEST_OUTPUT";
|
|
var prefix = "z".repeat(245) + "\n[INPUT]\nc"; // 128 tokens
|
|
var suffix = "\n[\\INPUT]\n" + "z".repeat(247); // 128 tokens
|
|
expectLlama((StreamHttpExchange) request -> {
|
|
assertThat(request.getUri().getPath()).isEqualTo("/completion");
|
|
assertThat(request.getMethod()).isEqualTo("POST");
|
|
assertThat(request.getBody())
|
|
.extracting("prompt")
|
|
.isEqualTo(LLAMA.buildPrompt(prefix, suffix));
|
|
return List.of(jsonMapResponse(e("content", expectedCompletion), e("stop", true)));
|
|
});
|
|
|
|
myFixture.type('c');
|
|
|
|
waitExpecting(() -> "TEST_OUTPUT".equals(PREVIOUS_INLAY_TEXT.get(myFixture.getEditor())));
|
|
}
|
|
}
|