File: System\Windows\Forms\ToolStripButtonTests.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 ToolStripButtonTests
{
    [WinFormsFact]
    public void ToolStripButton_RendersTextCorrectly()
    {
        using Form form = new();
        using ToolStrip toolStrip = new();
        using ToolStripButton toolStripButton = new()
        {
            Text = "Hello"
        };
        toolStrip.Items.Add(toolStripButton);
        form.Controls.Add(toolStrip);
 
        using EmfScope emf = new();
 
        DeviceContextState state = new(emf);
 
        Rectangle bounds = toolStripButton.Bounds;
 
        using PaintEventArgs e = new(emf, bounds);
        toolStripButton.TestAccessor().Dynamic.OnPaint(e);
 
        emf.Validate(
            state,
             Validate.TextOut("Hello"));
    }
 
    [WinFormsFact]
    public void ToolStripButton_RendersBackgroundCorrectly()
    {
        using Form form = new();
        using ToolStrip toolStrip = new();
        using ToolStripButton toolStripButton = new()
        {
            BackColor = Color.Blue,
        };
        toolStrip.Items.Add(toolStripButton);
        form.Controls.Add(toolStrip);
 
        using EmfScope emf = new();
        DeviceContextState state = new(emf);
        Rectangle bounds = toolStripButton.Bounds;
        using PaintEventArgs e = new(emf, bounds);
        toolStripButton.TestAccessor().Dynamic.OnPaint(e);
 
        emf.Validate(
           state,
           Validate.Polygon16(
                bounds: null,
                points: null,
                State.Brush(Color.Blue, BRUSH_STYLE.BS_SOLID)));
    }
 
    [WinFormsFact]
    public void ToolStripButton_Selected_RendersBackgroundCorrectly_HighContrast()
    {
        using Form form = new();
        using ToolStrip toolStrip = new();
        toolStrip.Renderer = new ToolStripSystemHighContrastRenderer();
        using ToolStripButton toolStripButton = new();
        toolStrip.Items.Add(toolStripButton);
        form.Controls.Add(toolStrip);
        toolStripButton.Select();
 
        using EmfScope emf = new();
        DeviceContextState state = new(emf);
        Rectangle bounds = toolStripButton.Bounds;
        using PaintEventArgs e = new(emf, bounds);
        toolStripButton.TestAccessor().Dynamic.OnPaint(e);
 
        emf.Validate(
           state,
           Validate.Polygon16(
                bounds: null,
                points: null,
                State.Brush(SystemColors.Highlight, BRUSH_STYLE.BS_SOLID)),
           Validate.Repeat(Validate.SkipType(ENHANCED_METAFILE_RECORD_TYPE.EMR_POLYPOLYGON16), 2));
    }
 
    [WinFormsFact]
    public void ToolStripButton_Indeterminate_RendersBackgroundCorrectly_HighContrast()
    {
        using Form form = new();
        using ToolStrip toolStrip = new();
        toolStrip.Renderer = new ToolStripSystemHighContrastRenderer();
        using ToolStripButton toolStripButton = new();
        toolStrip.Items.Add(toolStripButton);
        form.Controls.Add(toolStrip);
        toolStripButton.CheckState = CheckState.Indeterminate;
 
        using EmfScope emf = new();
        DeviceContextState state = new(emf);
        Rectangle bounds = toolStripButton.Bounds;
        using PaintEventArgs e = new(emf, bounds);
        toolStripButton.TestAccessor().Dynamic.OnPaint(e);
 
        emf.Validate(
           state,
           Validate.Polygon16(
                bounds: null,
                points: null,
                State.Brush(SystemColors.Highlight, BRUSH_STYLE.BS_SOLID)),
           Validate.SkipType(ENHANCED_METAFILE_RECORD_TYPE.EMR_POLYGON16));
    }
 
    [WinFormsFact]
    public void ToolStripButton_DropDownButton_Selected_RendersBackgroundCorrectly_HighContrast()
    {
        using Form form = new();
        using ToolStrip toolStrip = new();
        toolStrip.Renderer = new ToolStripSystemHighContrastRenderer();
        using ToolStripDropDownButton toolStripDropDownButton = new();
        toolStrip.Items.Add(toolStripDropDownButton);
        form.Controls.Add(toolStrip);
        toolStripDropDownButton.Select();
 
        using EmfScope emf = new();
        DeviceContextState state = new(emf);
        Rectangle bounds = toolStripDropDownButton.Bounds;
        using PaintEventArgs e = new(emf, bounds);
        toolStripDropDownButton.TestAccessor().Dynamic.OnPaint(e);
 
        emf.Validate(
           state,
           Validate.Polygon16(
                bounds: null,
                points: null,
                State.Brush(SystemColors.Highlight, BRUSH_STYLE.BS_SOLID)),
           Validate.Repeat(Validate.SkipType(ENHANCED_METAFILE_RECORD_TYPE.EMR_POLYPOLYGON16), 2),
           Validate.Repeat(Validate.SkipType(ENHANCED_METAFILE_RECORD_TYPE.EMR_POLYGON16), 1));
    }
 
    [WinFormsFact]
    public void ToolStripButton_SplitButton_Selected_RendersBackgroundCorrectly_HighContrast()
    {
        using Form form = new();
        using ToolStrip toolStrip = new();
        toolStrip.Renderer = new ToolStripSystemHighContrastRenderer();
        using ToolStripSplitButton toolStripDropDownButton = new();
        toolStrip.Items.Add(toolStripDropDownButton);
        form.Controls.Add(toolStrip);
        toolStripDropDownButton.Select();
 
        using EmfScope emf = new();
        DeviceContextState state = new(emf);
        Rectangle bounds = toolStripDropDownButton.Bounds;
        using PaintEventArgs e = new(emf, bounds);
        toolStripDropDownButton.TestAccessor().Dynamic.OnPaint(e);
 
        emf.Validate(
           state,
           Validate.Polygon16(
                bounds: null,
                points: null,
                State.Brush(SystemColors.Highlight, BRUSH_STYLE.BS_SOLID)),
           Validate.SkipType(ENHANCED_METAFILE_RECORD_TYPE.EMR_POLYGON16),
           Validate.Repeat(Validate.SkipType(ENHANCED_METAFILE_RECORD_TYPE.EMR_POLYPOLYGON16), 2),
           Validate.SkipType(ENHANCED_METAFILE_RECORD_TYPE.EMR_POLYGON16));
    }
 
    private class ToolStripSystemHighContrastRenderer : ToolStripSystemRenderer
    {
        internal override ToolStripRenderer RendererOverride => HighContrastRenderer;
    }
}