diff --git a/.vscode/settings.json b/.vscode/settings.json index 11a990d..b241574 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,5 +17,8 @@ "targetdir", "typeof" ], - "dotnet.unitTests.runSettingsPath": "./tests/AnthropicClient.Tests/.runsettings" + "dotnet.unitTests.runSettingsPath": "./tests/AnthropicClient.Tests/.runsettings", + "search.exclude": { + "**/docs": true, + } } \ No newline at end of file diff --git a/tests/AnthropicClient.Tests/Unit/Models/CustomSourceTests.cs b/tests/AnthropicClient.Tests/Unit/Models/CustomSourceTests.cs new file mode 100644 index 0000000..53d8379 --- /dev/null +++ b/tests/AnthropicClient.Tests/Unit/Models/CustomSourceTests.cs @@ -0,0 +1,35 @@ +namespace AnthropicClient.Tests.Unit.Models; + +public class CustomSourceTests +{ + [Fact] + public void Constructor_WhenCalled_ItShouldSetProperties() + { + var result = new CustomSource(); + + result.Content.Should().BeEmpty(); + result.Type.Should().Be("content"); + } + + [Fact] + public void Constructor_WhenCalledWithContent_ItShouldSetProperties() + { + var content = new List + { + new("Sample text") + }; + + var result = new CustomSource(content); + + result.Content.Should().BeSameAs(content); + result.Type.Should().Be("content"); + } + + [Fact] + public void Constructor_WhenCalledWithNullContent_ItShouldThrowArgumentNullException() + { + var act = () => new CustomSource(null!); + + act.Should().Throw(); + } +} \ No newline at end of file diff --git a/tests/AnthropicClient.Tests/Unit/Models/DocumentContentTests.cs b/tests/AnthropicClient.Tests/Unit/Models/DocumentContentTests.cs index 99525d5..1687bdb 100644 --- a/tests/AnthropicClient.Tests/Unit/Models/DocumentContentTests.cs +++ b/tests/AnthropicClient.Tests/Unit/Models/DocumentContentTests.cs @@ -87,6 +87,18 @@ public class DocumentContentTests : SerializationTest action.Should().Throw(); } + [Fact] + public void Constructor_WhenCalledWithSourceAndCacheControl_ItShouldInitializeSourceAndCacheControl() + { + var source = new DocumentSource("application/pdf", "data"); + var cacheControl = new EphemeralCacheControl(); + + var result = new DocumentContent(source, cacheControl); + + result.Source.Should().BeSameAs(source); + result.CacheControl.Should().BeSameAs(cacheControl); + } + [Fact] public void JsonSerialization_WhenSerialized_ItShouldHaveExpectedShape() { diff --git a/tests/AnthropicClient.Tests/Unit/Models/PageLocationCitationTests.cs b/tests/AnthropicClient.Tests/Unit/Models/PageLocationCitationTests.cs new file mode 100644 index 0000000..37cc3a4 --- /dev/null +++ b/tests/AnthropicClient.Tests/Unit/Models/PageLocationCitationTests.cs @@ -0,0 +1,17 @@ +namespace AnthropicClient.Tests.Unit.Models; + +public class PageLocationCitationTests +{ + [Fact] + public void Constructor_WhenCalled_ItShouldSetProperties() + { + var result = new PageLocationCitation(); + + result.Type.Should().Be("page_location"); + result.CitedText.Should().BeEmpty(); + result.DocumentIndex.Should().Be(0); + result.DocumentTitle.Should().BeEmpty(); + result.StartPageNumber.Should().Be(0); + result.EndPageNumber.Should().Be(0); + } +} \ No newline at end of file diff --git a/tests/AnthropicClient.Tests/Unit/Models/SourceTypeTests.cs b/tests/AnthropicClient.Tests/Unit/Models/SourceTypeTests.cs new file mode 100644 index 0000000..1e091ab --- /dev/null +++ b/tests/AnthropicClient.Tests/Unit/Models/SourceTypeTests.cs @@ -0,0 +1,22 @@ +namespace AnthropicClient.Tests.Unit.Models; + +public class SourceTypeTests +{ + [Fact] + public void Base64_WhenCalled_ItShouldReturnCorrectValue() + { + SourceType.Base64.Should().Be("base64"); + } + + [Fact] + public void Content_WhenCalled_ItShouldReturnCorrectValue() + { + SourceType.Content.Should().Be("content"); + } + + [Fact] + public void Text_WhenCalled_ItShouldReturnCorrectValue() + { + SourceType.Text.Should().Be("text"); + } +} \ No newline at end of file diff --git a/tests/AnthropicClient.Tests/Unit/Models/TextSourceTests.cs b/tests/AnthropicClient.Tests/Unit/Models/TextSourceTests.cs new file mode 100644 index 0000000..eacdff3 --- /dev/null +++ b/tests/AnthropicClient.Tests/Unit/Models/TextSourceTests.cs @@ -0,0 +1,14 @@ +namespace AnthropicClient.Tests.Unit.Models; + +public class TextSourceTests +{ + [Fact] + public void Constructor_WhenCalled_ItShouldSetProperties() + { + var result = new TextSource("data"); + + result.Type.Should().Be("text"); + result.MediaType.Should().Be("text/plain"); + result.Data.Should().Be("data"); + } +} \ No newline at end of file