File: System\Windows\Forms\NumericUpDownAccelerationCollectionTests.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.
 
namespace System.Windows.Forms.Tests;
 
public class NumericUpDownAccelerationCollectionTests
{
    [Fact]
    public void Clear_RemovesAllItems()
    {
        NumericUpDownAcceleration item1 = new(1, 1.0m);
        NumericUpDownAcceleration item2 = new(2, 2.0m);
        NumericUpDownAccelerationCollection collection = new();
        collection.Add(item1);
        collection.Add(item2);
 
        collection.Count.Should().Be(2);
 
        collection.Clear();
 
        collection.Count.Should().Be(0);
        collection.Contains(item1).Should().BeFalse();
        collection.Contains(item2).Should().BeFalse();
    }
 
    [Fact]
    public void Contains_ReturnsTrue_IfItemExists()
    {
        NumericUpDownAcceleration item = new(2, 1.5m);
        NumericUpDownAccelerationCollection collection = new();
        collection.Add(item);
 
        collection.Contains(item).Should().BeTrue();
    }
 
    [Fact]
    public void Contains_ReturnsFalse_IfItemDoesNotExist()
    {
        NumericUpDownAcceleration item = new(2, 1.5m);
        NumericUpDownAccelerationCollection collection = new();
 
        collection.Contains(item).Should().BeFalse();
    }
 
    [Fact]
    public void CopyTo_CopiesItemsToArray()
    {
        NumericUpDownAcceleration item1 = new(1, 1.0m);
        NumericUpDownAcceleration item2 = new(2, 2.0m);
        NumericUpDownAccelerationCollection collection = new();
        collection.Add(item1);
        collection.Add(item2);
        NumericUpDownAcceleration[] array = new NumericUpDownAcceleration[2];
 
        collection.CopyTo(array, 0);
 
        array[0].Should().Be(item1);
        array[1].Should().Be(item2);
    }
 
    [Fact]
    public void CopyTo_ThrowsArgumentException_IfArrayTooSmall()
    {
        NumericUpDownAcceleration item1 = new(1, 1.0m);
        NumericUpDownAcceleration item2 = new(2, 2.0m);
        NumericUpDownAccelerationCollection collection = new();
        collection.Add(item1);
        collection.Add(item2);
        NumericUpDownAcceleration[] array = new NumericUpDownAcceleration[1];
 
        collection.Invoking(c => c.CopyTo(array, 0))
            .Should().Throw<ArgumentException>();
    }
 
    [Fact]
    public void CopyTo_ThrowsArgumentNullException_IfArrayIsNull()
    {
        NumericUpDownAccelerationCollection collection = new();
        collection.Add(new NumericUpDownAcceleration(1, 1.0m));
 
        collection.Invoking(c => c.CopyTo(null!, 0))
            .Should().Throw<ArgumentNullException>();
    }
 
    [Fact]
    public void IsReadOnly_AlwaysReturnsFalse()
    {
        NumericUpDownAccelerationCollection collection = new();
        collection.IsReadOnly.Should().BeFalse();
    }
 
    [Fact]
    public void Remove_RemovesItem_IfExists()
    {
        NumericUpDownAcceleration item1 = new(1, 1.0m);
        NumericUpDownAcceleration item2 = new(2, 2.0m);
        NumericUpDownAccelerationCollection collection = new();
        collection.Add(item1);
        collection.Add(item2);
 
        bool removed = collection.Remove(item1);
 
        removed.Should().BeTrue();
        collection.Count.Should().Be(1);
        collection.Contains(item1).Should().BeFalse();
        collection.Contains(item2).Should().BeTrue();
    }
 
    [Fact]
    public void Remove_ReturnsFalse_IfItemNotInCollection()
    {
        NumericUpDownAcceleration item1 = new(1, 1.0m);
        NumericUpDownAcceleration item2 = new(2, 2.0m);
        NumericUpDownAccelerationCollection collection = new();
        collection.Add(item1);
 
        bool removed = collection.Remove(item2);
 
        removed.Should().BeFalse();
        collection.Count.Should().Be(1);
        collection.Contains(item1).Should().BeTrue();
    }
 
    [Fact]
    public void AddRange_AddsAllItems_AndKeepsSorted()
    {
        NumericUpDownAcceleration item1 = new(5, 1.0m);
        NumericUpDownAcceleration item2 = new(2, 2.0m);
        NumericUpDownAcceleration item3 = new(3, 3.0m);
        NumericUpDownAccelerationCollection collection = new();
 
        collection.AddRange(item1, item2, item3);
 
        collection.Count.Should().Be(3);
        collection[0].Should().Be(item2);
        collection[1].Should().Be(item3);
        collection[2].Should().Be(item1);
    }
 
    [Fact]
    public void AddRange_ThrowsArgumentNullException_IfArrayIsNull()
    {
        NumericUpDownAccelerationCollection collection = new();
 
        collection.Invoking(c => c.AddRange(null!))
            .Should().Throw<ArgumentNullException>();
    }
 
    [Fact]
    public void AddRange_ThrowsArgumentNullException_IfAnyElementIsNull()
    {
        NumericUpDownAcceleration item1 = new(1, 1.0m);
        NumericUpDownAcceleration? item2 = null;
        NumericUpDownAcceleration item3 = new(2, 2.0m);
        NumericUpDownAccelerationCollection collection = new();
 
        collection.Invoking(c => c.AddRange(item1, item2!, item3))
            .Should().Throw<ArgumentNullException>();
    }
}