Forge
csharpdeeb25a2
1using CascadeIDE.Services.Intercom;
2using Xunit;
3
4namespace CascadeIDE.Tests;
5
6public sealed class BracketCodeReferenceParserTests
7{
8 [Fact]
9 public void TryParse_parses_F_M_axes()
10 {
11 Assert.True(BracketCodeReferenceParser.TryParse(
12 "[F:Features/Chat/Foo.cs M:RunAsync]",
13 out var reference,
14 out _));
15 Assert.Equal("Features/Chat/Foo.cs", reference.File);
16 Assert.Equal("RunAsync", reference.MemberKey);
17 }
18
19 [Fact]
20 public void EnumerateInProse_skips_fenced_code()
21 {
22 const string md = """
23 prose [F:src/A.cs M:Bar] here
24 ```csharp
25 var x = [F:ignored.cs M:Ignored];
26 ```
27 """;
28
29 var hits = BracketCodeReferenceParser.EnumerateInProse(md);
30 Assert.Single(hits);
31 Assert.Equal("src/A.cs", hits[0].Reference.File);
32 }
33
34 [Fact]
35 public void EnumerateInProse_skips_markdown_link()
36 {
37 const string md = "See [M:Run](docs/adr/0001.md) for details.";
38
39 Assert.Empty(BracketCodeReferenceParser.EnumerateInProse(md));
40 }
41}
42
View only · write via MCP/CIDE