Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ class ToolRegistry {
* @param registered RegisteredToolFunction wrapper with metadata
*/
void registerTool(String toolName, AgentTool tool, RegisteredToolFunction registered) {
if (toolName == null || toolName.isBlank()) {
throw new IllegalArgumentException("Tool name cannot be null or blank");
}
tools.put(toolName, tool);
registeredTools.put(toolName, registered);
}
Expand All @@ -61,6 +64,9 @@ void registerTool(String toolName, AgentTool tool, RegisteredToolFunction regist
* @return AgentTool or null if not found
*/
AgentTool getTool(String name) {
if (name == null || name.isBlank()) {
return null;
}
return tools.get(name);
}

Expand All @@ -71,6 +77,9 @@ AgentTool getTool(String name) {
* @return RegisteredToolFunction or null if not found
*/
RegisteredToolFunction getRegisteredTool(String name) {
if (name == null || name.isBlank()) {
return null;
}
return registeredTools.get(name);
}

Expand Down Expand Up @@ -98,6 +107,9 @@ Map<String, RegisteredToolFunction> getAllRegisteredTools() {
* @param toolName Tool name to remove
*/
void removeTool(String toolName) {
if (toolName == null || toolName.isBlank()) {
throw new IllegalArgumentException("Tool name cannot be null or blank");
}
tools.remove(toolName);
registeredTools.remove(toolName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotSame;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;

import io.agentscope.core.message.ToolResultBlock;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Mono;

Expand Down Expand Up @@ -297,4 +299,64 @@ void testConcurrentAccess() {
// Assert
assertEquals(200, registry.getToolNames().size());
}

@Test
@DisplayName("Should throw IllegalArgumentException register null name tool")
void testRegisterNullNameTool() {
assertThrows(
IllegalArgumentException.class,
() -> registry.registerTool(null, mockTool1, registered1));
}

@Test
@DisplayName("Should throw IllegalArgumentException register empty name tool")
void testRegisterEmptyNameTool() {
assertThrows(
IllegalArgumentException.class,
() -> registry.registerTool("", mockTool1, registered1));
}

@Test
@DisplayName("Should throw IllegalArgumentException register blank name tool")
void testRegisterBlankNameTool() {
assertThrows(
IllegalArgumentException.class,
() -> registry.registerTool(" ", mockTool1, registered1));
}

@Test
@DisplayName("Should throw IllegalArgumentException remove null name tool")
void testRemoveNullNameTool() {
assertThrows(IllegalArgumentException.class, () -> registry.removeTool(null));
}

@Test
@DisplayName("Should throw IllegalArgumentException register empty name tool")
void testRemoveEmptyNameTool() {
assertThrows(IllegalArgumentException.class, () -> registry.removeTool(""));
}

@Test
@DisplayName("Should throw IllegalArgumentException register blank name tool")
void testRemoveBlankNameTool() {
assertThrows(IllegalArgumentException.class, () -> registry.removeTool(" "));
}

@Test
@DisplayName("Should return null get null name tool")
void testGetNullNameTool() {
assertNull(registry.getTool(null));
}

@Test
@DisplayName("Should return null get empty name tool")
void testGetEmptyNameTool() {
assertNull(registry.getTool(""));
}

@Test
@DisplayName("Should return null get blank name tool")
void testGetBlankNameTool() {
assertNull(registry.getTool(" "));
}
}
Loading