File: System\Windows\Forms\DataGridViewTextBoxColumnTests.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
 
namespace System.Windows.Forms;
 
public class DataGridViewTextBoxColumnTests : IDisposable
{
    private readonly DataGridView _dataGridView;
    private readonly DataGridViewTextBoxColumn _column;
 
    public DataGridViewTextBoxColumnTests()
    {
        _dataGridView = new();
        _column = new();
        _dataGridView.Columns.Add(_column);
    }
 
    public void Dispose()
    {
        _dataGridView.Dispose();
        _column.Dispose();
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_Constructor_Default()
    {
        _column.CellTemplate.Should().NotBeNull();
        _column.CellTemplate.Should().BeOfType<DataGridViewTextBoxCell>();
        _column.SortMode.Should().Be(DataGridViewColumnSortMode.Automatic);
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_CellTemplate_Set_GetReturnsExpected()
    {
        using DataGridViewTextBoxCell cell = new();
 
        _column.CellTemplate = cell;
 
        _column.CellTemplate.Should().Be(cell);
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_CellTemplate_SetInvalidType_ThrowsInvalidCastException()
    {
        using DataGridViewButtonCell cell = new();
 
        Action action = () => _column.CellTemplate = cell;
        action.Should().Throw<InvalidCastException>()
            .WithMessage(string.Format(SR.DataGridViewTypeColumn_WrongCellTemplateType, "System.Windows.Forms.DataGridViewTextBoxCell"));
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_MaxInputLength_GetSet()
    {
        _column.MaxInputLength = 100;
 
        _column.MaxInputLength.Should().Be(100);
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_MaxInputLength_SetUpdatesExistingCells()
    {
        _dataGridView.Rows.Add();
        _dataGridView.Rows.Add();
 
        _column.MaxInputLength = 100;
 
        foreach (DataGridViewRow row in _dataGridView.Rows)
        {
            ((DataGridViewTextBoxCell)row.Cells[0]).MaxInputLength.Should().Be(100);
        }
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_MaxInputLength_SetSameValue_DoesNotUpdateCells()
    {
        _dataGridView.Rows.Add();
        _dataGridView.Rows.Add();
 
        _column.MaxInputLength = 32767;
 
        foreach (DataGridViewRow row in _dataGridView.Rows)
        {
            ((DataGridViewTextBoxCell)row.Cells[0]).MaxInputLength.Should().Be(32767);
        }
    }
 
    [WinFormsFact]
    public static void DataGridViewTextBoxColumn_MaxInputLength_SetNull_DoesNotThrow()
    {
        DataGridView? dataGridView = null;
        DataGridViewTextBoxColumn column = new();
        dataGridView?.Columns.Add(column);
 
        Action action = () => column.MaxInputLength = 100;
        action.Should().NotThrow();
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_MaxInputLength_NullCellTemplate_ThrowsInvalidOperationException()
    {
        _column.CellTemplate = null;
        int maxInput = 0;
 
        Action action = () => maxInput = _column.MaxInputLength;
 
        action.Should().Throw<InvalidOperationException>();
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_SortMode_GetSet()
    {
        _column.SortMode = DataGridViewColumnSortMode.Programmatic;
 
        _column.SortMode.Should().Be(DataGridViewColumnSortMode.Programmatic);
    }
 
    [WinFormsFact]
    public void DataGridViewTextBoxColumn_ToString_ReturnsExpected()
    {
        _column.Name = "ColumnName";
        _column.Index = 1;
 
        _column.ToString().Should().Be("DataGridViewTextBoxColumn { Name=ColumnName, Index=1 }");
    }
}