Skip to content

Commit

Permalink
Add code coverage for DataGridViewColumnConverter (#12766)
Browse files Browse the repository at this point in the history
related #10453

Proposed changes
Add unit tests for DataGridViewColumnConverter.cs to test its methods
  • Loading branch information
Zheng-Li01 authored Jan 16, 2025
1 parent 3b94cf3 commit 3b8e1a6
Showing 1 changed file with 88 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
// 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.ComponentModel.Design.Serialization;
using System.Globalization;

namespace System.Windows.Forms.Tests;

public class DataGridViewColumnConverterTests : IDisposable
{
private readonly DataGridViewColumnConverter _converter = new();
private readonly DataGridViewColumn _column = new();

public void Dispose() => _column.Dispose();

[Theory]
[InlineData(typeof(InstanceDescriptor))]
[InlineData(typeof(string))]
public void CanConvertTo_ReturnsExpectedResult(Type destinationType) =>
_converter.CanConvertTo(context: null, destinationType).Should().BeTrue();

[Fact]
public void ConvertTo_InstanceDescriptorWithoutCellType_ReturnsInstanceDescriptor() =>
AssertInstanceDescriptor(_column);

[Fact]
public void ConvertTo_InstanceDescriptorWithHeaderText_ReturnsInstanceDescriptor()
{
_column.HeaderText = "Test Header";
AssertInstanceDescriptor(_column);
}

[Fact]
public void ConvertTo_InstanceDescriptorWithToolTipText_ReturnsInstanceDescriptor()
{
_column.ToolTipText = "Test ToolTip";
AssertInstanceDescriptor(_column);
}

[Fact]
public void ConvertTo_NonInstanceDescriptorWithDataPropertyName_ReturnsBaseResult()
{
_column.DataPropertyName = "TestDataProperty";
AssertBaseResult(_column);
}

[Fact]
public void ConvertTo_NonInstanceDescriptor_ReturnsBaseResult() =>
AssertBaseResult(_column);

[Fact]
public void ConvertTo_NullDestinationType_ThrowsArgumentNullException()
{
Action action = () => _converter.ConvertTo(context: null, culture: CultureInfo.InvariantCulture, value: _column, destinationType: null!);
action.Should().Throw<ArgumentNullException>();
}

[Fact]
public void ConvertTo_InvalidDestinationType_ThrowsNotSupportedException()
{
Action action = () => _converter.ConvertTo(context: null, culture: CultureInfo.InvariantCulture, value: _column, destinationType: typeof(int));
action.Should().Throw<NotSupportedException>();
}

[Fact]
public void ConvertTo_WithCellTypeNotNull_ReturnsInstanceDescriptor()
{
using DataGridViewTextBoxCell cellTemplate = new();
using DataGridViewColumn column = new(cellTemplate);

var descriptor = _converter.ConvertTo(context: null, culture: CultureInfo.InvariantCulture, value: column, destinationType: typeof(InstanceDescriptor)) as InstanceDescriptor;

descriptor.Should().NotBeNull();
}

private void AssertInstanceDescriptor(DataGridViewColumn column)
{
var descriptor = _converter.ConvertTo(context: null, culture: CultureInfo.InvariantCulture, value: column, destinationType: typeof(InstanceDescriptor)) as InstanceDescriptor;
descriptor.Should().NotBeNull();
}

private void AssertBaseResult(DataGridViewColumn column)
{
_converter.ConvertTo(context: null, culture: CultureInfo.InvariantCulture, value: column, destinationType: typeof(string)).Should().Be(column.ToString());
}
}

0 comments on commit 3b8e1a6

Please sign in to comment.