Forge
csharpdeeb25a2
1#nullable enable
2using CascadeIDE.Features.Chat;
3using Xunit;
4
5namespace CascadeIDE.Tests;
6
7public sealed class SlashSemanticCatalogIndexTests
8{
9 [Fact]
10 public void GetSuggestions_Root_UsesSemanticDomainsAndElisionStarters()
11 {
12 var suggestions = ChatSlashAutocomplete.GetSuggestions("/");
13 var titles = suggestions.Select(s => s.ListTitle).ToHashSet(StringComparer.OrdinalIgnoreCase);
14
15 Assert.Contains("intercom", titles);
16 Assert.Contains("build", titles);
17 Assert.Contains("git", titles);
18 Assert.DoesNotContain("run", titles);
19 }
20
21 [Fact]
22 public void GetSuggestions_BuildSpace_ListsIntentsNotObjects()
23 {
24 var suggestions = ChatSlashAutocomplete.GetSuggestions("/build ");
25 Assert.All(suggestions, s => Assert.DoesNotContain("build", s.ListTitle, StringComparison.OrdinalIgnoreCase));
26 Assert.Contains(suggestions, s => s.ListTitle == "run");
27 Assert.Contains(suggestions, s => s.ListTitle == "ui");
28 }
29
30 [Fact]
31 public void GetSuggestions_IntercomSpace_ListsObjectsNotIntents()
32 {
33 var suggestions = ChatSlashAutocomplete.GetSuggestions("/intercom ");
34 Assert.Contains(suggestions, s => s.ListTitle == "topic");
35 Assert.Contains(suggestions, s => s.ListTitle == "server");
36 Assert.DoesNotContain(suggestions, s => s.ListTitle is "list" or "rename");
37 }
38}
39
View only · write via MCP/CIDE