using System.Globalization;
using Thread=System.Threading.Thread;
using CategoryAttribute=NUnit.Framework.CategoryAttribute;
+using System.Reflection;
namespace MonoTests.System.Windows.Forms
{
[TestFixture]
- [Ignore ("Pending MTB implementation")]
public class MaskedTextBoxTest
{
[SetUp]\r
Assert.AreEqual (false, mtb.AcceptsTab, "#A3");\r
mtb.Dispose ();
}
+
+ [Test]
+ public void ConstructorTest ()
+ {
+ using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
+ Assert.AreEqual (false, mtb.AcceptsTab, "#A_A1");\r
+ Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A_A2");\r
+ Assert.AreEqual (false, mtb.AsciiOnly, "#A_A3");\r
+ Assert.AreEqual (false, mtb.BeepOnError, "#A_B1");\r
+ Assert.AreEqual (false, mtb.CanUndo, "#A_C1");\r
+ Assert.IsNotNull (mtb.Culture, "#A_C3");\r
+ Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#A_4");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#A_C5");\r
+ Assert.IsNull (mtb.FormatProvider, "#A_F1");\r
+ Assert.AreEqual (false, mtb.HidePromptOnLeave, "#A_H1");\r
+ Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#A_I1");\r
+ Assert.AreEqual (false, mtb.IsOverwriteMode, "#A_I2");\r
+ Assert.AreEqual (0, mtb.Lines.Length, "#A_L1");\r
+ Assert.AreEqual ("", mtb.Mask, "#A_M1");\r
+ Assert.AreEqual (true, mtb.MaskCompleted, "#A_M2");\r
+ Assert.IsNull (mtb.MaskedTextProvider, "#A_M3");\r
+ Assert.AreEqual (true, mtb.MaskFull, "#A_M4");\r
+ Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#A_M5");\r
+ Assert.AreEqual (false, mtb.Multiline, "#A_M6");\r
+ Assert.AreEqual ('\0', mtb.PasswordChar, "#A_P1");\r
+ Assert.AreEqual ('_', mtb.PromptChar, "#A_P2");\r
+ Assert.AreEqual (false, mtb.ReadOnly, "#A_R1");\r
+ Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#A_R2");\r
+ Assert.AreEqual (true, mtb.ResetOnPrompt, "#A_R3");\r
+ Assert.AreEqual (true, mtb.ResetOnSpace, "#A_R4");\r
+ Assert.AreEqual ("", mtb.SelectedText, "#A_S1");\r
+ Assert.AreEqual (true, mtb.SkipLiterals, "#A_S2");\r
+ Assert.AreEqual ("", mtb.Text, "#A_T1");\r
+ Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#A_T2");\r
+ Assert.AreEqual (0, mtb.TextLength, "#A_T3");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#A_T4");\r
+ Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#A_U1");\r
+ Assert.IsNull (mtb.ValidatingType, "#A_V1");\r
+ Assert.AreEqual (false, mtb.WordWrap, "#A_W1");\r
+ }\r
+\r
+ using (MaskedTextBox mtb = new MaskedTextBox ("abc")) {\r
+ Assert.AreEqual (false, mtb.AcceptsTab, "#B_A1");\r
+ Assert.AreEqual (true, mtb.AllowPromptAsInput, "#B_A2");\r
+ Assert.AreEqual (false, mtb.AsciiOnly, "#B_A3");\r
+ Assert.AreEqual (false, mtb.BeepOnError, "#B_B1");\r
+ Assert.AreEqual (false, mtb.CanUndo, "#B_C1");\r
+ Assert.IsNotNull (mtb.Culture, "#B_C3");\r
+ Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#B_4");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#B_C5");\r
+ Assert.IsNull (mtb.FormatProvider, "#B_F1");\r
+ Assert.AreEqual (false, mtb.HidePromptOnLeave, "#B_H1");\r
+ Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#B_I1");\r
+ Assert.AreEqual (false, mtb.IsOverwriteMode, "#B_I2");\r
+ Assert.AreEqual (1, mtb.Lines.Length, "#B_L1");\r
+ Assert.AreEqual ("abc", mtb.Mask, "#B_M1");\r
+ Assert.AreEqual (true, mtb.MaskCompleted, "#B_M2");\r
+ Assert.IsNotNull (mtb.MaskedTextProvider, "#B_M3");\r
+ Assert.AreEqual (false, mtb.MaskFull, "#B_M4");\r
+ Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#B_M5");\r
+ Assert.AreEqual (false, mtb.Multiline, "#B_M6");\r
+ Assert.AreEqual ('\0', mtb.PasswordChar, "#B_P1");\r
+ Assert.AreEqual ('_', mtb.PromptChar, "#B_P2");\r
+ Assert.AreEqual (false, mtb.ReadOnly, "#B_R1");\r
+ Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#B_R2");\r
+ Assert.AreEqual (true, mtb.ResetOnPrompt, "#B_R3");\r
+ Assert.AreEqual (true, mtb.ResetOnSpace, "#B_R4");\r
+ Assert.AreEqual ("", mtb.SelectedText, "#B_S1");\r
+ Assert.AreEqual (true, mtb.SkipLiterals, "#B_S2");\r
+ Assert.AreEqual (" bc", mtb.Text, "#B_T1");\r
+ Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#B_T2");\r
+ Assert.AreEqual (3, mtb.TextLength, "#B_T3");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#B_T4");\r
+ Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#B_U1");\r
+ Assert.IsNull (mtb.ValidatingType, "#B_V1");\r
+ Assert.AreEqual (false, mtb.WordWrap, "#B_W1");\r
+ }\r
+\r
+ using (MaskedTextBox mtb = new MaskedTextBox ("<>")) {\r
+ Assert.AreEqual (false, mtb.AcceptsTab, "#C_A1");\r
+ Assert.AreEqual (true, mtb.AllowPromptAsInput, "#C_A2");\r
+ Assert.AreEqual (false, mtb.AsciiOnly, "#C_A3");\r
+ Assert.AreEqual (false, mtb.BeepOnError, "#C_B1");\r
+ Assert.AreEqual (false, mtb.CanUndo, "#C_C1");\r
+ Assert.IsNotNull (mtb.Culture, "#C_C3");\r
+ Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#C_4");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C_C5");\r
+ Assert.IsNull (mtb.FormatProvider, "#C_F1");\r
+ Assert.AreEqual (false, mtb.HidePromptOnLeave, "#C_H1");\r
+ Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#C_I1");\r
+ Assert.AreEqual (false, mtb.IsOverwriteMode, "#C_I2");\r
+ Assert.AreEqual (0, mtb.Lines.Length, "#C_L1");\r
+ Assert.AreEqual ("<>", mtb.Mask, "#C_M1");\r
+ Assert.AreEqual (true, mtb.MaskCompleted, "#C_M2");\r
+ Assert.IsNotNull (mtb.MaskedTextProvider, "#C_M3");\r
+ Assert.AreEqual (true, mtb.MaskFull, "#C_M4");\r
+ Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#C_M5");\r
+ Assert.AreEqual (false, mtb.Multiline, "#C_M6");\r
+ Assert.AreEqual ('\0', mtb.PasswordChar, "#C_P1");\r
+ Assert.AreEqual ('_', mtb.PromptChar, "#C_P2");\r
+ Assert.AreEqual (false, mtb.ReadOnly, "#C_R1");\r
+ Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#C_R2");\r
+ Assert.AreEqual (true, mtb.ResetOnPrompt, "#C_R3");\r
+ Assert.AreEqual (true, mtb.ResetOnSpace, "#C_R4");\r
+ Assert.AreEqual ("", mtb.SelectedText, "#C_S1");\r
+ Assert.AreEqual (true, mtb.SkipLiterals, "#C_S2");\r
+ Assert.AreEqual ("", mtb.Text, "#C_T1");\r
+ Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#C_T2");\r
+ Assert.AreEqual (0, mtb.TextLength, "#C_T3");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#C_T4");\r
+ Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#C_U1");\r
+ Assert.IsNull (mtb.ValidatingType, "#C_V1");\r
+ Assert.AreEqual (false, mtb.WordWrap, "#C_W1");\r
+ }\r
+\r
+ using (MaskedTextBox mtb = new MaskedTextBox ("abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890ÑñæøåÆØÅ!\\ºª\"·$%&/()='?¡¿`^+*´¨Çç-_.:,;}{][")) {\r
+ Assert.AreEqual (false, mtb.AcceptsTab, "#D_A1");\r
+ Assert.AreEqual (true, mtb.AllowPromptAsInput, "#D_A2");\r
+ Assert.AreEqual (false, mtb.AsciiOnly, "#D_A3");\r
+ Assert.AreEqual (false, mtb.BeepOnError, "#D_B1");\r
+ Assert.AreEqual (false, mtb.CanUndo, "#D_C1");\r
+ Assert.IsNotNull (mtb.Culture, "#D_C3");\r
+ Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#D_4");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#D_C5");\r
+ Assert.IsNull (mtb.FormatProvider, "#D_F1");\r
+ Assert.AreEqual (false, mtb.HidePromptOnLeave, "#D_H1");\r
+ Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#D_I1");\r
+ Assert.AreEqual (false, mtb.IsOverwriteMode, "#D_I2");\r
+ Assert.AreEqual (1, mtb.Lines.Length, "#D_L1");\r
+ Assert.AreEqual ("abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890ÑñæøåÆØÅ!\\ºª\"·$%&/()='?¡¿`^+*´¨Çç-_.:,;}{][", mtb.Mask, "#D_M1");\r
+ Assert.AreEqual (false, mtb.MaskCompleted, "#D_M2");\r
+ Assert.IsNotNull (mtb.MaskedTextProvider, "#D_M3");\r
+ Assert.AreEqual (false, mtb.MaskFull, "#D_M4");\r
+ Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#D_M5");\r
+ Assert.AreEqual (false, mtb.Multiline, "#D_M6");\r
+ Assert.AreEqual ('\0', mtb.PasswordChar, "#D_P1");\r
+ Assert.AreEqual ('_', mtb.PromptChar, "#D_P2");\r
+ Assert.AreEqual (false, mtb.ReadOnly, "#D_R1");\r
+ Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#D_R2");\r
+ Assert.AreEqual (true, mtb.ResetOnPrompt, "#D_R3");\r
+ Assert.AreEqual (true, mtb.ResetOnSpace, "#D_R4");\r
+ Assert.AreEqual ("", mtb.SelectedText, "#D_S1");\r
+ Assert.AreEqual (true, mtb.SkipLiterals, "#D_S2");\r
+ Assert.AreEqual (" bcdefghijklmopqrstuvwxyz B DEFGHIJK MOPQRSTUVWXYZ12345678 ÑñæøåÆØÅ!ºª\"·$% /()=' ¡¿`^+*´¨Çç-_.:,;}{][", mtb.Text, "#D_T1");\r
+ Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#D_T2");\r
+ Assert.AreEqual (102, mtb.TextLength, "#D_T3");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#D_T4");\r
+ Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#D_U1");\r
+ Assert.IsNull (mtb.ValidatingType, "#D_V1");\r
+ Assert.AreEqual (false, mtb.WordWrap, "#D_W1");\r
+ }\r
+\r
+ MaskedTextProvider mtp = new MaskedTextProvider ("abcd", CultureInfo.GetCultureInfo ("es-AR"), false, '>', '^', false);\r
+ using (MaskedTextBox mtb = new MaskedTextBox (mtp)) {\r
+ Assert.AreEqual (false, mtb.AcceptsTab, "#E_A1");\r
+ Assert.AreEqual (false, mtb.AllowPromptAsInput, "#E_A2");\r
+ Assert.AreEqual (false, mtb.AsciiOnly, "#E_A3");\r
+ Assert.AreEqual (false, mtb.BeepOnError, "#E_B1");\r
+ Assert.AreEqual (false, mtb.CanUndo, "#E_C1");\r
+ Assert.IsNotNull (mtb.Culture, "#E_C3");\r
+ Assert.AreEqual ("es-AR", mtb.Culture.Name, "#E_4");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#E_C5");\r
+ Assert.IsNull (mtb.FormatProvider, "#E_F1");\r
+ Assert.AreEqual (false, mtb.HidePromptOnLeave, "#E_H1");\r
+ Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#E_I1");\r
+ Assert.AreEqual (false, mtb.IsOverwriteMode, "#E_I2");\r
+ Assert.AreEqual (1, mtb.Lines.Length, "#E_L1");\r
+ Assert.AreEqual ("abcd", mtb.Mask, "#E_M1");\r
+ Assert.AreEqual (true, mtb.MaskCompleted, "#E_M2");\r
+ Assert.IsNotNull (mtb.MaskedTextProvider, "#E_M3");\r
+ Assert.IsFalse (mtb.MaskedTextProvider == mtp, "#E_M3-b");\r
+ Assert.AreEqual (false, mtb.MaskFull, "#E_M4");\r
+ Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#E_M5");\r
+ Assert.AreEqual (false, mtb.Multiline, "#E_M6");\r
+ Assert.AreEqual ('^', mtb.PasswordChar, "#E_P1");\r
+ Assert.AreEqual ('>', mtb.PromptChar, "#E_P2");\r
+ Assert.AreEqual (false, mtb.ReadOnly, "#E_R1");\r
+ Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#E_R2");\r
+ Assert.AreEqual (true, mtb.ResetOnPrompt, "#E_R3");\r
+ Assert.AreEqual (true, mtb.ResetOnSpace, "#E_R4");\r
+ Assert.AreEqual ("", mtb.SelectedText, "#E_S1");\r
+ Assert.AreEqual (true, mtb.SkipLiterals, "#E_S2");\r
+ Assert.AreEqual (" bcd", mtb.Text, "#E_T1");\r
+ Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#E_T2");\r
+ Assert.AreEqual (4, mtb.TextLength, "#E_T3");\r
+ Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#E_T4");\r
+ Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#E_U1");\r
+ Assert.IsNull (mtb.ValidatingType, "#E_V1");\r
+ Assert.AreEqual (false, mtb.WordWrap, "#E_W1");\r
+ }\r
+
+ }
+
+ [Test]
+ public void UndoTest ()
+ {
+ MaskedTextBox mtb;
+
+ mtb = new MaskedTextBox ();\r
+ mtb.Text = "abcdef";\r
+ Assert.AreEqual (false, mtb.CanUndo, "#A0-c");
+ mtb.Undo ();\r
+ Assert.AreEqual ("abcdef", mtb.Text, "#A1");\r
+ Assert.AreEqual (false, mtb.CanUndo, "#A1-c");
+ mtb.Text = "cdef";\r
+ mtb.ClearUndo ();\r
+ Assert.AreEqual ("cdef", mtb.Text, "#A2");
+ Assert.AreEqual (false, mtb.CanUndo, "#A2-c");
+
+ mtb.Dispose ();
+ }
+
+ [Test]
+ public void CreateHandleTest ()
+ {
+ using (MaskedTextBox mtb = new MaskedTextBox ()) {
+ Assert.AreEqual (false, mtb.IsHandleCreated, "#A1");\r
+ typeof (MaskedTextBox).GetMethod ("CreateHandle", global::System.Reflection.BindingFlags.Instance | global::System.Reflection.BindingFlags.NonPublic).Invoke (mtb, new object [] { });\r
+ Assert.AreEqual (true, mtb.IsHandleCreated, "#A2");
+ }
+ }
+
+ [Test]
+ public void GetFirstCharIndexFromLineTest ()
+ {\r
+ using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
+ for (int i = -100; i < 100; i++) { \r
+ Assert.AreEqual (0, mtb.GetFirstCharIndexFromLine (i), "#A" + i.ToString ());\r
+ }\r
+ mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";\r
+ for (int i = -100; i < 100; i++) {\r
+ Assert.AreEqual (0, mtb.GetFirstCharIndexFromLine (i), "#B" + i.ToString ());\r
+ }\r
+ }
+ }\r
+\r
+\r
+ [Test]\r
+ public void GetFirstCharIndexOfCurrentLineTest ()\r
+ {\r
+ using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
+ Assert.AreEqual (0, mtb.GetFirstCharIndexOfCurrentLine (), "#A1");\r
+ mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";\r
+ Assert.AreEqual (0, mtb.GetFirstCharIndexOfCurrentLine (), "#B1");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ public void GetLineFromCharIndexTest ()\r
+ {\r
+ using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
+ for (int i = -100; i < 100; i++) {\r
+ Assert.AreEqual (0, mtb.GetLineFromCharIndex (i), "#A" + i.ToString ());\r
+ }\r
+ mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";\r
+ for (int i = -100; i < 100; i++) {\r
+ Assert.AreEqual (0, mtb.GetLineFromCharIndex (i), "#B" + i.ToString ());\r
+ }\r
+ }\r
+ }
+
+ [Test]
+ public void IsInputKeyTest ()
+ {\r
+ using (Form f = new Form ()) {\r
+ using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
+ f.Controls.Add (mtb);\r
+ f.Show ();\r
+ MethodInfo IsInputKey = typeof (MaskedTextBox).GetMethod ("IsInputKey", global::System.Reflection.BindingFlags.NonPublic | global::System.Reflection.BindingFlags.Instance);\r
+ \r
+ for (int i = 0; i <= 0xFF; i++) {\r
+ Keys key = (Keys) i;\r
+ Keys key_ALT = key | Keys.Alt;\r
+ Keys key_SHIFT = key | Keys.Shift;\r
+ Keys key_CTRL = key | Keys.Control;\r
+ Keys key_ALT_SHIFT = key | Keys.Alt | Keys.Shift;\r
+ Keys key_ALT_CTRL = key | Keys.Alt | Keys.Control;\r
+ Keys key_SHIFT_CTLR = key | Keys.Shift | Keys.Control;\r
+ Keys key_ALT_SHIFT_CTLR = key | Keys.Alt | Keys.Shift | Keys.Control;\r
+\r
+ bool is_input = false;\r
+ \r
+ switch (key) {\r
+ case Keys.PageDown:\r
+ case Keys.PageUp:\r
+ case Keys.End:\r
+ case Keys.Home:\r
+ case Keys.Left:\r
+ case Keys.Right:\r
+ case Keys.Up:\r
+ case Keys.Down:\r
+ is_input = true;\r
+ break;\r
+ }\r
+\r
+ Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key }));\r
+ Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT }));\r
+ Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_SHIFT }));\r
+ Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_CTRL }));\r
+ Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_SHIFT }));\r
+ Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_CTRL }));\r
+ Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_SHIFT_CTLR }));\r
+ Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_SHIFT_CTLR }));\r
+ }\r
+ }
+ }
+ }
+
+ [Test]
+ public void ValidateTextTest ()
+ {
+ Assert.Ignore ("Pending implementation");
+ }
+
+ [Test]
+ public void ToStringTest ()\r
+ {\r
+ Assert.Ignore ("Pending implementation");
+ }
}
}