File: System\Windows\Forms\ListViewItemStateImageIndexConverterTests.cs
Web Access
Project: src\src\test\unit\System.Windows.Forms\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.ComponentModel;
using System.Drawing;
using static System.ComponentModel.TypeConverter;
 
namespace System.Windows.Forms.Tests;
 
// NB: doesn't require thread affinity
public class ListViewItemStateImageIndexConverterTests
{
    [Fact]
    public void ListViewItemStateImageIndexConverter_IncludeNoneAsStandardValue_ReturnsFalse()
    {
        Assert.False(new ListViewItemStateImageIndexConverter().TestAccessor().Dynamic.IncludeNoneAsStandardValue);
    }
 
    [Fact]
    public void ListViewItemStateImageIndexConverter_GetStandardValues_Null_Context_ReturnsExpected()
    {
        ListViewItemStateImageIndexConverter converter = new();
 
        StandardValuesCollection result = converter.GetStandardValues(context: null);
 
        Assert.Empty(result);
    }
 
    [Fact]
    public void GetStandardValues_ContextWithoutListView_ReturnsEmpty()
    {
        object instance = new();
        ITypeDescriptorContext context = new TypeDescriptorContextStub(instance);
        ListViewItemStateImageIndexConverter converter = new();
 
        StandardValuesCollection result = converter.GetStandardValues(context);
 
        result.Cast<object>().Should().BeEmpty();
    }
 
    [Fact]
    public void GetStandardValues_WithListViewWithoutStateImageList_ReturnsEmpty()
    {
        using ListView listView = new();
        ListViewItem item = listView.Items.Add("test");
 
        ITypeDescriptorContext context = new TypeDescriptorContextStub(item);
        ListViewItemStateImageIndexConverter converter = new();
 
        StandardValuesCollection result = converter.GetStandardValues(context);
 
        result.Cast<object>().Should().BeEmpty();
    }
 
    [WinFormsFact]
    public void GetStandardValues_WithStateImageList_ReturnsCorrectIndexes()
    {
        using ListView listView = new();
        using ImageList imageList = new();
        using Bitmap bmp1 = new(16, 16);
        using Bitmap bmp2 = new(16, 16);
        imageList.Images.Add(bmp1);
        imageList.Images.Add(bmp2);
        listView.StateImageList = imageList;
 
        ListViewItem item = listView.Items.Add("test");
 
        ITypeDescriptorContext context = new TypeDescriptorContextStub(item);
        ListViewItemStateImageIndexConverter converter = new();
 
        StandardValuesCollection result = converter.GetStandardValues(context);
 
        result.Cast<object>().Should().Equal(0, 1);
    }
 
    // Minimal stub for ITypeDescriptorContext
    private sealed class TypeDescriptorContextStub : ITypeDescriptorContext
    {
        public TypeDescriptorContextStub(object instance) => Instance = instance;
        public object Instance { get; }
        public IContainer? Container => null;
        public object? GetService(Type serviceType) => null;
        public void OnComponentChanged() { }
        public bool OnComponentChanging() => false;
        public PropertyDescriptor? PropertyDescriptor => null;
    }
}