diff --git a/content-retrievers/langchain4j-community-neo4j-retriever/pom.xml b/content-retrievers/langchain4j-community-neo4j-retriever/pom.xml
index cae8ceb0..123cfd04 100644
--- a/content-retrievers/langchain4j-community-neo4j-retriever/pom.xml
+++ b/content-retrievers/langchain4j-community-neo4j-retriever/pom.xml
@@ -62,13 +62,13 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
org.testcontainers
- neo4j
+ testcontainers-neo4j
test
diff --git a/document-transformers/langchain4j-community-llm-graph-transformer/pom.xml b/document-transformers/langchain4j-community-llm-graph-transformer/pom.xml
index d683809b..c98d038b 100644
--- a/document-transformers/langchain4j-community-llm-graph-transformer/pom.xml
+++ b/document-transformers/langchain4j-community-llm-graph-transformer/pom.xml
@@ -28,7 +28,7 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
diff --git a/embedding-stores/langchain4j-community-alloydb-pg/pom.xml b/embedding-stores/langchain4j-community-alloydb-pg/pom.xml
index 8d1b90e9..46c31496 100644
--- a/embedding-stores/langchain4j-community-alloydb-pg/pom.xml
+++ b/embedding-stores/langchain4j-community-alloydb-pg/pom.xml
@@ -112,13 +112,13 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
org.testcontainers
- postgresql
+ testcontainers-postgresql
test
diff --git a/embedding-stores/langchain4j-community-alloydb-pg/src/test/java/dev/langchain4j/community/store/embedding/alloydb/AlloyDBEmbeddingStoreIT.java b/embedding-stores/langchain4j-community-alloydb-pg/src/test/java/dev/langchain4j/community/store/embedding/alloydb/AlloyDBEmbeddingStoreIT.java
index 474c2a5a..61e753eb 100644
--- a/embedding-stores/langchain4j-community-alloydb-pg/src/test/java/dev/langchain4j/community/store/embedding/alloydb/AlloyDBEmbeddingStoreIT.java
+++ b/embedding-stores/langchain4j-community-alloydb-pg/src/test/java/dev/langchain4j/community/store/embedding/alloydb/AlloyDBEmbeddingStoreIT.java
@@ -1,6 +1,6 @@
package dev.langchain4j.community.store.embedding.alloydb;
-import static org.testcontainers.shaded.org.apache.commons.lang3.RandomUtils.nextInt;
+import static org.apache.commons.lang3.RandomUtils.nextInt;
import dev.langchain4j.community.store.embedding.alloydb.index.DistanceStrategy;
import dev.langchain4j.data.segment.TextSegment;
diff --git a/embedding-stores/langchain4j-community-alloydb-pg/src/test/java/dev/langchain4j/community/store/embedding/alloydb/AlloyDBEmbeddingStoreRemovalIT.java b/embedding-stores/langchain4j-community-alloydb-pg/src/test/java/dev/langchain4j/community/store/embedding/alloydb/AlloyDBEmbeddingStoreRemovalIT.java
index 925a1f40..f6c1a423 100644
--- a/embedding-stores/langchain4j-community-alloydb-pg/src/test/java/dev/langchain4j/community/store/embedding/alloydb/AlloyDBEmbeddingStoreRemovalIT.java
+++ b/embedding-stores/langchain4j-community-alloydb-pg/src/test/java/dev/langchain4j/community/store/embedding/alloydb/AlloyDBEmbeddingStoreRemovalIT.java
@@ -1,6 +1,6 @@
package dev.langchain4j.community.store.embedding.alloydb;
-import static org.testcontainers.shaded.org.apache.commons.lang3.RandomUtils.nextInt;
+import static org.apache.commons.lang3.RandomUtils.nextInt;
import dev.langchain4j.community.store.embedding.alloydb.index.DistanceStrategy;
import dev.langchain4j.data.segment.TextSegment;
diff --git a/embedding-stores/langchain4j-community-clickhouse/pom.xml b/embedding-stores/langchain4j-community-clickhouse/pom.xml
index cf723d07..2ea9af51 100644
--- a/embedding-stores/langchain4j-community-clickhouse/pom.xml
+++ b/embedding-stores/langchain4j-community-clickhouse/pom.xml
@@ -83,7 +83,7 @@
org.testcontainers
- clickhouse
+ testcontainers-clickhouse
test
diff --git a/embedding-stores/langchain4j-community-cloud-sql-pg/pom.xml b/embedding-stores/langchain4j-community-cloud-sql-pg/pom.xml
index a47544f6..e223c0ea 100644
--- a/embedding-stores/langchain4j-community-cloud-sql-pg/pom.xml
+++ b/embedding-stores/langchain4j-community-cloud-sql-pg/pom.xml
@@ -317,13 +317,13 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
org.testcontainers
- postgresql
+ testcontainers-postgresql
test
diff --git a/embedding-stores/langchain4j-community-cloud-sql-pg/src/test/java/dev/langchain4j/community/store/embedding/cloudsql/PostgresEmbeddingStoreIT.java b/embedding-stores/langchain4j-community-cloud-sql-pg/src/test/java/dev/langchain4j/community/store/embedding/cloudsql/PostgresEmbeddingStoreIT.java
index 75126e11..3949cf29 100644
--- a/embedding-stores/langchain4j-community-cloud-sql-pg/src/test/java/dev/langchain4j/community/store/embedding/cloudsql/PostgresEmbeddingStoreIT.java
+++ b/embedding-stores/langchain4j-community-cloud-sql-pg/src/test/java/dev/langchain4j/community/store/embedding/cloudsql/PostgresEmbeddingStoreIT.java
@@ -1,6 +1,6 @@
package dev.langchain4j.community.store.embedding.cloudsql;
-import static org.testcontainers.shaded.org.apache.commons.lang3.RandomUtils.nextInt;
+import static org.apache.commons.lang3.RandomUtils.nextInt;
import dev.langchain4j.community.store.embedding.cloudsql.index.DistanceStrategy;
import dev.langchain4j.data.segment.TextSegment;
diff --git a/embedding-stores/langchain4j-community-cloud-sql-pg/src/test/java/dev/langchain4j/community/store/embedding/cloudsql/PostgresEmbeddingStoreRemovalIT.java b/embedding-stores/langchain4j-community-cloud-sql-pg/src/test/java/dev/langchain4j/community/store/embedding/cloudsql/PostgresEmbeddingStoreRemovalIT.java
index 0d0eca63..a39614b2 100644
--- a/embedding-stores/langchain4j-community-cloud-sql-pg/src/test/java/dev/langchain4j/community/store/embedding/cloudsql/PostgresEmbeddingStoreRemovalIT.java
+++ b/embedding-stores/langchain4j-community-cloud-sql-pg/src/test/java/dev/langchain4j/community/store/embedding/cloudsql/PostgresEmbeddingStoreRemovalIT.java
@@ -1,6 +1,6 @@
package dev.langchain4j.community.store.embedding.cloudsql;
-import static org.testcontainers.shaded.org.apache.commons.lang3.RandomUtils.nextInt;
+import static org.apache.commons.lang3.RandomUtils.nextInt;
import dev.langchain4j.community.store.embedding.cloudsql.index.DistanceStrategy;
import dev.langchain4j.data.segment.TextSegment;
diff --git a/embedding-stores/langchain4j-community-neo4j/pom.xml b/embedding-stores/langchain4j-community-neo4j/pom.xml
index 40e7a9b3..050079df 100644
--- a/embedding-stores/langchain4j-community-neo4j/pom.xml
+++ b/embedding-stores/langchain4j-community-neo4j/pom.xml
@@ -58,16 +58,15 @@
-
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
org.testcontainers
- neo4j
+ testcontainers-neo4j
test
@@ -127,7 +126,7 @@
org.testcontainers
- selenium
+ testcontainers-selenium
test
diff --git a/embedding-stores/langchain4j-community-sqlserver/pom.xml b/embedding-stores/langchain4j-community-sqlserver/pom.xml
index 6fc5a07c..9dd24a84 100644
--- a/embedding-stores/langchain4j-community-sqlserver/pom.xml
+++ b/embedding-stores/langchain4j-community-sqlserver/pom.xml
@@ -55,15 +55,21 @@
org.testcontainers
testcontainers
test
+
+
+ junit
+ junit
+
+
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
org.testcontainers
- mssqlserver
+ testcontainers-mssqlserver
test
diff --git a/embedding-stores/langchain4j-community-sqlserver/src/main/java/dev/langchain4j/store/embedding/sqlserver/SQLFilters.java b/embedding-stores/langchain4j-community-sqlserver/src/main/java/dev/langchain4j/store/embedding/sqlserver/SQLFilters.java
index 8fc58c2c..bf8b4bba 100644
--- a/embedding-stores/langchain4j-community-sqlserver/src/main/java/dev/langchain4j/store/embedding/sqlserver/SQLFilters.java
+++ b/embedding-stores/langchain4j-community-sqlserver/src/main/java/dev/langchain4j/store/embedding/sqlserver/SQLFilters.java
@@ -9,7 +9,8 @@
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
-import java.util.*;
+import java.util.Collection;
+import java.util.Objects;
import java.util.function.BiFunction;
import java.util.stream.Collectors;
diff --git a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerCatalogSchemaEmbeddingStoreIT.java b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerCatalogSchemaEmbeddingStoreIT.java
index dc2d4ac0..28c256b8 100644
--- a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerCatalogSchemaEmbeddingStoreIT.java
+++ b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerCatalogSchemaEmbeddingStoreIT.java
@@ -3,9 +3,9 @@
import static dev.langchain4j.store.embedding.TestUtils.awaitUntilAsserted;
import static dev.langchain4j.store.embedding.sqlserver.util.SQLServerTestsUtil.DEFAULT_CONTAINER;
import static dev.langchain4j.store.embedding.sqlserver.util.SQLServerTestsUtil.getSqlServerDataSource;
+import static org.apache.commons.lang3.RandomUtils.nextInt;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Percentage.withPercentage;
-import static org.testcontainers.shaded.org.apache.commons.lang3.RandomUtils.nextInt;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
@@ -21,14 +21,14 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
-public class SQLServerCatalogSchemaEmbeddingStoreIT extends EmbeddingStoreWithFilteringIT {
+class SQLServerCatalogSchemaEmbeddingStoreIT extends EmbeddingStoreWithFilteringIT {
static String tableName = "test_" + nextInt(1000, 2000);
static EmbeddingModel embeddingModel = new AllMiniLmL6V2QuantizedEmbeddingModel();
@@ -44,7 +44,7 @@ public class SQLServerCatalogSchemaEmbeddingStoreIT extends EmbeddingStoreWithFi
.build();
@Test
- public void test_unicode_embeddings() {
+ void unicode_embeddings() {
TextSegment[] segments = SQLServerTestsUtil.japaneseSampling();
List embeddings = new ArrayList<>(segments.length);
@@ -54,7 +54,7 @@ public void test_unicode_embeddings() {
}
List ids = embeddingStore().addAll(embeddings, Arrays.asList(segments));
- awaitUntilAsserted(() -> assertThat(getAllEmbeddings()).hasSize(segments.length));
+ awaitUntilAsserted(() -> assertThat(getAllEmbeddings()).hasSameSizeAs(segments));
EmbeddingSearchRequest searchRequest = EmbeddingSearchRequest.builder()
.queryEmbedding(embeddings.get(0))
@@ -77,7 +77,7 @@ public void test_unicode_embeddings() {
}
@Test
- public void test_unicode_metadata() {
+ void unicode_metadata() {
TextSegment[] segments = SQLServerTestsUtil.japaneseSampling();
List embeddings = new ArrayList<>(segments.length);
for (TextSegment segment : segments) {
@@ -88,7 +88,7 @@ public void test_unicode_metadata() {
Embedding emb = embeddingModel().embed("Test embedding").content();
embeddingStore().addAll(embeddings, Arrays.asList(segments));
- awaitUntilAsserted(() -> assertThat(getAllEmbeddings()).hasSize(segments.length));
+ awaitUntilAsserted(() -> assertThat(getAllEmbeddings()).hasSameSizeAs(segments));
EmbeddingSearchRequest searchRequest = EmbeddingSearchRequest.builder()
.queryEmbedding(emb)
@@ -125,18 +125,18 @@ protected void clearStore() {
}
}
- @Before
- public void before() {
+ @BeforeEach
+ void before() {
clearStore();
}
- @After
- public void after() {
+ @AfterEach
+ void after() {
clearStore();
}
@AfterAll
- public static void afterClass() {
+ static void afterClass() {
DEFAULT_CONTAINER.stop();
}
}
diff --git a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreConfigIT.java b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreConfigIT.java
index d7f9b542..de0e2dfd 100644
--- a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreConfigIT.java
+++ b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreConfigIT.java
@@ -1,7 +1,8 @@
package dev.langchain4j.store.embedding.sqlserver;
import static dev.langchain4j.store.embedding.sqlserver.util.SQLServerTestsUtil.getSqlServerDataSource;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import dev.langchain4j.data.embedding.Embedding;
@@ -26,7 +27,7 @@ void basic_config_test() {
.dimension(4)
.build())
.build();
- assertNotNull(embeddingStore);
+ assertThat(embeddingStore).isNotNull();
}
@Test
@@ -52,7 +53,7 @@ void should_create_table_with_json_indexes() {
.build();
// Test that store was created successfully
- assertNotNull(embeddingStore);
+ assertThat(embeddingStore).isNotNull();
}
@Test
@@ -76,14 +77,14 @@ void should_create_table_with_ordered_json_index() {
.build();
// Test that store was created successfully
- assertNotNull(embeddingStore);
+ assertThat(embeddingStore).isNotNull();
// Test basic functionality
Embedding embedding = new Embedding(new float[] {0.1f, 0.2f, 0.3f, 0.4f});
TextSegment textSegment = TextSegment.from("test text");
String id = embeddingStore.add(embedding, textSegment);
- assertNotNull(id);
+ assertThat(id).isNotNull();
}
@Test
@@ -93,6 +94,6 @@ void should_detect_sql_injection() {
.dimension(4);
// Test that store was created successfully
- assertThrows(IllegalArgumentException.class, embeddingTable::build);
+ assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(embeddingTable::build);
}
}
diff --git a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreIT.java b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreIT.java
index e30ad645..ffcf8bb4 100644
--- a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreIT.java
+++ b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreIT.java
@@ -3,9 +3,9 @@
import static dev.langchain4j.store.embedding.TestUtils.awaitUntilAsserted;
import static dev.langchain4j.store.embedding.sqlserver.util.SQLServerTestsUtil.DEFAULT_CONTAINER;
import static dev.langchain4j.store.embedding.sqlserver.util.SQLServerTestsUtil.getSqlServerDataSource;
+import static org.apache.commons.lang3.RandomUtils.nextInt;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Percentage.withPercentage;
-import static org.testcontainers.shaded.org.apache.commons.lang3.RandomUtils.nextInt;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
@@ -21,14 +21,14 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
-public class SQLServerEmbeddingStoreIT extends EmbeddingStoreWithFilteringIT {
+class SQLServerEmbeddingStoreIT extends EmbeddingStoreWithFilteringIT {
static String tableName = "test_" + nextInt(1000, 2000);
static EmbeddingModel embeddingModel = new AllMiniLmL6V2QuantizedEmbeddingModel();
@@ -42,7 +42,7 @@ public class SQLServerEmbeddingStoreIT extends EmbeddingStoreWithFilteringIT {
.build();
@Test
- public void test_unicode_embeddings() {
+ void unicode_embeddings() {
TextSegment[] segments = SQLServerTestsUtil.japaneseSampling();
List embeddings = new ArrayList<>(segments.length);
@@ -52,7 +52,7 @@ public void test_unicode_embeddings() {
}
List ids = embeddingStore().addAll(embeddings, Arrays.asList(segments));
- awaitUntilAsserted(() -> assertThat(getAllEmbeddings()).hasSize(segments.length));
+ awaitUntilAsserted(() -> assertThat(getAllEmbeddings()).hasSameSizeAs(segments));
EmbeddingSearchRequest searchRequest = EmbeddingSearchRequest.builder()
.queryEmbedding(embeddings.get(0))
@@ -75,7 +75,7 @@ public void test_unicode_embeddings() {
}
@Test
- public void test_unicode_metadata() {
+ void unicode_metadata() {
TextSegment[] segments = SQLServerTestsUtil.japaneseSampling();
List embeddings = new ArrayList<>(segments.length);
for (TextSegment segment : segments) {
@@ -86,7 +86,7 @@ public void test_unicode_metadata() {
Embedding emb = embeddingModel().embed("Test embedding").content();
embeddingStore().addAll(embeddings, Arrays.asList(segments));
- awaitUntilAsserted(() -> assertThat(getAllEmbeddings()).hasSize(segments.length));
+ awaitUntilAsserted(() -> assertThat(getAllEmbeddings()).hasSameSizeAs(segments));
EmbeddingSearchRequest searchRequest = EmbeddingSearchRequest.builder()
.queryEmbedding(emb)
@@ -123,18 +123,18 @@ protected void clearStore() {
}
}
- @Before
- public void before() {
+ @BeforeEach
+ void before() {
clearStore();
}
- @After
- public void after() {
+ @AfterEach
+ void after() {
clearStore();
}
@AfterAll
- public static void afterClass() {
+ static void afterClass() {
DEFAULT_CONTAINER.stop();
}
}
diff --git a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreRemovalIT.java b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreRemovalIT.java
index 0745ab2a..13c0136f 100644
--- a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreRemovalIT.java
+++ b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/SQLServerEmbeddingStoreRemovalIT.java
@@ -2,22 +2,22 @@
import static dev.langchain4j.store.embedding.sqlserver.util.SQLServerTestsUtil.DEFAULT_CONTAINER;
import static dev.langchain4j.store.embedding.sqlserver.util.SQLServerTestsUtil.getSqlServerDataSource;
-import static org.junit.Assert.assertTrue;
-import static org.testcontainers.shaded.org.apache.commons.lang3.RandomUtils.nextInt;
+import static org.apache.commons.lang3.RandomUtils.nextInt;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.embedding.onnx.allminilml6v2q.AllMiniLmL6V2QuantizedEmbeddingModel;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.EmbeddingStoreWithRemovalIT;
-import org.junit.Before;
-import org.junit.Test;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
-public class SQLServerEmbeddingStoreRemovalIT extends EmbeddingStoreWithRemovalIT {
+class SQLServerEmbeddingStoreRemovalIT extends EmbeddingStoreWithRemovalIT {
static String tableName = "test_remove_" + nextInt(1000, 2000);
static EmbeddingModel embeddingModel = new AllMiniLmL6V2QuantizedEmbeddingModel();
@@ -31,8 +31,8 @@ public class SQLServerEmbeddingStoreRemovalIT extends EmbeddingStoreWithRemovalI
.build();
@Test
- public void test_config() {
- assertTrue(embeddingStore != null);
+ void config() {
+ assertNotSame(embeddingStore, null);
}
@Override
@@ -46,21 +46,21 @@ protected EmbeddingModel embeddingModel() {
}
@AfterEach
- public void after() {
+ void after() {
if (embeddingStore != null) {
embeddingStore.removeAll();
}
}
- @Before
- public void before() {
+ @BeforeEach
+ void before() {
if (embeddingStore != null) {
embeddingStore.removeAll();
}
}
@AfterAll
- public static void afterClass() {
+ static void afterClass() {
DEFAULT_CONTAINER.stop();
}
}
diff --git a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/TestDistanceMetric.java b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/TestDistanceMetric.java
index 642c1155..eaaf55b1 100644
--- a/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/TestDistanceMetric.java
+++ b/embedding-stores/langchain4j-community-sqlserver/src/test/java/dev/langchain4j/store/embedding/sqlserver/TestDistanceMetric.java
@@ -1,6 +1,7 @@
package dev.langchain4j.store.embedding.sqlserver;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.within;
import org.junit.jupiter.api.Test;
@@ -9,24 +10,26 @@ class TestDistanceMetric {
@Test
void shouldConvertCosineDistanceToSimilarityScore() {
// Test COSINE metric: relevance = 2 - distance
- assertEquals(2.0, DistanceMetric.COSINE.distanceToScore(0.0), 0.001); // Perfect similarity: 2 - 0 = 2
- assertEquals(1.0, DistanceMetric.COSINE.distanceToScore(1.0), 0.001); // Moderate similarity: 2 - 1 = 1
- assertEquals(0.0, DistanceMetric.COSINE.distanceToScore(2.0), 0.001); // No similarity: 2 - 2 = 0
- assertEquals(-1.0, DistanceMetric.COSINE.distanceToScore(3.0), 0.001); // Opposing vectors: 2 - 3 = -1
+ assertThat(DistanceMetric.COSINE.distanceToScore(0.0))
+ .isCloseTo(2.0, within(0.001)); // Perfect similarity: 2 - 0 = 2
+ assertThat(DistanceMetric.COSINE.distanceToScore(1.0))
+ .isCloseTo(1.0, within(0.001)); // Moderate similarity: 2 - 1 = 1
+ assertThat(DistanceMetric.COSINE.distanceToScore(2.0))
+ .isCloseTo(0.0, within(0.001)); // No similarity: 2 - 2 = 0
+ assertThat(DistanceMetric.COSINE.distanceToScore(3.0))
+ .isCloseTo(-1.0, within(0.001)); // Opposing vectors: 2 - 3 = -1
}
@Test
void shouldConvertEuclideanDistanceToSimilarityScore() {
// Test EUCLIDEAN metric: relevance = 2 * e^(-distance)
- assertEquals(
- 2.0,
- DistanceMetric.EUCLIDEAN.distanceToScore(0.0),
- 0.001); // Perfect similarity: 2 * e^(-0) = 2 * 1 = 2
- assertEquals(
- 0.736, DistanceMetric.EUCLIDEAN.distanceToScore(1.0), 0.001); // Moderate similarity: 2 * e^(-1) ≈ 0.736
- assertEquals(
- 0.100, DistanceMetric.EUCLIDEAN.distanceToScore(3.0), 0.001); // Lower similarity: 2 * e^(-3) ≈ 0.100
- assertEquals(
- 0.013, DistanceMetric.EUCLIDEAN.distanceToScore(5.0), 0.001); // Very low similarity: 2 * e^(-5) ≈ 0.013
+ assertThat(DistanceMetric.EUCLIDEAN.distanceToScore(0.0))
+ .isCloseTo(2.0, within(0.001)); // Perfect similarity: 2 * e^(-0) = 2 * 1 = 2
+ assertThat(DistanceMetric.EUCLIDEAN.distanceToScore(1.0))
+ .isCloseTo(0.736, within(0.001)); // Moderate similarity: 2 * e^(-1) ≈ 0.736
+ assertThat(DistanceMetric.EUCLIDEAN.distanceToScore(3.0))
+ .isCloseTo(0.100, within(0.001)); // Lower similarity: 2 * e^(-3) ≈ 0.100
+ assertThat(DistanceMetric.EUCLIDEAN.distanceToScore(5.0))
+ .isCloseTo(0.013, within(0.001)); // Very low similarity: 2 * e^(-5) ≈ 0.013
}
}
diff --git a/embedding-stores/langchain4j-community-vearch/pom.xml b/embedding-stores/langchain4j-community-vearch/pom.xml
index fd62153d..c3a52083 100644
--- a/embedding-stores/langchain4j-community-vearch/pom.xml
+++ b/embedding-stores/langchain4j-community-vearch/pom.xml
@@ -77,7 +77,7 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
diff --git a/embedding-stores/langchain4j-community-yugabytedb/pom.xml b/embedding-stores/langchain4j-community-yugabytedb/pom.xml
index 78da369a..c1aa37a8 100644
--- a/embedding-stores/langchain4j-community-yugabytedb/pom.xml
+++ b/embedding-stores/langchain4j-community-yugabytedb/pom.xml
@@ -126,13 +126,13 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
org.testcontainers
- postgresql
+ testcontainers-postgresql
test
diff --git a/langchain4j-community-core/pom.xml b/langchain4j-community-core/pom.xml
index 0b7a72bf..2b25d2ef 100644
--- a/langchain4j-community-core/pom.xml
+++ b/langchain4j-community-core/pom.xml
@@ -21,6 +21,12 @@
+
+ dev.langchain4j
+ langchain4j-core
+ ${langchain4j.core.version}
+
+
dev.langchain4j
langchain4j
@@ -32,6 +38,11 @@
jackson-databind
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+
+
org.slf4j
slf4j-api
@@ -49,6 +60,18 @@
test
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
+
+
+ org.junit.jupiter
+ junit-jupiter-params
+ test
+
+
diff --git a/models/langchain4j-community-xinference/pom.xml b/models/langchain4j-community-xinference/pom.xml
index 1f338787..d1f36a19 100644
--- a/models/langchain4j-community-xinference/pom.xml
+++ b/models/langchain4j-community-xinference/pom.xml
@@ -74,7 +74,7 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
diff --git a/pom.xml b/pom.xml
index 4dc6a5d2..be82de37 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,8 +83,23 @@
1.9.0-SNAPSHOT
1.9.0-SNAPSHOT
1.9.0-SNAPSHOT
+
+
+ 2.0.1
+
+
+
+ org.testcontainers
+ testcontainers-bom
+ ${testcontainers.version}
+ pom
+ import
+
+
+
+
diff --git a/spring-boot-starters/langchain4j-community-clickhouse-spring-boot-starter/pom.xml b/spring-boot-starters/langchain4j-community-clickhouse-spring-boot-starter/pom.xml
index 924801ba..2587df8b 100644
--- a/spring-boot-starters/langchain4j-community-clickhouse-spring-boot-starter/pom.xml
+++ b/spring-boot-starters/langchain4j-community-clickhouse-spring-boot-starter/pom.xml
@@ -76,7 +76,7 @@
org.testcontainers
- clickhouse
+ testcontainers-clickhouse
test
diff --git a/spring-boot-starters/langchain4j-community-neo4j-spring-boot-starter/pom.xml b/spring-boot-starters/langchain4j-community-neo4j-spring-boot-starter/pom.xml
index e17c1060..18d23c51 100644
--- a/spring-boot-starters/langchain4j-community-neo4j-spring-boot-starter/pom.xml
+++ b/spring-boot-starters/langchain4j-community-neo4j-spring-boot-starter/pom.xml
@@ -73,13 +73,13 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
org.testcontainers
- neo4j
+ testcontainers-neo4j
test
diff --git a/spring-boot-starters/langchain4j-community-xinference-spring-boot-starter/pom.xml b/spring-boot-starters/langchain4j-community-xinference-spring-boot-starter/pom.xml
index 575aec7d..6dc9da7a 100644
--- a/spring-boot-starters/langchain4j-community-xinference-spring-boot-starter/pom.xml
+++ b/spring-boot-starters/langchain4j-community-xinference-spring-boot-starter/pom.xml
@@ -67,7 +67,7 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
diff --git a/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/DuckDuckGoWebSearchEngineIT.java b/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/DuckDuckGoWebSearchEngineIT.java
index 6f4c7773..9e0329ac 100644
--- a/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/DuckDuckGoWebSearchEngineIT.java
+++ b/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/DuckDuckGoWebSearchEngineIT.java
@@ -10,12 +10,12 @@
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
class DuckDuckGoWebSearchEngineIT {
+
private static final int EXPECTED_MAX_RESULTS = 7;
private static DuckDuckGoWebSearchEngine engine;
@@ -113,6 +113,6 @@ void should_search_with_max_results() {
.build();
WebSearchResults webSearchResults = engine.search(request);
List results = webSearchResults.results();
- Assertions.assertThat(results).hasSizeLessThanOrEqualTo(maxResults);
+ assertThat(results).hasSizeLessThanOrEqualTo(maxResults);
}
}
diff --git a/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/DuckDuckGoWebSearchEngineTest.java b/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/DuckDuckGoWebSearchEngineTest.java
index fffb7b96..512fb529 100644
--- a/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/DuckDuckGoWebSearchEngineTest.java
+++ b/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/DuckDuckGoWebSearchEngineTest.java
@@ -1,10 +1,8 @@
package dev.langchain4j.community.web.search.duckduckgo;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import java.net.URI;
import org.junit.jupiter.api.Test;
@@ -14,20 +12,20 @@ class DuckDuckGoWebSearchEngineTest {
private static void testURI(String uriString) {
assertDoesNotThrow(() -> DuckDuckGoWebSearchEngine.makeURI(uriString));
final URI uri = DuckDuckGoWebSearchEngine.makeURI(uriString);
- assertNotNull(uri);
+ assertThat(uri).isNotNull();
if (uriString.matches(".*\\s+.*")) {
- assertNotEquals(uriString, uri.toString());
+ assertThat(uri.toString()).isNotEqualTo(uriString);
} else {
- assertEquals(uriString, uri.toString());
+ assertThat(uri).hasToString(uriString);
}
}
@Test
- void test_malformed_urls() {
- assertThrows(
- IllegalArgumentException.class,
- () -> URI.create(
- "https://www.linkedin.com/pulse/introduction-langchain4j-supercharging-java-llms-ibrahim-jimoh-kyj4f#:~:text=LangChain4j is a groundbreaking Java,by Python and JavaScript libraries."));
+ void should_malformed_urls() {
+ assertThatExceptionOfType(IllegalArgumentException.class)
+ .isThrownBy(
+ () -> URI.create(
+ "https://www.linkedin.com/pulse/introduction-langchain4j-supercharging-java-llms-ibrahim-jimoh-kyj4f#:~:text=LangChain4j is a groundbreaking Java,by Python and JavaScript libraries."));
assertDoesNotThrow(
() -> URI.create(
"https://www.linkedin.com/pulse/introduction-langchain4j-supercharging-java-llms-ibrahim-jimoh-kyj4f#:~:text=LangChain4j"));
@@ -42,10 +40,13 @@ void test_malformed_urls() {
}
@Test
- void test_make_uri() {
- assertThrows(IllegalArgumentException.class, () -> DuckDuckGoWebSearchEngine.makeURI(null));
- assertThrows(IllegalArgumentException.class, () -> DuckDuckGoWebSearchEngine.makeURI(""));
- assertThrows(IllegalArgumentException.class, () -> DuckDuckGoWebSearchEngine.makeURI(" \\t"));
+ void should_make_uri() {
+ assertThatExceptionOfType(IllegalArgumentException.class)
+ .isThrownBy(() -> DuckDuckGoWebSearchEngine.makeURI(null));
+ assertThatExceptionOfType(IllegalArgumentException.class)
+ .isThrownBy(() -> DuckDuckGoWebSearchEngine.makeURI(""));
+ assertThatExceptionOfType(IllegalArgumentException.class)
+ .isThrownBy(() -> DuckDuckGoWebSearchEngine.makeURI(" \\t"));
testURI(
"https://www.linkedin.com/pulse/introduction-langchain4j-supercharging-java-llms-ibrahim-jimoh-kyj4f#:~:text=LangChain4j");
testURI(
diff --git a/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/UtilsTest.java b/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/UtilsTest.java
index 13cf3be1..62fe2356 100644
--- a/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/UtilsTest.java
+++ b/web-search-engines/langchain4j-community-web-search-engine-duckduckgo/src/test/java/dev/langchain4j/community/web/search/duckduckgo/UtilsTest.java
@@ -9,7 +9,7 @@
class UtilsTest {
@Test
- void test_buildFormData_basic() {
+ void shuold_build_form_data_basic() {
Map params = new LinkedHashMap<>();
params.put("q", "AI");
params.put("safe", "strict");
@@ -19,7 +19,7 @@ void test_buildFormData_basic() {
}
@Test
- void test_buildFormData_with_space_and_question_mark() {
+ void should_build_form_data_with_space_and_question_mark() {
Map params = new LinkedHashMap<>();
params.put("q", "What is LangChain4j?");
params.put("safe", "strict");
@@ -29,7 +29,7 @@ void test_buildFormData_with_space_and_question_mark() {
}
@Test
- void test_buildFormData_with_special_characters() {
+ void should_build_form_data_with_special_characters() {
Map params = new LinkedHashMap<>();
params.put("q", "test@email.com & more");
params.put("kl", "us-en");
@@ -39,13 +39,13 @@ void test_buildFormData_with_special_characters() {
}
@Test
- void test_buildFormData_null_params() {
+ void should_build_form_data_null_params() {
String actualFormData = Utils.buildFormData(null);
assertThat(actualFormData).isEmpty();
}
@Test
- void test_urlEncode_special_characters() {
+ void should_encode_url_with_special_characters() {
String input = "test@email.com?param=value&other=data";
String encoded = Utils.urlEncode(input);
assertThat(encoded).isEqualTo("test%40email.com%3Fparam%3Dvalue%26other%3Ddata");
diff --git a/web-search-engines/langchain4j-community-web-search-engine-searxng/pom.xml b/web-search-engines/langchain4j-community-web-search-engine-searxng/pom.xml
index b7de0f17..a2208d5e 100644
--- a/web-search-engines/langchain4j-community-web-search-engine-searxng/pom.xml
+++ b/web-search-engines/langchain4j-community-web-search-engine-searxng/pom.xml
@@ -70,7 +70,7 @@
org.testcontainers
- junit-jupiter
+ testcontainers-junit-jupiter
test
diff --git a/web-search-engines/langchain4j-community-web-search-engine-searxng/src/test/java/dev/langchain4j/community/web/search/searxng/SearXNGWebSearchEngineTest.java b/web-search-engines/langchain4j-community-web-search-engine-searxng/src/test/java/dev/langchain4j/community/web/search/searxng/SearXNGWebSearchEngineTest.java
index 91f95380..3c8481bb 100644
--- a/web-search-engines/langchain4j-community-web-search-engine-searxng/src/test/java/dev/langchain4j/community/web/search/searxng/SearXNGWebSearchEngineTest.java
+++ b/web-search-engines/langchain4j-community-web-search-engine-searxng/src/test/java/dev/langchain4j/community/web/search/searxng/SearXNGWebSearchEngineTest.java
@@ -1,10 +1,8 @@
package dev.langchain4j.community.web.search.searxng;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import java.net.URI;
import org.junit.jupiter.api.Test;
@@ -14,20 +12,20 @@ class SearXNGWebSearchEngineTest {
private static void testURI(String uriString) {
assertDoesNotThrow(() -> SearXNGWebSearchEngine.makeURI(uriString));
final URI uri = SearXNGWebSearchEngine.makeURI(uriString);
- assertNotNull(uri);
+ assertThat(uri).isNotNull();
if (uriString.matches(".*\\s+.*")) {
- assertNotEquals(uriString, uri.toString());
+ assertThat(uri.toString()).isNotEqualTo(uriString);
} else {
- assertEquals(uriString, uri.toString());
+ assertThat(uri).hasToString(uriString);
}
}
@Test
- void test_malformed_urls() {
- assertThrows(
- IllegalArgumentException.class,
- () -> URI.create(
- "https://www.linkedin.com/pulse/introduction-langchain4j-supercharging-java-llms-ibrahim-jimoh-kyj4f#:~:text=LangChain4j is a groundbreaking Java,by Python and JavaScript libraries."));
+ void should_malformed_urls() {
+ assertThatExceptionOfType(IllegalArgumentException.class)
+ .isThrownBy(
+ () -> URI.create(
+ "https://www.linkedin.com/pulse/introduction-langchain4j-supercharging-java-llms-ibrahim-jimoh-kyj4f#:~:text=LangChain4j is a groundbreaking Java,by Python and JavaScript libraries."));
assertDoesNotThrow(
() -> URI.create(
"https://www.linkedin.com/pulse/introduction-langchain4j-supercharging-java-llms-ibrahim-jimoh-kyj4f#:~:text=LangChain4j"));
@@ -42,10 +40,12 @@ void test_malformed_urls() {
}
@Test
- void test_make_uri() {
- assertThrows(IllegalArgumentException.class, () -> SearXNGWebSearchEngine.makeURI(null));
- assertThrows(IllegalArgumentException.class, () -> SearXNGWebSearchEngine.makeURI(""));
- assertThrows(IllegalArgumentException.class, () -> SearXNGWebSearchEngine.makeURI(" \\t"));
+ void should_make_uri() {
+ assertThatExceptionOfType(IllegalArgumentException.class)
+ .isThrownBy(() -> SearXNGWebSearchEngine.makeURI(null));
+ assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> SearXNGWebSearchEngine.makeURI(""));
+ assertThatExceptionOfType(IllegalArgumentException.class)
+ .isThrownBy(() -> SearXNGWebSearchEngine.makeURI(" \\t"));
testURI(
"https://www.linkedin.com/pulse/introduction-langchain4j-supercharging-java-llms-ibrahim-jimoh-kyj4f#:~:text=LangChain4j");
testURI(
diff --git a/web-search-engines/langchain4j-community-web-search-engine-searxng/src/test/java/dev/langchain4j/community/web/search/searxng/UtilTest.java b/web-search-engines/langchain4j-community-web-search-engine-searxng/src/test/java/dev/langchain4j/community/web/search/searxng/UtilTest.java
index 34e980be..166b93d0 100644
--- a/web-search-engines/langchain4j-community-web-search-engine-searxng/src/test/java/dev/langchain4j/community/web/search/searxng/UtilTest.java
+++ b/web-search-engines/langchain4j-community-web-search-engine-searxng/src/test/java/dev/langchain4j/community/web/search/searxng/UtilTest.java
@@ -7,8 +7,9 @@
import org.junit.jupiter.api.Test;
class UtilTest {
+
@Test
- void test_make_url() {
+ void should_make_url_when_provide_params() {
String path = "search";
Map params = new LinkedHashMap<>();
params.put("q", "AI");
@@ -19,7 +20,7 @@ void test_make_url() {
}
@Test
- void test_make_url_with_space() {
+ void should_make_url_with_space() {
String path = "search";
Map params = new LinkedHashMap<>();
params.put("q", "qqq stock quote");
@@ -30,7 +31,7 @@ void test_make_url_with_space() {
}
@Test
- void test_make_url_with_question_mark() {
+ void should_make_url_with_question_mark() {
String path = "search";
Map params = new LinkedHashMap<>();
params.put("q", "LangChain4j?");
@@ -41,7 +42,7 @@ void test_make_url_with_question_mark() {
}
@Test
- void test_makeUrl_with_space_and_question_mark() {
+ void should_make_url_with_space_and_question_mark() {
String path = "search";
Map params = new LinkedHashMap<>();
params.put("q", "What is LangChain4j?");