File: System\Windows\Forms\ToolStripComboBox.ToolStripComboBoxControl.ToolStripComboBoxFlatComboAdapterTests.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 ToolStripComboBox_ToolStripComboBoxFlatComboAdapterTests : IDisposable
{
    private readonly ToolStripComboBox.ToolStripComboBoxControl _comboBox;
    private readonly ToolStripComboBox.ToolStripComboBoxControl.ToolStripComboBoxFlatComboAdapter _adapter;
 
    public void Dispose() => _comboBox.Dispose();
 
    public ToolStripComboBox_ToolStripComboBoxFlatComboAdapterTests()
    {
        _comboBox = new();
        _adapter = new(_comboBox);
    }
 
    [WinFormsFact]
    public void ToolStripComboBoxFlatComboAdapter_Ctor_InitializesCorrectly()
    {
        _adapter.Should().NotBeNull();
    }
 
    [WinFormsFact]
    public void UseBaseAdapter_ReturnsTrue_ForToolStripComboBoxControl()
    {
        using ToolStripComboBox.ToolStripComboBoxControl comboBox = new();
        bool result = (bool)typeof(ToolStripComboBox.ToolStripComboBoxControl.ToolStripComboBoxFlatComboAdapter)
            .TestAccessor().Dynamic.UseBaseAdapter(comboBox);
 
        result.Should().BeTrue();
    }
 
    [WinFormsFact]
    public void GetColorTable_ReturnsExpected()
    {
        var colorTable = (ProfessionalColorTable)_adapter.TestAccessor().Dynamic.GetColorTable(_comboBox);
 
        colorTable.Should().NotBeNull();
        colorTable.Should().BeOfType<ProfessionalColorTable>();
    }
 
    [WinFormsTheory]
    [InlineData(true, KnownColor.Window)]
    [InlineData(false, KnownColor.ControlDark)]
    public void GetOuterBorderColor_ReturnsExpected(bool enabled, KnownColor expectedColor)
    {
        _comboBox.Enabled = enabled;
 
        Color result = (Color)_adapter.TestAccessor().Dynamic.GetOuterBorderColor(_comboBox);
 
        result.Should().Be(Color.FromKnownColor(expectedColor));
    }
 
    [WinFormsTheory]
    [InlineData(true, true, KnownColor.ControlDark)]
    [InlineData(true, false, KnownColor.Window)]
    [InlineData(false, true, KnownColor.ControlDark)]
    [InlineData(false, false, KnownColor.ControlDark)]
    public void GetPopupOuterBorderColor_ReturnsExpected(bool enabled, bool focused, KnownColor expectedColor)
    {
        _comboBox.Enabled = enabled;
 
        Color result = (Color)_adapter.TestAccessor().Dynamic.GetPopupOuterBorderColor(_comboBox, focused);
 
        result.Should().Be(Color.FromKnownColor(expectedColor));
    }
 
    [WinFormsFact]
    public void DrawFlatComboDropDown_DrawsCorrectly()
    {
        using Bitmap bitmap = new(100, 100);
        using Graphics graphics = Graphics.FromImage(bitmap);
        Rectangle dropDownRect = new(0, 0, 100, 100);
 
        _adapter.TestAccessor().Dynamic.DrawFlatComboDropDown(_comboBox, graphics, dropDownRect);
 
        bitmap.GetPixel(50, 50).Should().NotBe(Color.Empty);
    }
}