Forge
csharpdeeb25a2
1using CascadeIDE.Cockpit.Channels.TraceFlow;
2using CascadeIDE.Cockpit.Graph;
3using CascadeIDE.Services;
4using Xunit;
5
6namespace CascadeIDE.Tests;
7
8public sealed class UnitTestTraceChannelTests
9{
10 [Fact]
11 public void Build_WhenImpactedTestsPresent_HighlightsExitFlow()
12 {
13 var doc = new GraphDocument
14 {
15 AnchorPath = @"D:\w\A.cs",
16 Nodes =
17 [
18 Node("n0", "anchor"),
19 Node("n1", "condition_step"),
20 Node("n2", "exit_step"),
21 Node("n3", "call_step")
22 ],
23 Edges =
24 [
25 Edge("n0", "n1", "ConditionalCall"),
26 Edge("n1", "n2", "Exit"),
27 Edge("n1", "n3", "Call")
28 ]
29 };
30
31 var channel = new UnitTestTraceChannel();
32 var snapshot = channel.Build(new TraceFlowChannelContext(doc, ImpactedTestsBadge: 2, LastTestSummary: "1 failed"));
33
34 Assert.Contains("n2", snapshot.HighlightedNodeIds);
35 Assert.Contains("n1->n2", snapshot.HighlightedEdgeKeys);
36 }
37
38 [Fact]
39 public void Build_WhenNoImpactedTests_DoesNotHighlight()
40 {
41 var doc = new GraphDocument
42 {
43 AnchorPath = @"D:\w\A.cs",
44 Nodes = [Node("n0", "anchor"), Node("n1", "exit_step")],
45 Edges = [Edge("n0", "n1", "Exit")]
46 };
47
48 var channel = new UnitTestTraceChannel();
49 var snapshot = channel.Build(new TraceFlowChannelContext(doc, ImpactedTestsBadge: 0, LastTestSummary: ""));
50
51 Assert.Empty(snapshot.HighlightedNodeIds);
52 Assert.Empty(snapshot.HighlightedEdgeKeys);
53 }
54
55 private static GraphNode Node(string id, string kind) => new()
56 {
57 Id = id,
58 Path = @"D:\w\A.cs",
59 Kind = kind,
60 Label = id
61 };
62
63 private static GraphEdge Edge(string from, string to, string kind) => new()
64 {
65 FromId = from,
66 ToId = to,
67 Kind = kind,
68 RelationKind = kind
69 };
70}
71
View only · write via MCP/CIDE