File: System\Windows\Forms\Design\MaskedTextBoxTextEditorDropDownTests.cs
Web Access
Project: src\src\System.Windows.Forms.Design\tests\UnitTests\System.Windows.Forms.Design.Tests.csproj (System.Windows.Forms.Design.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.Design.Tests;
 
public class MaskedTextBoxTextEditorDropDownTests
{
    [Fact]
    public void Value_ReturnsNull_WhenCancelled()
    {
        using MaskedTextBox maskedTextBox = new();
        using MaskedTextBoxTextEditorDropDown dropDown = new(maskedTextBox);
        dropDown.TestAccessor().Dynamic._cancel = true;
 
        dropDown.Value.Should().BeNull();
    }
 
    [Fact]
    public void Value_ReturnsText_WhenNotCancelled()
    {
        using MaskedTextBox maskedTextBox = new("00000");
        maskedTextBox.Text = "12345";
        using MaskedTextBoxTextEditorDropDown dropDown = new(maskedTextBox);
        dropDown.TestAccessor().Dynamic._cancel = false;
 
        dropDown.Value.Should().Be("12345");
    }
 
    [Fact]
    public void ProcessDialogKey_SetsCancel_WhenEscapePressed()
    {
        using MaskedTextBox maskedTextBox = new();
        using MaskedTextBoxTextEditorDropDown dropDown = new(maskedTextBox);
        bool processDialogKey = dropDown.TestAccessor().Dynamic.ProcessDialogKey(Keys.Escape);
        bool cancel = dropDown.TestAccessor().Dynamic._cancel;
 
        cancel.Should().BeTrue();
        processDialogKey.Should().BeFalse();
    }
 
    [Fact]
    public void MaskInputRejected_SetsError_WhenInputRejected()
    {
        using MaskedTextBox maskedTextBox = new("00:00");
        using MaskedTextBoxTextEditorDropDown dropDown = new(maskedTextBox);
        using ErrorProvider errorProvider = dropDown.TestAccessor().Dynamic._errorProvider;
 
        // No error when setting a correct format value.
        using MaskedTextBox dropDownMaskedTextBox = dropDown.TestAccessor().Dynamic._cloneMtb;
        dropDownMaskedTextBox.Text = "12:20";
        errorProvider.GetError(dropDownMaskedTextBox).Should().Be(string.Empty);
 
        // Incorrectly formatted values will result in the error "Error at position 0: expected number".
        dropDownMaskedTextBox.Text = "invalid";
        errorProvider.GetError(dropDownMaskedTextBox).Should().Contain(SR.MaskedTextBoxHintDigitExpected);
    }
}