Forge
csharpe9e34128
1using DotnetBuildTestMcp;
2using McpToolManifest;
3
4namespace DotnetBuildTestMcp.Tests;
5
6public sealed class McpToolManifestTests
7{
8 [Fact]
9 public void Mcp_tools_manifest_matches_ToolCatalog_names_and_descriptions()
10 {
11 var manifestPath = Path.Combine(AppContext.BaseDirectory, "mcp-tools.manifest.json");
12 Assert.True(File.Exists(manifestPath), $"Missing copied manifest: {manifestPath}");
13
14 var doc = McpToolManifestReader.Load(manifestPath);
15 var validation = McpToolManifestReader.Validate(doc);
16 Assert.True(validation.Count == 0, string.Join(Environment.NewLine, validation));
17
18 Assert.Equal("dotnet-build-test-mcp", doc.McpId);
19
20 var catalog = ToolCatalog.Build();
21 var manifestNames = doc.Tools.Select(t => t.Name).ToArray();
22 var catalogNames = catalog.Select(t => t.Name).ToArray();
23 var nameDiff = ToolCatalogNameComparer.Compare(manifestNames, catalogNames);
24 Assert.True(nameDiff.Count == 0, string.Join(Environment.NewLine, nameDiff));
25
26 var catalogByName = catalog.ToDictionary(t => t.Name, t => t.Description, StringComparer.Ordinal);
27 Assert.Equal(catalogByName.Count, doc.Tools.Count);
28 foreach (var tool in doc.Tools)
29 {
30 Assert.True(catalogByName.TryGetValue(tool.Name, out var expected), $"Unexpected tool in manifest: {tool.Name}");
31 Assert.Equal(expected, tool.Description);
32 }
33 }
34}
35
View only · write via MCP/CIDE