@@ -447,5 +447,46 @@ def call(message:, server_context: nil)
447447 expected_output = { type : "object" , properties : { result : { type : "string" } , success : { type : "boolean" } } , required : [ "result" , "success" ] }
448448 assert_equal expected_output , tool . output_schema . to_h
449449 end
450+
451+ test "accepts valid tool names" do
452+ assert Tool . define ( name : "getUser" )
453+ assert Tool . define ( name : "DATA_EXPORT_v2" )
454+ assert Tool . define ( name : "admin.tools.list" )
455+ assert Tool . define ( name : "a" * 128 )
456+ end
457+
458+ test "raises an error when tool name is empty in class definition" do
459+ error = assert_raises ( ArgumentError ) do
460+ class EmptyTitleNameTool < Tool
461+ tool_name ""
462+ end
463+ end
464+ assert_equal ( "Tool names should be between 1 and 128 characters in length (inclusive)." , error . message )
465+ end
466+
467+ test "allows nil tool name in class definition" do
468+ assert_nothing_raised do
469+ class EmptyTitleNameTool < Tool
470+ tool_name nil
471+ end
472+ end
473+ end
474+
475+ test "raises an error when tool name is empty" do
476+ error = assert_raises ( ArgumentError ) { Tool . define ( name : "" ) }
477+ assert_equal ( "Tool names should be between 1 and 128 characters in length (inclusive)." , error . message )
478+ end
479+
480+ test "raises an error when tool name exceeds 128 characters" do
481+ error = assert_raises ( ArgumentError ) { Tool . define ( name : "a" * 129 ) }
482+ assert_equal ( "Tool names should be between 1 and 128 characters in length (inclusive)." , error . message )
483+ end
484+
485+ test "raises an error when tool name includes invalid characters (e.g., spaces)" do
486+ error = assert_raises ( ArgumentError ) { Tool . define ( name : "foo bar" ) }
487+ assert_equal ( <<~MESSAGE , error . message )
488+ Tool names only allowed characters: uppercase and lowercase ASCII letters (A-Z, a-z), digits (0-9), underscore (_), hyphen (-), and dot (.).
489+ MESSAGE
490+ end
450491 end
451492end
0 commit comments