Forge
csharpdeeb25a2
1using CascadeIDE.Services.ChordNotation;
2using Xunit;
3
4namespace CascadeIDE.Tests;
5
6public sealed class ChordKeycapLayoutBuilderTests
7{
8 [Fact]
9 public void Ctrl_shift_p_three_modifier_caps_plus_key()
10 {
11 Assert.True(KeyGestureChordSyntax.TryParseToNormalized("Ctrl+Shift+P", out var seq, out _));
12 var layout = ChordKeycapLayoutBuilder.Build(seq, ChordKeycapLabelFlavor.WindowsWords);
13 Assert.Single(layout.Steps);
14 var segs = layout.Steps[0].Segments;
15 Assert.Equal(3, segs.Count);
16 Assert.Equal("Ctrl", segs[0].Label);
17 Assert.Equal("Shift", segs[1].Label);
18 Assert.Equal("P", segs[2].Label);
19 }
20
21 [Fact]
22 public void Mac_glyphs_one_segment_per_modifier()
23 {
24 Assert.True(KeyGestureChordSyntax.TryParseToNormalized("Ctrl+Shift+P", out var seq, out _));
25 var layout = ChordKeycapLayoutBuilder.Build(seq, ChordKeycapLabelFlavor.MacGlyphs);
26 var segs = layout.Steps[0].Segments;
27 Assert.Equal(3, segs.Count);
28 Assert.Equal("\u2303", segs[0].Label);
29 Assert.Equal("\u21E7", segs[1].Label);
30 Assert.Equal("P", segs[2].Label);
31 }
32
33 [Fact]
34 public void Sequence_preserves_multiple_steps()
35 {
36 Assert.True(ChordNotationParser.TryParseVimToNormalized("<C-k> m", out var seq, out _));
37 var layout = ChordNotationRenderer.BuildKeycapLayout(seq);
38 Assert.Equal(2, layout.Steps.Count);
39 Assert.Equal(2, layout.Steps[0].Segments.Count); // Ctrl + K
40 Assert.Single(layout.Steps[1].Segments);
41 }
42}
43
View only · write via MCP/CIDE