assertSame($name, $attribute->name); $this->assertSame($description, $attribute->description); } public function testInstantiatesWithNullValuesForNameDescriptionAndOutputSchema(): void { // Arrange & Act $attribute = new McpTool(name: null, description: null, outputSchema: null); // Assert $this->assertNull($attribute->name); $this->assertNull($attribute->description); $this->assertNull($attribute->outputSchema); } public function testInstantiatesWithMissingOptionalArguments(): void { // Arrange & Act $attribute = new McpTool(); // Use default constructor values // Assert $this->assertNull($attribute->name); $this->assertNull($attribute->description); $this->assertNull($attribute->outputSchema); } public function testInstantiatesWithTitle(): void { $attribute = new McpTool(name: 'n', title: 'T'); $this->assertSame('n', $attribute->name); $this->assertSame('T', $attribute->title); } public function testDefaultTitleIsNull(): void { $attribute = new McpTool(); $this->assertNull($attribute->title); } public function testInstantiatesWithOutputSchema(): void { // Arrange $name = 'test-tool-name'; $description = 'This is a test description.'; $outputSchema = [ 'type' => 'object', 'properties' => [ 'result' => [ 'type' => 'string', 'description' => 'The result of the operation', ], ], 'required' => ['result'], ]; // Act $attribute = new McpTool(name: $name, description: $description, outputSchema: $outputSchema); // Assert $this->assertSame($name, $attribute->name); $this->assertSame($description, $attribute->description); $this->assertSame($outputSchema, $attribute->outputSchema); } }