Forge
csharpdeeb25a2
1using Avalonia.Input;
2using CascadeIDE.Features.Chat;
3using Xunit;
4
5namespace CascadeIDE.Tests;
6
7public sealed class ChatSendKeyMatcherTests
8{
9 [Theory]
10 [InlineData("Enter", Key.Enter, KeyModifiers.None, true)]
11 [InlineData("Enter", Key.Enter, KeyModifiers.Control, false)]
12 [InlineData("Ctrl+Enter", Key.Enter, KeyModifiers.Control, true)]
13 [InlineData("Shift+Enter", Key.Enter, KeyModifiers.Shift, true)]
14 public void Matches_respects_send_message_key_setting(string setting, Key key, KeyModifiers mods, bool expected)
15 {
16 var e = new KeyEventArgs { Key = key, KeyModifiers = mods };
17 Assert.Equal(expected, ChatSendKeyMatcher.Matches(e, setting));
18 }
19
20 [Fact]
21 public void Matches_CtrlPlusEnter_also_accepts_physical_return_key()
22 {
23 var e = new KeyEventArgs { Key = Key.Return, KeyModifiers = KeyModifiers.Control };
24 Assert.True(ChatSendKeyMatcher.Matches(e, "Ctrl+Enter"));
25 }
26
27 [Fact]
28 public void IsBareEnterForSlashCommit_true_only_for_plain_enter()
29 {
30 Assert.True(ChatSendKeyMatcher.IsBareEnterForSlashCommit(new KeyEventArgs { Key = Key.Enter, KeyModifiers = KeyModifiers.None }));
31 Assert.True(ChatSendKeyMatcher.IsBareEnterForSlashCommit(new KeyEventArgs { Key = Key.Return, KeyModifiers = KeyModifiers.None }));
32 Assert.False(ChatSendKeyMatcher.IsBareEnterForSlashCommit(new KeyEventArgs { Key = Key.Enter, KeyModifiers = KeyModifiers.Control }));
33 Assert.False(ChatSendKeyMatcher.IsBareEnterForSlashCommit(new KeyEventArgs { Key = Key.Enter, KeyModifiers = KeyModifiers.Shift }));
34 }
35}
36
View only · write via MCP/CIDE