csharpdeeb25a2 | 1 | using System.Collections.ObjectModel; |
| 2 | using CascadeIDE.Features.Chat; |
| 3 | using CascadeIDE.Models; |
| 4 | using Xunit; |
| 5 | |
| 6 | namespace CascadeIDE.Tests; |
| 7 | |
| 8 | public 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