71 lines
2.5 KiB
Java
71 lines
2.5 KiB
Java
package mcp.tools.helper;
|
|
|
|
import io.modelcontextprotocol.spec.McpSchema;
|
|
import org.junit.jupiter.api.Test;
|
|
import java.util.Map;
|
|
import java.util.List;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
public class SchemaBuilderTest {
|
|
|
|
@Test
|
|
public void testBuildObject() {
|
|
McpSchema.JsonSchema schema = new SchemaBuilder()
|
|
.type("object")
|
|
.addProperty("name", "string", "User name")
|
|
.addProperty("age", "integer", "User age")
|
|
.required("name")
|
|
.additionalProperties(false)
|
|
.build();
|
|
|
|
assertEquals("object", schema.type());
|
|
assertNotNull(schema.properties());
|
|
assertTrue(schema.properties().containsKey("name"));
|
|
assertTrue(schema.properties().containsKey("age"));
|
|
assertEquals(List.of("name"), schema.required());
|
|
assertEquals(false, schema.additionalProperties());
|
|
|
|
Map<String, Object> nameProp = (Map<String, Object>) schema.properties().get("name");
|
|
assertEquals("string", nameProp.get("type"));
|
|
assertEquals("User name", nameProp.get("description"));
|
|
}
|
|
|
|
@Test
|
|
public void testBuildMap() {
|
|
Map<String, Object> map = new SchemaBuilder()
|
|
.type("object")
|
|
.addProperty("message", "string", "Echo message")
|
|
.required("message")
|
|
.buildMap();
|
|
|
|
assertEquals("object", map.get("type"));
|
|
Map<String, Object> properties = (Map<String, Object>) map.get("properties");
|
|
assertNotNull(properties);
|
|
assertTrue(properties.containsKey("message"));
|
|
assertEquals(List.of("message"), map.get("required"));
|
|
}
|
|
|
|
@Test
|
|
public void testEmptySchema() {
|
|
McpSchema.JsonSchema schema = new SchemaBuilder().build();
|
|
assertEquals("object", schema.type());
|
|
assertNull(schema.properties());
|
|
assertNull(schema.required());
|
|
}
|
|
|
|
@Test
|
|
public void testReturns() {
|
|
Map<String, Object> map = new SchemaBuilder()
|
|
.returns("string", "The result")
|
|
.buildMap();
|
|
|
|
assertEquals("object", map.get("type"));
|
|
Map<String, Object> properties = (Map<String, Object>) map.get("properties");
|
|
assertNotNull(properties);
|
|
assertTrue(properties.containsKey("result"));
|
|
Map<String, Object> resultProp = (Map<String, Object>) properties.get("result");
|
|
assertEquals("string", resultProp.get("type"));
|
|
assertEquals("The result", resultProp.get("description"));
|
|
}
|
|
}
|