diff --git a/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/MaskedTextBoxTextEditorDropDownTests.cs b/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/MaskedTextBoxTextEditorDropDownTests.cs new file mode 100644 index 00000000000..8ffbfab8941 --- /dev/null +++ b/src/System.Windows.Forms.Design/tests/UnitTests/System/Windows/Forms/Design/MaskedTextBoxTextEditorDropDownTests.cs @@ -0,0 +1,59 @@ +// 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. + 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); + } +}