Skip to content

Commit

Permalink
Add unit tests for CommandSet (dotnet#12769)
Browse files Browse the repository at this point in the history
Related dotnet#10773

Proposed changes
Add unit test CommandSetTests.cs for public method of the CommandSet.
Enable nullability in CommandSetTests.
  • Loading branch information
MelonWang1 authored Jan 21, 2025
1 parent 0142080 commit 77ec5c9
Showing 1 changed file with 45 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#nullable enable

using Moq;
using System.ComponentModel;
using System.ComponentModel.Design;

namespace System.Windows.Forms.Design.Tests;

public class CommandSetTests
{
[Fact]
public void Dispose_DisposesResourcesCorrectly()
{
Mock<ISite> mockSite = new();
Mock<IEventHandlerService> mockEventHandlerService = new();
Mock<IDesignerHost> mockDesignerHost = new();
Mock<IMenuCommandService> mockMenuCommandService = new();
Mock<ISelectionService> mockSelectionService = new();
Mock<IDictionaryService> mockDictionaryService = new();

mockSite.Setup(s => s.GetService(typeof(IEventHandlerService))).Returns(mockEventHandlerService.Object);
mockSite.Setup(s => s.GetService(typeof(IDesignerHost))).Returns(mockDesignerHost.Object);
mockSite.Setup(s => s.GetService(typeof(IMenuCommandService))).Returns(mockMenuCommandService.Object);
mockSite.Setup(s => s.GetService(typeof(ISelectionService))).Returns(mockSelectionService.Object);
mockSite.Setup(s => s.GetService(typeof(IDictionaryService))).Returns(mockDictionaryService.Object);

dynamic accessor;
using (CommandSet commandSet = new(mockSite.Object))
{
accessor = commandSet.TestAccessor().Dynamic;
}

mockMenuCommandService.Verify(m => m.RemoveCommand(It.IsAny<MenuCommand>()), Times.AtLeastOnce);
mockEventHandlerService.VerifyRemove(e => e.EventHandlerChanged -= It.IsAny<EventHandler>(), Times.Once);
mockDesignerHost.VerifyRemove(h => h.Activated -= It.IsAny<EventHandler>(), Times.Once);
mockSelectionService.VerifyRemove(s => s.SelectionChanged -= It.IsAny<EventHandler>(), Times.Once);

((object)accessor.SelectionService).Should().BeNull();
((object)accessor.BehaviorService).Should().BeNull();
((object)accessor._menuService).Should().BeNull();
}
}

0 comments on commit 77ec5c9

Please sign in to comment.