mateclaw/mateclaw-server/src/test/java/vip/mate/llm/service/ModelDiscoveryEmbeddingDetectionTest.java

62 lines
2.4 KiB
Java

package vip.mate.llm.service;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Coverage for {@link ModelDiscoveryService#isEmbeddingModelId(String)} —
* the predicate that keeps embedding models out of the chat-style probe and
* out of the chat-discovery "new models" suggestion bucket.
*/
class ModelDiscoveryEmbeddingDetectionTest {
@Test
void dashscopeEmbeddingVariants_recognised() {
assertTrue(ModelDiscoveryService.isEmbeddingModelId("text-embedding-v1"));
assertTrue(ModelDiscoveryService.isEmbeddingModelId("text-embedding-v3"));
assertTrue(ModelDiscoveryService.isEmbeddingModelId("text-embedding-v4"));
}
@Test
void openAiEmbeddingVariants_recognised() {
assertTrue(ModelDiscoveryService.isEmbeddingModelId("text-embedding-ada-002"));
assertTrue(ModelDiscoveryService.isEmbeddingModelId("text-embedding-3-small"));
assertTrue(ModelDiscoveryService.isEmbeddingModelId("text-embedding-3-large"));
}
@Test
void genericEmbeddingPrefix_recognised() {
// Some providers ship just "embedding-..." without the "text-" prefix.
assertTrue(ModelDiscoveryService.isEmbeddingModelId("embedding-001"));
assertTrue(ModelDiscoveryService.isEmbeddingModelId("embedding-large"));
}
@Test
void chatModels_notRecognisedAsEmbedding() {
assertFalse(ModelDiscoveryService.isEmbeddingModelId("qwen-plus"));
assertFalse(ModelDiscoveryService.isEmbeddingModelId("gpt-4o"));
assertFalse(ModelDiscoveryService.isEmbeddingModelId("claude-sonnet-4-6"));
assertFalse(ModelDiscoveryService.isEmbeddingModelId("deepseek-r1"));
}
@Test
void detectionIsCaseInsensitive() {
assertTrue(ModelDiscoveryService.isEmbeddingModelId("Text-Embedding-V4"));
assertTrue(ModelDiscoveryService.isEmbeddingModelId("TEXT-EMBEDDING-3-SMALL"));
}
@Test
void nullAndBlank_notEmbedding() {
assertFalse(ModelDiscoveryService.isEmbeddingModelId(null));
assertFalse(ModelDiscoveryService.isEmbeddingModelId(""));
}
@Test
void stringContainingEmbeddingMidway_notDetected() {
// Only prefix-anchored matches count; arbitrary mentions don't.
assertFalse(ModelDiscoveryService.isEmbeddingModelId("qwen-embedding-experimental"));
}
}