Forge
csharpdeeb25a2
1using CascadeIDE.Features.WorkspaceNavigation.Application;
2using Xunit;
3
4namespace CascadeIDE.Tests;
5
6public sealed class DocReverseAnchorResolverTests
7{
8 [Fact]
9 public void Resolve_finds_bracket_anchor_in_adr_body()
10 {
11 var root = Path.Combine(Path.GetTempPath(), "crs-test-" + Guid.NewGuid().ToString("N"));
12 Directory.CreateDirectory(root);
13 try
14 {
15 var anchorAbs = Path.Combine(root, "src", "Foo.cs");
16 Directory.CreateDirectory(Path.GetDirectoryName(anchorAbs)!);
17 File.WriteAllText(anchorAbs, "// code");
18
19 const string docRel = "docs/adr/sample.md";
20 var docAbs = Path.Combine(root, docRel.Replace('/', Path.DirectorySeparatorChar));
21 Directory.CreateDirectory(Path.GetDirectoryName(docAbs)!);
22 File.WriteAllText(
23 docAbs,
24 "Implementation: [F:src/Foo.cs M:RunAsync].");
25
26 var hits = DocReverseAnchorResolver.Resolve(root, anchorAbs, [docRel]);
27
28 Assert.Single(hits);
29 Assert.Equal(DocReverseAnchorResolver.ProvenanceBracket, hits[0].Provenance);
30 Assert.Equal("RunAsync", hits[0].CodeAnchor.MemberKey);
31 }
32 finally
33 {
34 if (Directory.Exists(root))
35 Directory.Delete(root, recursive: true);
36 }
37 }
38}
39
View only · write via MCP/CIDE