From c200807f5348cae872b38fe7c442cb0092783ef1 Mon Sep 17 00:00:00 2001 From: "Olina Zhang (BEYONDSOFT CONSULTING INC)" Date: Wed, 24 Sep 2025 06:28:18 +0000 Subject: [PATCH 1/2] Add unit tests for ToolStripKeyboardHandlingService.cs file --- .../ToolStripKeyboardHandlingServiceTests.cs | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ToolStripKeyboardHandlingServiceTests.cs diff --git a/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ToolStripKeyboardHandlingServiceTests.cs b/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ToolStripKeyboardHandlingServiceTests.cs new file mode 100644 index 00000000000..d3aff820da5 --- /dev/null +++ b/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ToolStripKeyboardHandlingServiceTests.cs @@ -0,0 +1,114 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.ComponentModel.Design; +using Moq; + +namespace System.Windows.Forms.Design.Tests; + +public class ToolStripKeyboardHandlingServiceTests +{ + private readonly Mock _selectionServiceMock; + private readonly Mock _designerHostMock; + private readonly Mock _componentChangeServiceMock; + private readonly DummyServiceProvider _provider; + + public ToolStripKeyboardHandlingServiceTests() + { + _selectionServiceMock = new(); + _designerHostMock = new(); + _componentChangeServiceMock = new(); + + _provider = new(type => + type == typeof(ISelectionService) ? _selectionServiceMock.Object : + type == typeof(IDesignerHost) ? _designerHostMock.Object : + type == typeof(IComponentChangeService) ? _componentChangeServiceMock.Object : + null); + + _designerHostMock.Setup(h => h.GetService(typeof(IComponentChangeService))).Returns(_componentChangeServiceMock.Object); + } + + private class DummyServiceProvider : IServiceProvider + { + private readonly Func _serviceResolver; + + public DummyServiceProvider(Func serviceResolver) + { + _serviceResolver = serviceResolver; + } + + public object? GetService(Type serviceType) => _serviceResolver(serviceType); + } + + [Fact] + public void Ctor_InitializesAndSubscribesToEvents() + { + ToolStripKeyboardHandlingService service = new(_provider); + + _selectionServiceMock.VerifyAdd(s => s.SelectionChanging += It.IsAny(), Times.Once()); + _selectionServiceMock.VerifyAdd(s => s.SelectionChanged += It.IsAny(), Times.Once()); + _componentChangeServiceMock.VerifyAdd(s => s.ComponentRemoved += It.IsAny(), Times.Once()); + } + + [Fact] + public void AddCommands_DoesNotThrow_WhenNoMenuService() + { + ToolStripKeyboardHandlingService service = new(_provider); + service.AddCommands(); + } + + [Fact] + public void RestoreCommands_DoesNotThrow_WhenNoMenuService() + { + ToolStripKeyboardHandlingService service = new(_provider); + service.RestoreCommands(); + } + + [Fact] + public void RemoveCommands_DoesNotThrow_WhenNoMenuService() + { + ToolStripKeyboardHandlingService service = new(_provider); + service.RemoveCommands(); + } + + [Fact] + public void OnContextMenu_ReturnsTrue_WhenTemplateNodeActive() + { + ToolStripKeyboardHandlingService service = new(_provider) + { + TemplateNodeActive = true + }; + service.OnContextMenu(10, 10).Should().BeTrue(); + } + + [Fact] + public void OnContextMenu_ReturnsFalse_WhenNotTemplateNodeActive() + { + ToolStripKeyboardHandlingService service = new(_provider) + { + TemplateNodeActive = false + }; + service.OnContextMenu(10, 10).Should().BeFalse(); + } + + [Fact] + public void ProcessKeySelect_DoesNotThrow_WhenNoSelectionService() + { + ToolStripKeyboardHandlingService service = new(_provider); + service.ProcessKeySelect(false); + } + + [Fact] + public void ProcessUpDown_DoesNotThrow_WhenNoSelectionService() + { + ToolStripKeyboardHandlingService service = new(_provider); + service.ProcessUpDown(false); + } + + [Fact] + public void RotateTab_DoesNotThrow_WhenNoSelectionService() + { + ToolStripKeyboardHandlingService service = new(_provider); + service.RotateTab(false); + } +} From 2c846513fc07798ac32c622d3678b2945cb9726d Mon Sep 17 00:00:00 2001 From: "Olina Zhang (BEYONDSOFT CONSULTING INC)" Date: Sun, 28 Sep 2025 09:54:00 +0000 Subject: [PATCH 2/2] handle feedback --- .../ToolStripKeyboardHandlingServiceTests.cs | 69 +++++++++---------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ToolStripKeyboardHandlingServiceTests.cs b/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ToolStripKeyboardHandlingServiceTests.cs index d3aff820da5..e08c6840dd0 100644 --- a/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ToolStripKeyboardHandlingServiceTests.cs +++ b/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/ToolStripKeyboardHandlingServiceTests.cs @@ -12,6 +12,7 @@ public class ToolStripKeyboardHandlingServiceTests private readonly Mock _designerHostMock; private readonly Mock _componentChangeServiceMock; private readonly DummyServiceProvider _provider; + private readonly ToolStripKeyboardHandlingService _service; public ToolStripKeyboardHandlingServiceTests() { @@ -20,12 +21,14 @@ public ToolStripKeyboardHandlingServiceTests() _componentChangeServiceMock = new(); _provider = new(type => - type == typeof(ISelectionService) ? _selectionServiceMock.Object : - type == typeof(IDesignerHost) ? _designerHostMock.Object : - type == typeof(IComponentChangeService) ? _componentChangeServiceMock.Object : - null); + type == typeof(ISelectionService) ? _selectionServiceMock.Object + : type == typeof(IDesignerHost) ? _designerHostMock.Object + : type == typeof(IComponentChangeService) ? _componentChangeServiceMock.Object + : null); _designerHostMock.Setup(h => h.GetService(typeof(IComponentChangeService))).Returns(_componentChangeServiceMock.Object); + + _service = new(_provider); } private class DummyServiceProvider : IServiceProvider @@ -43,72 +46,64 @@ public DummyServiceProvider(Func serviceResolver) [Fact] public void Ctor_InitializesAndSubscribesToEvents() { - ToolStripKeyboardHandlingService service = new(_provider); - _selectionServiceMock.VerifyAdd(s => s.SelectionChanging += It.IsAny(), Times.Once()); _selectionServiceMock.VerifyAdd(s => s.SelectionChanged += It.IsAny(), Times.Once()); _componentChangeServiceMock.VerifyAdd(s => s.ComponentRemoved += It.IsAny(), Times.Once()); } [Fact] - public void AddCommands_DoesNotThrow_WhenNoMenuService() - { - ToolStripKeyboardHandlingService service = new(_provider); - service.AddCommands(); - } + public void AddCommands_DoesNotThrow_WhenNoMenuService() => + ((Action)_service.AddCommands).Should().NotThrow(); [Fact] - public void RestoreCommands_DoesNotThrow_WhenNoMenuService() - { - ToolStripKeyboardHandlingService service = new(_provider); - service.RestoreCommands(); - } + public void RestoreCommands_DoesNotThrow_WhenNoMenuService() => + ((Action)_service.RestoreCommands).Should().NotThrow(); [Fact] - public void RemoveCommands_DoesNotThrow_WhenNoMenuService() - { - ToolStripKeyboardHandlingService service = new(_provider); - service.RemoveCommands(); - } + public void RemoveCommands_DoesNotThrow_WhenNoMenuService() => + ((Action)_service.RemoveCommands).Should().NotThrow(); [Fact] public void OnContextMenu_ReturnsTrue_WhenTemplateNodeActive() { - ToolStripKeyboardHandlingService service = new(_provider) - { - TemplateNodeActive = true - }; - service.OnContextMenu(10, 10).Should().BeTrue(); + _service.TemplateNodeActive = true; + + bool result = _service.OnContextMenu(10, 10); + + result.Should().BeTrue(); } [Fact] public void OnContextMenu_ReturnsFalse_WhenNotTemplateNodeActive() { - ToolStripKeyboardHandlingService service = new(_provider) - { - TemplateNodeActive = false - }; - service.OnContextMenu(10, 10).Should().BeFalse(); + _service.TemplateNodeActive = false; + + bool result = _service.OnContextMenu(10, 10); + + result.Should().BeFalse(); } [Fact] public void ProcessKeySelect_DoesNotThrow_WhenNoSelectionService() { - ToolStripKeyboardHandlingService service = new(_provider); - service.ProcessKeySelect(false); + Action action = () => _service.ProcessKeySelect(false); + + action.Should().NotThrow(); } [Fact] public void ProcessUpDown_DoesNotThrow_WhenNoSelectionService() { - ToolStripKeyboardHandlingService service = new(_provider); - service.ProcessUpDown(false); + Action action = () => _service.ProcessUpDown(false); + + action.Should().NotThrow(); } [Fact] public void RotateTab_DoesNotThrow_WhenNoSelectionService() { - ToolStripKeyboardHandlingService service = new(_provider); - service.RotateTab(false); + Action action = () => _service.RotateTab(false); + + action.Should().NotThrow(); } }