microsoft/TypeAgent

Public

mirrored fromhttps://github.com/microsoft/TypeAgentAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/cache-regex-for-string-part

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

dotnet/autoShell.Tests/HandlerRegistrationTests.cs

96lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using autoShell.Handlers;
5using autoShell.Handlers.Settings;
6
7namespace autoShell.Tests;
8
9/// <summary>
10/// Verifies structural invariants across all registered handlers (e.g., no duplicate commands).
11/// </summary>
12public class HandlerRegistrationTests
13{
14 private readonly List<ICommandHandler> _handlers;
15
16 public HandlerRegistrationTests()
17 {
18 var audioMock = new Moq.Mock<Services.IAudioService>();
19 var registryMock = new Moq.Mock<Services.IRegistryService>();
20 var systemParamsMock = new Moq.Mock<Services.ISystemParametersService>();
21 var processMock = new Moq.Mock<Services.IProcessService>();
22 var appRegistryMock = new Moq.Mock<IAppRegistry>();
23 var debuggerMock = new Moq.Mock<Services.IDebuggerService>();
24 var brightnessMock = new Moq.Mock<Services.IBrightnessService>();
25 var displayMock = new Moq.Mock<Services.IDisplayService>();
26 var windowMock = new Moq.Mock<Services.IWindowService>();
27 var networkMock = new Moq.Mock<Services.INetworkService>();
28 var virtualDesktopMock = new Moq.Mock<Services.IVirtualDesktopService>();
29 var loggerMock = new Moq.Mock<Logging.ILogger>();
30
31 _handlers =
32 [
33 new AudioCommandHandler(audioMock.Object),
34 new AppCommandHandler(appRegistryMock.Object, processMock.Object, windowMock.Object, loggerMock.Object),
35 new WindowCommandHandler(appRegistryMock.Object, windowMock.Object),
36 new ThemeCommandHandler(registryMock.Object, processMock.Object, systemParamsMock.Object),
37 new VirtualDesktopCommandHandler(appRegistryMock.Object, windowMock.Object, virtualDesktopMock.Object, loggerMock.Object),
38 new NetworkCommandHandler(networkMock.Object, processMock.Object, loggerMock.Object),
39 new DisplayCommandHandler(displayMock.Object, loggerMock.Object),
40 new TaskbarSettingsHandler(registryMock.Object),
41 new DisplaySettingsHandler(registryMock.Object, processMock.Object, brightnessMock.Object, loggerMock.Object),
42 new PersonalizationSettingsHandler(registryMock.Object, processMock.Object),
43 new MouseSettingsHandler(systemParamsMock.Object, processMock.Object, loggerMock.Object),
44 new AccessibilitySettingsHandler(registryMock.Object, processMock.Object),
45 new PrivacySettingsHandler(registryMock.Object),
46 new PowerSettingsHandler(registryMock.Object, processMock.Object),
47 new FileExplorerSettingsHandler(registryMock.Object),
48 new SystemSettingsHandler(registryMock.Object, processMock.Object, loggerMock.Object),
49 new SystemCommandHandler(processMock.Object, debuggerMock.Object),
50 ];
51 }
52
53 /// <summary>
54 /// Verifies that no handler declares the same command key more than once.
55 /// </summary>
56 [Fact]
57 public void AllHandlers_HaveNoDuplicateCommandsWithinHandler()
58 {
59 foreach (var handler in _handlers)
60 {
61 var commands = handler.SupportedCommands.ToList();
62 var duplicates = commands.GroupBy(c => c).Where(g => g.Count() > 1).Select(g => g.Key).ToList();
63
64 Assert.Empty(duplicates);
65 }
66 }
67
68 /// <summary>
69 /// Verifies that no command key is claimed by more than one handler.
70 /// </summary>
71 [Fact]
72 public void AllHandlers_HaveNoDuplicateCommandsAcrossHandlers()
73 {
74 var seen = new Dictionary<string, string>();
75 var duplicates = new List<string>();
76
77 foreach (var handler in _handlers)
78 {
79 string handlerName = handler.GetType().Name;
80 foreach (string cmd in handler.SupportedCommands)
81 {
82 if (seen.TryGetValue(cmd, out string? existingHandler))
83 {
84 duplicates.Add($"'{cmd}' in both {existingHandler} and {handlerName}");
85 }
86 else
87 {
88 seen[cmd] = handlerName;
89 }
90 }
91 }
92
93 Assert.Empty(duplicates);
94 }
95
96}