File: System\Windows\Forms\ToolStripPanel.ToolStripPanelControlCollection.XYComparerTests.cs
Web Access
Project: src\src\System.Windows.Forms\tests\UnitTests\System.Windows.Forms.Tests.csproj (System.Windows.Forms.Tests)
// 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 System.Drawing;
 
namespace System.Windows.Forms.Tests;
 
public class ToolStripPanel_ToolStripPanelControlCollection_XYComparerTests : IDisposable
{
    private readonly ToolStripPanel.ToolStripPanelControlCollection.XYComparer _comparer = new();
    private readonly Control _control1 = new() { Bounds = new Rectangle(10, 20, 100, 100) };
    private readonly Control _control2 = new() { Bounds = new Rectangle(10, 10, 100, 100) };
 
    public void Dispose()
    {
        _control1.Dispose();
        _control2.Dispose();
    }
 
    [WinFormsFact]
    public void Compare_FirstControlNull_ReturnsNegativeOne() =>
        _comparer.Compare(null, _control1).Should().Be(-1);
 
    [WinFormsFact]
    public void Compare_SecondControlNull_ReturnsOne() =>
        _comparer.Compare(_control1, null).Should().Be(1);
 
    [WinFormsFact]
    public void Compare_BothControlsNull_ReturnsZero() =>
        _comparer.Compare(null, null).Should().Be(0);
 
    [WinFormsTheory]
    [InlineData(10, 10, 20, 10, -1)]
    [InlineData(10, 10, 10, 20, -1)]
    [InlineData(10, 20, 10, 10, 1)]
    [InlineData(20, 10, 10, 10, 1)]
    public void Compare_VariousBounds_ReturnsExpected(int x1, int y1, int x2, int y2, int expected)
    {
        _control1.Bounds = new Rectangle(x1, y1, 100, 100);
        _control2.Bounds = new Rectangle(x2, y2, 100, 100);
 
        _comparer.Compare(_control1, _control2).Should().Be(expected);
    }
}