Forge
csharpdeeb25a2
1#nullable enable
2using Avalonia;
3using CascadeIDE.Cockpit.Graph.Layout;
4using CascadeIDE.ViewModels;
5using Xunit;
6
7namespace CascadeIDE.Tests;
8
9public sealed class CodeNavigationMapGraphSceneProjectionTests
10{
11 [Fact]
12 public void RoundTrip_PreservesLoopGroupIdAndControlFlowMainAxis()
13 {
14 var layout = new GraphLayoutScene
15 {
16 Nodes =
17 [
18 new GraphLayoutNode
19 {
20 Id = "a",
21 Kind = "anchor",
22 FullPath = "p",
23 Label = "A",
24 Center = new Point(1, 2),
25 Radius = 10,
26 IsAnchor = true,
27 LoopGroupId = null,
28 },
29 new GraphLayoutNode
30 {
31 Id = "b",
32 Kind = "loop_step",
33 FullPath = "p",
34 Label = "for",
35 Center = new Point(3, 4),
36 Radius = 9,
37 IsAnchor = false,
38 LoopGroupId = 7,
39 },
40 ],
41 Edges = [],
42 ControlFlowMainAxis = GraphControlFlowMainAxis.Horizontal,
43 };
44
45 var vm = CodeNavigationMapGraphSceneProjection.ToViewModel(layout, 200, 120);
46 Assert.Equal(7, vm.Nodes[1].LoopGroupId);
47 Assert.Equal(GraphControlFlowMainAxis.Horizontal, vm.ControlFlowMainAxis);
48
49 var back = CodeNavigationMapGraphSceneProjection.FromViewModel(vm);
50 Assert.Equal(7, back.Nodes[1].LoopGroupId);
51 Assert.Equal(GraphControlFlowMainAxis.Horizontal, back.ControlFlowMainAxis);
52 }
53}
54
View only · write via MCP/CIDE