This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 948deff1eb9422f1804ebf0583031a271feab634 Author: Otavio Rodolfo Piske <angusyo...@gmail.com> AuthorDate: Fri Aug 8 14:16:43 2025 +0200 CAMEL-22326: Added tests --- .../camel-ai/camel-langchain4j-agent-api/pom.xml | 7 + .../agent/api/AgentConfigurationTest.java | 141 +++++++++++++++++++++ 2 files changed, 148 insertions(+) diff --git a/components/camel-ai/camel-langchain4j-agent-api/pom.xml b/components/camel-ai/camel-langchain4j-agent-api/pom.xml index b875f4dd599..1a2d4e4c18e 100644 --- a/components/camel-ai/camel-langchain4j-agent-api/pom.xml +++ b/components/camel-ai/camel-langchain4j-agent-api/pom.xml @@ -52,6 +52,13 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-api</artifactId> </dependency> + + <!-- test dependencies --> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/components/camel-ai/camel-langchain4j-agent-api/src/test/java/org/apache/camel/component/langchain4j/agent/api/AgentConfigurationTest.java b/components/camel-ai/camel-langchain4j-agent-api/src/test/java/org/apache/camel/component/langchain4j/agent/api/AgentConfigurationTest.java new file mode 100644 index 00000000000..86264dae307 --- /dev/null +++ b/components/camel-ai/camel-langchain4j-agent-api/src/test/java/org/apache/camel/component/langchain4j/agent/api/AgentConfigurationTest.java @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.langchain4j.agent.api; + +import java.util.List; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class AgentConfigurationTest { + + @Test + public void testParseGuardrailClasses_WithValidClasses() { + // Test with built-in Java classes that should always be available + String classNames = "java.lang.String,java.util.List,java.io.Serializable"; + + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(classNames); + + assertNotNull(result); + assertEquals(3, result.size()); + assertTrue(result.contains(String.class)); + assertTrue(result.contains(List.class)); + assertTrue(result.contains(java.io.Serializable.class)); + } + + @Test + public void testParseGuardrailClasses_WithMixedValidAndInvalidClasses() { + // Mix of valid and invalid class names + String classNames = "java.lang.String,com.nonexistent.InvalidClass,java.util.List"; + + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(classNames); + + assertNotNull(result); + assertEquals(2, result.size()); + assertTrue(result.contains(String.class)); + assertTrue(result.contains(List.class)); + } + + @Test + public void testParseGuardrailClasses_WithInvalidClasses() { + // Test with non-existent classes + String classNames = "com.nonexistent.InvalidClass1,com.nonexistent.InvalidClass2"; + + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(classNames); + + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + public void testParseGuardrailClasses_WithNullInput() { + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(null); + + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + public void testParseGuardrailClasses_WithEmptyString() { + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(""); + + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + public void testParseGuardrailClasses_WithWhitespaceOnly() { + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(" "); + + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + public void testParseGuardrailClasses_WithExtraWhitespace() { + // Test with extra whitespace around class names + String classNames = " java.lang.String , java.util.List , java.io.Serializable "; + + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(classNames); + + assertNotNull(result); + assertEquals(3, result.size()); + assertTrue(result.contains(String.class)); + assertTrue(result.contains(List.class)); + assertTrue(result.contains(java.io.Serializable.class)); + } + + @Test + public void testParseGuardrailClasses_WithEmptyClassNames() { + // Test with empty class names (multiple commas) + String classNames = "java.lang.String,,java.util.List,,,java.io.Serializable,"; + + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(classNames); + + assertNotNull(result); + assertEquals(3, result.size()); + assertTrue(result.contains(String.class)); + assertTrue(result.contains(List.class)); + assertTrue(result.contains(java.io.Serializable.class)); + } + + @Test + public void testParseGuardrailClasses_WithSingleClass() { + String classNames = "java.lang.String"; + + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(classNames); + + assertNotNull(result); + assertEquals(1, result.size()); + assertTrue(result.contains(String.class)); + } + + @Test + public void testParseGuardrailClasses_WithTrailingComma() { + String classNames = "java.lang.String,java.util.List,"; + + List<Class<?>> result = AgentConfiguration.parseGuardrailClasses(classNames); + + assertNotNull(result); + assertEquals(2, result.size()); + assertTrue(result.contains(String.class)); + assertTrue(result.contains(List.class)); + } +}