-
Notifications
You must be signed in to change notification settings - Fork 526
Expand file tree
/
Copy pathKeyProviderTests.cs
More file actions
146 lines (118 loc) · 4.91 KB
/
KeyProviderTests.cs
File metadata and controls
146 lines (118 loc) · 4.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
using System.Diagnostics;
using System.Linq;
using System.Reactive.Linq;
using System.Threading.Tasks;
using Carnac.Logic;
using Carnac.Logic.KeyMonitor;
using Carnac.Logic.Models;
using Microsoft.Win32;
using NSubstitute;
using SettingsProviderNet;
using Xunit;
namespace Carnac.Tests
{
public class KeyProviderTests
{
readonly IPasswordModeService passwordModeService;
readonly IDesktopLockEventService desktopLockEventService;
readonly ISettingsProvider settingsProvider;
public KeyProviderTests()
{
passwordModeService = new PasswordModeService();
desktopLockEventService = Substitute.For<IDesktopLockEventService>();
desktopLockEventService.GetSessionSwitchStream().Returns(Observable.Never<SessionSwitchEventArgs>());
settingsProvider = Substitute.For<ISettingsProvider>();
}
[Fact]
public async Task ctrlshiftl_is_processed_correctly()
{
// arrange
var player = KeyStreams.CtrlShiftL();
var provider = new KeyProvider(player, passwordModeService, desktopLockEventService, settingsProvider);
// act
var processedKeys = await provider.GetKeyStream().ToList();
// assert
Assert.Equal(new[] { "Ctrl", "Shift", "L" }, processedKeys.Single().Input);
}
[Fact]
public async Task shift_is_not_outputted_when_is_being_used_as_a_modifier_key()
{
// arrange
var player = KeyStreams.ShiftL();
var provider = new KeyProvider(player, passwordModeService, desktopLockEventService, settingsProvider);
// act
var processedKeys = await provider.GetKeyStream().ToList();
// assert
Assert.Equal(new[] { "L" }, processedKeys.Single().Input);
}
[Fact]
public async Task key_without_shift_is_lowercase()
{
// arrange
var player = KeyStreams.LetterL();
var provider = new KeyProvider(player, passwordModeService, desktopLockEventService, settingsProvider);
// act
var processedKeys = await provider.GetKeyStream().ToList();
// assert
Assert.Equal(new[] { "l" }, processedKeys.Single().Input);
}
[Fact]
public async Task verify_number()
{
// arrange
var player = KeyStreams.Number1();
var provider = new KeyProvider(player, passwordModeService, desktopLockEventService, settingsProvider);
// act
var processedKeys = await provider.GetKeyStream().ToList();
// assert
Assert.Equal(new[] { "1" }, processedKeys.Single().Input);
}
[Fact]
public async Task verify_shift_number()
{
// arrange
var player = KeyStreams.ExclaimationMark();
var provider = new KeyProvider(player, passwordModeService, desktopLockEventService, settingsProvider);
// act
var processedKeys = await provider.GetKeyStream().ToList();
// assert
Assert.Equal(new[] { "!" }, processedKeys.Single().Input);
}
[Fact]
public async Task keyprovider_detects_windows_key_presses()
{
// arrange
var player = KeyStreams.WinkeyE();
var provider = new KeyProvider(player, passwordModeService, desktopLockEventService, settingsProvider);
// act
var processedKeys = await provider.GetKeyStream().ToList();
// assert
Assert.Equal(new[] { "Win", "e" }, processedKeys.Single().Input);
}
[Fact]
public async Task output_with_matching_filter()
{
// arrange
string currentProcessName = AssociatedProcessUtilities.GetAssociatedProcess().ProcessName;
settingsProvider.GetSettings<PopupSettings>().Returns(new PopupSettings() { ProcessFilterExpression = currentProcessName });
var player = KeyStreams.LetterL();
var provider = new KeyProvider(player, passwordModeService, desktopLockEventService, settingsProvider);
// act
var processedKeys = await provider.GetKeyStream().ToList();
// assert
Assert.Equal(new[] { "l" }, processedKeys.Single().Input);
}
[Fact]
public async Task no_output_with_no_match_filter()
{
// arrange
settingsProvider.GetSettings<PopupSettings>().Returns(new PopupSettings() { ProcessFilterExpression = "notepad" });
var player = KeyStreams.LetterL();
var provider = new KeyProvider(player, passwordModeService, desktopLockEventService, settingsProvider);
// act
var processedKeys = await provider.GetKeyStream().ToList();
// assert
Assert.Equal(0, processedKeys.Count);
}
}
}