File: System\Windows\Forms\ToolStripTests.Rendering.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.
 
using System.Drawing;
using System.Windows.Forms.Metafiles;
 
namespace System.Windows.Forms.Tests;
 
public partial class ToolStripTests
{
    [WinFormsFact]
    public void ToolStrip_RendersBackgroundCorrectly()
    {
        using Form form = new();
        using ToolStrip toolStrip = new ToolStrip
        {
            BackColor = Color.Blue,
            Size = new Size(200, 38)
        };
        form.Controls.Add(toolStrip);
 
        // Force the handle creation
        Assert.NotEqual(IntPtr.Zero, form.Handle);
        Assert.NotEqual(IntPtr.Zero, toolStrip.Handle);
 
        using EmfScope emf = new();
        DeviceContextState state = new(emf);
 
        Rectangle bounds = toolStrip.Bounds;
        using PaintEventArgs e = new(emf, bounds);
        toolStrip.TestAccessor().Dynamic.OnPaintBackground(e);
 
        Rectangle bitBltBounds = new(bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1);
 
        RECT[] expectedRects = [
            new(0, 0, 1, 1),
            new(bounds.Width - 3, 0, bounds.Width, 1),
            new(bounds.Width - 1, 1, bounds.Width, 3),
            new(0, bounds.Height - 2, 1, bounds.Height - 1),
            new(bounds.Width - 1, bounds.Height - 2, bounds.Width, bounds.Height - 1),
            new(0, bounds.Height - 1, 2, bounds.Height),
            new(bounds.Width - 2, bounds.Height - 1, bounds.Width, bounds.Height)
        ];
 
        emf.Validate(
            state,
            Validate.BitBltValidator(
                bitBltBounds,
                State.BrushColor(Color.Blue)),
            Validate.BitBltValidator(
                bitBltBounds,
                State.BrushColor(form.BackColor),
                State.Clipping(expectedRects)));
 
        string details = emf.RecordsToString();
    }
}