Forge
csharpdeeb25a2
1using System.Collections.ObjectModel;
2using CascadeIDE.Features.Chat;
3using CascadeIDE.Models;
4using Xunit;
5
6namespace CascadeIDE.Tests;
7
8public sealed class WorkspaceFileSlashCompletionProviderTests
9{
10 [Fact]
11 public void GetMatches_filters_by_prefix()
12 {
13 var src = SolutionItem.CreateFolder("src");
14 src.Children.Add(SolutionItem.CreateFile("Foo.cs", @"D:\ws\src\Foo.cs"));
15 src.Children.Add(SolutionItem.CreateFile("Bar.cs", @"D:\ws\src\Bar.cs"));
16 var root = new ObservableCollection<SolutionItem> { src };
17
18 var provider = new WorkspaceFileSlashCompletionProvider(
19 () => null,
20 () => root,
21 () => @"D:\ws");
22
23 var all = provider.GetMatches("", 30);
24 Assert.True(all.Count >= 2);
25
26 var filtered = provider.GetMatches("src/F", 30);
27 Assert.Contains(filtered, m => m.InsertPath.Contains("Foo", StringComparison.OrdinalIgnoreCase));
28 Assert.DoesNotContain(filtered, m => m.InsertPath.Contains("Bar.cs", StringComparison.OrdinalIgnoreCase));
29 }
30}
31
View only · write via MCP/CIDE