Skip to content

Commit 04d2cca

Browse files
committed
test: Add comprehensive edge case tests for Ollama embedding and chat models
Adds comprehensive test coverage for edge cases and boundary conditions in Ollama model implementations: Co-authored-by: Oleksandr Klymenko <[email protected]> Signed-off-by: Oleksandr Klymenko <[email protected]>
1 parent c893629 commit 04d2cca

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaChatModelTests.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,4 +325,28 @@ void buildOllamaChatModelImmutability() {
325325
assertThat(chatModel2).isNotNull();
326326
}
327327

328+
@Test
329+
void buildChatResponseMetadataWithZeroValues() {
330+
// Test with all zero/minimal values
331+
OllamaApi.ChatResponse response = new OllamaApi.ChatResponse("model", Instant.now(), null, null, null, 0L, 0L,
332+
0, 0L, 0, 0L);
333+
334+
ChatResponseMetadata metadata = OllamaChatModel.from(response, null);
335+
336+
assertEquals(Duration.ZERO, metadata.get("eval-duration"));
337+
assertEquals(Integer.valueOf(0), metadata.get("eval-count"));
338+
assertEquals(Duration.ZERO, metadata.get("prompt-eval-duration"));
339+
assertEquals(Integer.valueOf(0), metadata.get("prompt-eval-count"));
340+
assertThat(metadata.getUsage()).isEqualTo(new DefaultUsage(0, 0));
341+
}
342+
343+
@Test
344+
void buildOllamaChatModelWithMinimalConfiguration() {
345+
// Test building with only required parameters
346+
ChatModel chatModel = OllamaChatModel.builder().ollamaApi(this.ollamaApi).build();
347+
348+
assertThat(chatModel).isNotNull();
349+
assertThat(chatModel).isInstanceOf(OllamaChatModel.class);
350+
}
351+
328352
}

models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/OllamaEmbeddingRequestTests.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,4 +185,44 @@ public void ollamaEmbeddingRequestWithWhitespaceInputs() {
185185
assertThat(ollamaRequest.input()).containsExactly("", " ", "\t\n", "normal text", " spaced ");
186186
}
187187

188+
@Test
189+
public void ollamaEmbeddingRequestWithNullInput() {
190+
// Test behavior when input list contains null values
191+
List<String> inputsWithNull = Arrays.asList("Hello", null, "World");
192+
var embeddingRequest = this.embeddingModel.buildEmbeddingRequest(new EmbeddingRequest(inputsWithNull, null));
193+
var ollamaRequest = this.embeddingModel.ollamaEmbeddingRequest(embeddingRequest);
194+
195+
assertThat(ollamaRequest.input()).containsExactly("Hello", null, "World");
196+
assertThat(ollamaRequest.input()).hasSize(3);
197+
}
198+
199+
@Test
200+
public void ollamaEmbeddingRequestPartialOptionsOverride() {
201+
// Test that only specified options are overridden, others remain default
202+
var requestOptions = OllamaOptions.builder()
203+
.model("PARTIAL_OVERRIDE_MODEL")
204+
.numGPU(5) // Override only numGPU, leave others as default
205+
.build();
206+
207+
var embeddingRequest = this.embeddingModel
208+
.buildEmbeddingRequest(new EmbeddingRequest(List.of("Partial override"), requestOptions));
209+
var ollamaRequest = this.embeddingModel.ollamaEmbeddingRequest(embeddingRequest);
210+
211+
assertThat(ollamaRequest.model()).isEqualTo("PARTIAL_OVERRIDE_MODEL");
212+
assertThat(ollamaRequest.options().get("num_gpu")).isEqualTo(5);
213+
assertThat(ollamaRequest.options().get("main_gpu")).isEqualTo(11);
214+
assertThat(ollamaRequest.options().get("use_mmap")).isEqualTo(true);
215+
}
216+
217+
@Test
218+
public void ollamaEmbeddingRequestWithEmptyStringInput() {
219+
// Test with list containing only empty string
220+
var embeddingRequest = this.embeddingModel.buildEmbeddingRequest(new EmbeddingRequest(List.of(""), null));
221+
var ollamaRequest = this.embeddingModel.ollamaEmbeddingRequest(embeddingRequest);
222+
223+
assertThat(ollamaRequest.input()).hasSize(1);
224+
assertThat(ollamaRequest.input().get(0)).isEmpty();
225+
assertThat(ollamaRequest.model()).isEqualTo("DEFAULT_MODEL");
226+
}
227+
188228
}

0 commit comments

Comments
 (0)