using OpenHarbor.MCP.Client.Core.Models; using Xunit; namespace OpenHarbor.MCP.Client.Core.Tests.Models; /// /// Unit tests for McpToolResult following TDD approach. /// Tests result creation, success/failure states, and factory methods. /// public class McpToolResultTests { [Fact] public void Success_WithContent_ReturnsSuccessResult() { // Arrange var content = "Test content"; // Act var result = McpToolResult.Success(content); // Assert Assert.True(result.IsSuccess); Assert.Equal(content, result.Content); Assert.Null(result.Error); } [Fact] public void Success_WithEmptyContent_ReturnsSuccessResultWithEmptyString() { // Arrange var content = string.Empty; // Act var result = McpToolResult.Success(content); // Assert Assert.True(result.IsSuccess); Assert.Equal(string.Empty, result.Content); Assert.Null(result.Error); } [Fact] public void Failure_WithError_ReturnsFailureResult() { // Arrange var error = "Test error"; // Act var result = McpToolResult.Failure(error); // Assert Assert.False(result.IsSuccess); Assert.Equal(error, result.Error); Assert.Equal(string.Empty, result.Content); } [Fact] public void Failure_WithEmptyError_ReturnsFailureResult() { // Arrange var error = string.Empty; // Act var result = McpToolResult.Failure(error); // Assert Assert.False(result.IsSuccess); Assert.Equal(string.Empty, result.Error); Assert.Equal(string.Empty, result.Content); } [Fact] public void Constructor_WithInitializers_SetsProperties() { // Arrange & Act var result = new McpToolResult { IsSuccess = true, Content = "Test content", Error = null }; // Assert Assert.True(result.IsSuccess); Assert.Equal("Test content", result.Content); Assert.Null(result.Error); } [Fact] public void Default_Content_IsEmptyString() { // Arrange & Act var result = new McpToolResult { IsSuccess = false }; // Assert Assert.Equal(string.Empty, result.Content); } }