Forge
csharpdeeb25a2
1using CascadeIDE.Services;
2using Xunit;
3
4namespace CascadeIDE.Tests;
5
6public sealed class MelodyInterpreterTests
7{
8 [Fact]
9 public void BuildPalette_EmptyTail_StartsWithHint_AndSelectsFirstCommand()
10 {
11 var plan = MelodyInterpreter.BuildPalette("");
12 Assert.True(plan.Lines[0] is MelodyPaletteHint);
13 Assert.Contains(plan.Lines, l => l is MelodyPaletteCommand { Alias: "gs" });
14 Assert.True(plan.Lines.Count >= 2);
15 Assert.Equal(1, plan.SelectedIndex);
16 }
17
18 [Fact]
19 public void BuildPalette_NoMatch_OneHint_SelectedZero()
20 {
21 var plan = MelodyInterpreter.BuildPalette("zzz");
22 Assert.Single(plan.Lines);
23 var h = Assert.IsType<MelodyPaletteHint>(plan.Lines[0]);
24 Assert.Equal(MelodyInterpreter.NoMatchHintTitle, h.Title);
25 Assert.Equal(0, plan.SelectedIndex);
26 }
27
28 [Fact]
29 public void BuildPalette_Prefix_gs_Matches_gs_And_gsu_SelectedZero()
30 {
31 var plan = MelodyInterpreter.BuildPalette("gs");
32 Assert.Equal(2, plan.Lines.Count);
33 Assert.All(plan.Lines, l => Assert.IsType<MelodyPaletteCommand>(l));
34 Assert.Equal(0, plan.SelectedIndex);
35 }
36
37 [Fact]
38 public void BuildPalette_UnambiguousPrefix_br_OneCommand_SelectedZero()
39 {
40 var plan = MelodyInterpreter.BuildPalette("br");
41 Assert.Single(plan.Lines);
42 var c = Assert.IsType<MelodyPaletteCommand>(plan.Lines[0]);
43 Assert.Equal("br", c.Alias);
44 Assert.Equal(IdeCommands.BuildSolutionUi, c.CommandId);
45 Assert.Equal(0, plan.SelectedIndex);
46 }
47}
48
View only · write via MCP/CIDE