2008-11-24 Jonathan Pobst <monkey@jpobst.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / MaskedTextBoxTest.cs
1 //\r
2 // Copyright (c) 2007 Novell, Inc.\r
3 //\r
4 // Authors:\r
5 //      Rolf Bjarne Kvinge  (RKvinge@novell.com)\r
6 //\r
7 \r
8 #if NET_2_0\r
9 \r
10 using System;\r
11 using System.Collections;\r
12 using System.ComponentModel;\r
13 using System.Drawing;\r
14 using System.Windows.Forms;\r
15 using System.Xml;\r
16 using System.Threading;\r
17 using NUnit.Framework;\r
18 using System.Globalization;\r
19 using Thread=System.Threading.Thread;\r
20 using CategoryAttribute=NUnit.Framework.CategoryAttribute;\r
21 using System.Reflection;\r
22 \r
23 namespace MonoTests.System.Windows.Forms\r
24 {\r
25         [TestFixture]\r
26         public class MaskedTextBoxTest : TestHelper\r
27         {\r
28                 [SetUp]\r
29                 protected override void SetUp () {\r
30                         Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");
31                         base.SetUp ();\r
32                 }\r
33 \r
34                 [Test]\r
35                 public void InitialProperties ()\r
36                 {\r
37                         MaskedTextBox mtb = new MaskedTextBox ();\r
38                         Assert.AreEqual (false, mtb.AcceptsTab, "#A1");\r
39                         Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A2");\r
40                         Assert.AreEqual (false, mtb.AsciiOnly, "#A3");\r
41                         Assert.AreEqual (false, mtb.BeepOnError, "#B1");\r
42                         Assert.AreEqual (false, mtb.CanUndo, "#C1");\r
43                         Assert.IsNotNull (mtb.Culture, "#C3");\r
44                         Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#4");\r
45                         Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C5");\r
46                         Assert.IsNull (mtb.FormatProvider, "#F1");\r
47                         Assert.AreEqual (false, mtb.HidePromptOnLeave, "#H1");\r
48                         Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I1");\r
49                         Assert.AreEqual (false, mtb.IsOverwriteMode, "#I2");\r
50                         Assert.AreEqual (0, mtb.Lines.Length, "#L1");\r
51                         Assert.AreEqual ("", mtb.Mask, "#M1");\r
52                         Assert.AreEqual (true, mtb.MaskCompleted, "#M2");\r
53                         Assert.IsNull (mtb.MaskedTextProvider, "#M3");\r
54                         Assert.AreEqual (true, mtb.MaskFull, "#M4");\r
55                         Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#M5");\r
56                         Assert.AreEqual (false, mtb.Multiline, "#M6");\r
57                         Assert.AreEqual ('\0', mtb.PasswordChar, "#P1");\r
58                         Assert.AreEqual ('_', mtb.PromptChar, "#P2");\r
59                         Assert.AreEqual (false, mtb.ReadOnly, "#R1");\r
60                         Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#R2");\r
61                         Assert.AreEqual (true, mtb.ResetOnPrompt, "#R3");\r
62                         Assert.AreEqual (true, mtb.ResetOnSpace, "#R4");\r
63                         Assert.AreEqual ("", mtb.SelectedText, "#S1");\r
64                         Assert.AreEqual (true, mtb.SkipLiterals, "#S2");\r
65                         Assert.AreEqual ("", mtb.Text, "#T1");\r
66                         Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T2");\r
67                         Assert.AreEqual (0, mtb.TextLength, "#T3");\r
68                         Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T4");\r
69                         Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#U1");\r
70                         Assert.IsNull (mtb.ValidatingType, "#V1");\r
71                         Assert.AreEqual (false, mtb.WordWrap, "#W1");\r
72                         \r
73                         mtb.Dispose ();\r
74                 }\r
75                 \r
76                 [Test]\r
77                 public void WordWrapTest ()\r
78                 {\r
79 \r
80                         MaskedTextBox mtb;\r
81 \r
82                         mtb = new MaskedTextBox ();\r
83                         Assert.AreEqual (false, mtb.WordWrap, "#W1");\r
84                         mtb.WordWrap = true;\r
85                         Assert.AreEqual (false, mtb.WordWrap, "#W2");\r
86                         \r
87                         mtb.Dispose ();\r
88                 }\r
89                 \r
90                 [Test]\r
91                 public void ValidatingTypeTest ()\r
92                 {\r
93 \r
94                         MaskedTextBox mtb;\r
95 \r
96                         mtb = new MaskedTextBox ();\r
97                         Assert.IsNull (mtb.ValidatingType, "#V1");\r
98                         mtb.ValidatingType = typeof(int);\r
99                         Assert.IsNotNull (mtb.ValidatingType, "#V2");\r
100                         Assert.AreSame (typeof(int), mtb.ValidatingType, "#V3");\r
101                         mtb.Dispose ();\r
102                 }\r
103                 \r
104                 [Test]\r
105                 public void UseSystemPasswordCharTest ()\r
106                 {\r
107 \r
108                         MaskedTextBox mtb;\r
109 \r
110                         mtb = new MaskedTextBox ();\r
111                         Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#U1");\r
112                         mtb.UseSystemPasswordChar = true;\r
113                         Assert.AreEqual (true, mtb.UseSystemPasswordChar, "#U2");\r
114                         mtb.Dispose ();\r
115                 }\r
116                 \r
117                 [Test]\r
118                 public void TextMaskFormatTest ()\r
119                 {\r
120 \r
121                         MaskedTextBox mtb;\r
122 \r
123                         mtb = new MaskedTextBox ();\r
124                         Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T1");\r
125                         mtb.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;\r
126                         Assert.AreEqual (MaskFormat.ExcludePromptAndLiterals, mtb.TextMaskFormat, "#T2");\r
127                         mtb.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;\r
128                         Assert.AreEqual (MaskFormat.IncludePromptAndLiterals, mtb.TextMaskFormat, "#T3");\r
129                         mtb.TextMaskFormat = MaskFormat.IncludePrompt;\r
130                         Assert.AreEqual (MaskFormat.IncludePrompt, mtb.TextMaskFormat, "#T4");\r
131                         mtb.TextMaskFormat = MaskFormat.IncludeLiterals;\r
132                         Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T4");\r
133                         mtb.Dispose ();\r
134                 }\r
135                 \r
136                 [Test]\r
137                 [ExpectedException (typeof(InvalidEnumArgumentException))]\r
138                 public void TextMaskFormatExceptionTestException ()\r
139                 {\r
140 \r
141                         MaskedTextBox mtb;\r
142 \r
143                         mtb = new MaskedTextBox ();\r
144                         mtb.TextMaskFormat = (MaskFormat) 123;\r
145                         mtb.Dispose ();\r
146                 }\r
147                 \r
148                 [Test]\r
149                 public void TextLengthTest ()\r
150                 {\r
151 \r
152                         MaskedTextBox mtb;\r
153 \r
154                         mtb = new MaskedTextBox ();\r
155                         Assert.AreEqual (0, mtb.TextLength, "#T1");\r
156                         mtb.Text = "abc";\r
157                         Assert.AreEqual (3, mtb.TextLength, "#T2");\r
158                         \r
159                         mtb.Dispose ();\r
160                 }\r
161                 \r
162                 [Test]\r
163                 public void TextAlignTest ()\r
164                 {\r
165 \r
166                         MaskedTextBox mtb;\r
167 \r
168                         mtb = new MaskedTextBox ();\r
169                         Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T1");\r
170                         mtb.TextAlign = HorizontalAlignment.Center;\r
171                         Assert.AreEqual (HorizontalAlignment.Center, mtb.TextAlign, "#T2");\r
172                         mtb.TextAlign = HorizontalAlignment.Right;\r
173                         Assert.AreEqual (HorizontalAlignment.Right, mtb.TextAlign, "#T3");\r
174                         mtb.TextAlign = HorizontalAlignment.Left;\r
175                         Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T4");\r
176                         mtb.Dispose ();\r
177                 }\r
178                 \r
179                 [Test]\r
180                 [ExpectedException (typeof (InvalidEnumArgumentException))]\r
181                 public void TextAlignExceptionTest ()\r
182                 {\r
183 \r
184                         MaskedTextBox mtb;\r
185 \r
186                         mtb = new MaskedTextBox ();\r
187                         mtb.TextAlign = (HorizontalAlignment) 123;\r
188                         mtb.Dispose ();\r
189                 }\r
190                 \r
191                 [Test]\r
192                 public void TextTest ()\r
193                 {\r
194 \r
195                         MaskedTextBox mtb;\r
196 \r
197                         mtb = new MaskedTextBox ();\r
198                         Assert.AreEqual ("", mtb.Text, "#T1");\r
199                         mtb.Text = "abc";\r
200                         Assert.AreEqual ("abc", mtb.Text, "#T2");\r
201                         mtb.Text = "ABC";\r
202                         Assert.AreEqual ("ABC", mtb.Text, "#T3");\r
203                         mtb.Mask = "abc";\r
204                         mtb.Text = "abc";\r
205                         Assert.AreEqual ("abc", mtb.Text, "#T4");\r
206                         mtb.Text = "ABC";\r
207                         Assert.AreEqual ("Abc", mtb.Text, "#T5");\r
208                         mtb.Text = "123";\r
209                         Assert.AreEqual ("1bc", mtb.Text, "#T6");\r
210                         mtb.Dispose ();\r
211                 }\r
212                 \r
213                 [Test]\r
214                 public void SkipLiteralsTest ()\r
215                 {\r
216 \r
217                         MaskedTextBox mtb;\r
218 \r
219                         mtb = new MaskedTextBox ();\r
220                         Assert.AreEqual (true, mtb.SkipLiterals, "#S1");\r
221                         mtb.SkipLiterals = false;\r
222                         Assert.AreEqual (false, mtb.SkipLiterals, "#S2");\r
223                         mtb.Dispose ();\r
224                 }\r
225                 \r
226                 [Test]\r
227                 public void SelectedTextTest ()\r
228                 {\r
229 \r
230                         MaskedTextBox mtb;\r
231 \r
232                         mtb = new MaskedTextBox ();\r
233                         Assert.AreEqual ("", mtb.SelectedText, "#S1");\r
234                         mtb.Text = "abc";\r
235                         Assert.AreEqual ("", mtb.SelectedText, "#S2");\r
236                         mtb.SelectAll ();\r
237                         Assert.AreEqual ("abc", mtb.SelectedText, "#S3");\r
238                         mtb.Dispose ();\r
239                 }\r
240                 \r
241                 [Test]\r
242                 public void ResetOnSpaceTest ()\r
243                 {\r
244 \r
245                         MaskedTextBox mtb;\r
246 \r
247                         mtb = new MaskedTextBox ();\r
248                         Assert.AreEqual (true, mtb.ResetOnSpace, "#R1");\r
249                         mtb.ResetOnSpace = false;\r
250                         Assert.AreEqual (false, mtb.ResetOnSpace, "#R2");\r
251                         mtb.Dispose ();\r
252                 }\r
253                 \r
254                 [Test]\r
255                 public void ResetOnPromptTest ()\r
256                 {\r
257 \r
258                         MaskedTextBox mtb;\r
259 \r
260                         mtb = new MaskedTextBox ();\r
261                         Assert.AreEqual (true, mtb.ResetOnPrompt, "#R1");\r
262                         mtb.ResetOnPrompt = false;\r
263                         Assert.AreEqual (false, mtb.ResetOnPrompt, "#R2");\r
264                         mtb.Dispose ();\r
265                 }\r
266                 \r
267                 [Test]\r
268                 public void RejectInputOnFirstFailureTest ()\r
269                 {\r
270 \r
271                         MaskedTextBox mtb;\r
272 \r
273                         mtb = new MaskedTextBox ();\r
274                         Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#R1");\r
275                         mtb.RejectInputOnFirstFailure = true;\r
276                         Assert.AreEqual (true, mtb.RejectInputOnFirstFailure, "#R2");\r
277                         mtb.Dispose ();\r
278                 }\r
279                 \r
280                 [Test]\r
281                 public void ReadOnlyTest ()\r
282                 {\r
283 \r
284                         MaskedTextBox mtb;\r
285 \r
286                         mtb = new MaskedTextBox ();\r
287                         Assert.AreEqual (false, mtb.ReadOnly, "#R1");\r
288                         mtb.ReadOnly = true;\r
289                         Assert.AreEqual (true, mtb.ReadOnly, "#R2");\r
290                         mtb.Dispose ();\r
291                 }\r
292                 \r
293                 [Test]\r
294                 public void PromptCharTest ()\r
295                 {\r
296 \r
297                         MaskedTextBox mtb;\r
298 \r
299                         mtb = new MaskedTextBox ();\r
300                         Assert.AreEqual ('_', mtb.PromptChar, "#P1");\r
301                         mtb.PromptChar = '*';\r
302                         Assert.AreEqual ('*', mtb.PromptChar, "#P2");\r
303                         mtb.Dispose ();\r
304                 }\r
305                 \r
306                 [Test]\r
307                 public void PasswordCharTest ()\r
308                 {\r
309 \r
310                         MaskedTextBox mtb;\r
311 \r
312                         mtb = new MaskedTextBox ();\r
313                         Assert.AreEqual ('\0', mtb.PasswordChar, "#P1");\r
314                         mtb.PasswordChar = '*';\r
315                         Assert.AreEqual ('*', mtb.PasswordChar, "#P2");\r
316                         mtb.Dispose ();\r
317                 }\r
318 \r
319                 [Test]\r
320                 public void MultilineTest ()\r
321                 {\r
322 \r
323                         MaskedTextBox mtb;\r
324 \r
325                         mtb = new MaskedTextBox ();\r
326                         Assert.AreEqual (false, mtb.Multiline, "#M1");\r
327                         mtb.Multiline = true;\r
328                         Assert.AreEqual (false, mtb.Multiline, "#M2");\r
329                         mtb.Dispose ();\r
330                 }\r
331                 \r
332                 [Test]\r
333                 public void MaskFullTest ()\r
334                 {\r
335 \r
336                         MaskedTextBox mtb;\r
337 \r
338                         mtb = new MaskedTextBox ();\r
339                         Assert.AreEqual (true, mtb.MaskFull, "#M1");\r
340                         mtb.Mask = "abc";\r
341                         Assert.AreEqual (false, mtb.MaskFull, "#M2");\r
342                         mtb.Text = "abc";\r
343                         Assert.AreEqual (true, mtb.MaskFull, "#M3");\r
344                         mtb.Dispose ();\r
345                 }\r
346                 \r
347                 [Test]\r
348                 public void MaskedTextProviderTest ()\r
349                 {\r
350 \r
351                         MaskedTextBox mtb;\r
352                         MaskedTextProvider mtp;\r
353 \r
354                         mtb = new MaskedTextBox ();\r
355                         Assert.IsNull (mtb.MaskedTextProvider, "#M1");\r
356                         mtb.Mask = "abc";\r
357                         Assert.IsNotNull (mtb.MaskedTextProvider, "#M2");\r
358                         Assert.AreEqual ("abc", mtb.MaskedTextProvider.Mask, "#M3");\r
359                         // We always get a clone of the current mtp.\r
360                         Assert.IsTrue (mtb.MaskedTextProvider != mtb.MaskedTextProvider, "#M4");\r
361                         mtb.Dispose ();\r
362 \r
363                         mtp = new MaskedTextProvider ("Z");\r
364                         mtb = new MaskedTextBox (mtp);\r
365                         Assert.IsNotNull (mtb.MaskedTextProvider, "#M5");\r
366                         Assert.AreEqual ("Z", mtb.MaskedTextProvider.Mask, "#6");\r
367                         Assert.IsTrue (mtb.MaskedTextProvider != mtb.MaskedTextProvider, "#M7");\r
368                         Assert.IsTrue (mtb.MaskedTextProvider != mtp, "#M8");\r
369                         mtb.Dispose ();\r
370                 }\r
371 \r
372                 [Test]\r
373                 public void MaskCompletedTest ()\r
374                 {\r
375 \r
376                         MaskedTextBox mtb;\r
377 \r
378                         mtb = new MaskedTextBox ();\r
379                         Assert.AreEqual (true, mtb.MaskCompleted, "#M1");\r
380                         mtb.Mask = "abcABCZZZ";\r
381                         Assert.AreEqual (false, mtb.MaskCompleted, "#M2");\r
382                         mtb.Text = "abcabcabc";\r
383                         Assert.AreEqual (true, mtb.MaskCompleted, "#M3");\r
384                         mtb.Dispose ();\r
385                 }\r
386 \r
387                 [Test]\r
388                 public void MaskTest ()\r
389                 {\r
390 \r
391                         MaskedTextBox mtb;\r
392 \r
393                         mtb = new MaskedTextBox ();\r
394                         Assert.AreEqual ("", mtb.Mask, "#M1");\r
395                         mtb.Mask = "abc";\r
396                         Assert.AreEqual ("abc", mtb.Mask, "#M2");\r
397                         mtb.Mask = "";\r
398                         Assert.AreEqual ("", mtb.Mask, "#M3");\r
399                         mtb.Mask = null;\r
400                         Assert.AreEqual ("", mtb.Mask, "#M4");\r
401                         mtb.Mask = "";\r
402                         Assert.AreEqual ("", mtb.Mask, "#M5");\r
403                         mtb.Dispose ();\r
404                 }\r
405 \r
406                 [Test]\r
407                 public void LinesTest ()\r
408                 {\r
409 \r
410                         MaskedTextBox mtb;\r
411 \r
412                         mtb = new MaskedTextBox ();\r
413                         Assert.AreEqual (0, mtb.Lines.Length, "#L1");\r
414                         mtb.Text = "abc";\r
415                         Assert.AreEqual (1, mtb.Lines.Length, "#L2");\r
416                         Assert.AreEqual ("abc", mtb.Lines [0], "#L2a");\r
417                         mtb.Text = "abc\nabc";\r
418                         Assert.AreEqual (2, mtb.Lines.Length, "#L3");\r
419                         Assert.AreEqual ("abc", mtb.Lines [0], "#L3a");\r
420                         Assert.AreEqual ("abc", mtb.Lines [1], "#L3b");\r
421                         mtb.Dispose ();\r
422                 }\r
423 \r
424                 [Test]\r
425                 public void IsOverwriteModeTest ()\r
426                 {\r
427 \r
428                         MaskedTextBox mtb;\r
429 \r
430                         mtb = new MaskedTextBox ();\r
431                         Assert.AreEqual (false, mtb.IsOverwriteMode, "#I1");\r
432                         mtb.Dispose ();\r
433                 }\r
434 \r
435                 [Test]\r
436                 public void InsertKeyModeTest ()\r
437                 {\r
438 \r
439                         MaskedTextBox mtb;\r
440 \r
441                         mtb = new MaskedTextBox ();\r
442                         Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I1");\r
443                         mtb.InsertKeyMode = InsertKeyMode.Insert;\r
444                         Assert.AreEqual (InsertKeyMode.Insert, mtb.InsertKeyMode, "#I2");\r
445                         mtb.InsertKeyMode = InsertKeyMode.Overwrite;\r
446                         Assert.AreEqual (InsertKeyMode.Overwrite, mtb.InsertKeyMode, "#I3");\r
447                         mtb.InsertKeyMode = InsertKeyMode.Default;\r
448                         Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I4");\r
449                         mtb.Dispose ();\r
450                 }\r
451 \r
452                 [Test]\r
453                 [ExpectedException (typeof (InvalidEnumArgumentException))]\r
454                 public void InsertKeyModeExceptionTest ()\r
455                 {\r
456 \r
457                         MaskedTextBox mtb;\r
458 \r
459                         mtb = new MaskedTextBox ();\r
460                         mtb.InsertKeyMode = (InsertKeyMode) 123;\r
461                         mtb.Dispose ();\r
462                 }\r
463                 \r
464                 [Test]\r
465                 public void HidePromptOnLeaveTest ()\r
466                 {\r
467 \r
468                         MaskedTextBox mtb;\r
469 \r
470                         mtb = new MaskedTextBox ();\r
471                         Assert.AreEqual (false, mtb.HidePromptOnLeave, "#H1");\r
472                         mtb.HidePromptOnLeave = true;\r
473                         Assert.AreEqual (true, mtb.HidePromptOnLeave, "#H1");\r
474                         mtb.Dispose ();\r
475                 }\r
476                 \r
477                 [Test]\r
478                 public void FormatProviderTest ()\r
479                 {\r
480 \r
481                         MaskedTextBox mtb;\r
482 \r
483                         mtb = new MaskedTextBox ();\r
484                         Assert.IsNull (mtb.FormatProvider, "#F1");\r
485                         mtb.FormatProvider = CultureInfo.CurrentCulture.NumberFormat;\r
486                         Assert.IsNotNull (mtb.FormatProvider, "#F2");\r
487                         Assert.AreSame (CultureInfo.CurrentCulture.NumberFormat, mtb.FormatProvider, "#F3");\r
488                         mtb.Dispose ();\r
489                 }\r
490                 \r
491                 [Test]\r
492                 public void CutCopyMaskFormatTest ()\r
493                 {\r
494 \r
495                         MaskedTextBox mtb;\r
496 \r
497                         mtb = new MaskedTextBox ();\r
498                         Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C1");\r
499                         mtb.CutCopyMaskFormat = MaskFormat.ExcludePromptAndLiterals;\r
500                         Assert.AreEqual (MaskFormat.ExcludePromptAndLiterals, mtb.CutCopyMaskFormat, "#C2");\r
501                         mtb.CutCopyMaskFormat = MaskFormat.IncludeLiterals;\r
502                         Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C3");\r
503                         mtb.CutCopyMaskFormat = MaskFormat.IncludePrompt;\r
504                         Assert.AreEqual (MaskFormat.IncludePrompt, mtb.CutCopyMaskFormat, "#C4");\r
505                         mtb.CutCopyMaskFormat = MaskFormat.IncludePromptAndLiterals;\r
506                         Assert.AreEqual (MaskFormat.IncludePromptAndLiterals, mtb.CutCopyMaskFormat, "#C5");\r
507                         mtb.Dispose ();\r
508                 }\r
509                 \r
510                 [Test]\r
511                 [ExpectedException (typeof (InvalidEnumArgumentException))]\r
512                 public void CutCopyMaskFormatExceptionTest ()\r
513                 {\r
514 \r
515                         MaskedTextBox mtb;\r
516 \r
517                         mtb = new MaskedTextBox ();\r
518                         mtb.CutCopyMaskFormat = (MaskFormat) 123;\r
519                         mtb.Dispose ();\r
520                 }\r
521                 \r
522                 [Test]\r
523                 public void CultureTest ()\r
524                 {\r
525                         MaskedTextBox mtb;\r
526                         MaskedTextProvider mtp;\r
527                         try {\r
528                                 Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");\r
529                                 mtb = new MaskedTextBox ();\r
530                                 Assert.IsNotNull (mtb.Culture, "#A1");\r
531                                 Assert.AreEqual ("en-US", mtb.Culture.Name, "#A2");\r
532                                 mtb.Dispose ();\r
533 \r
534                                 Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("es-ES");\r
535                                 mtb = new MaskedTextBox ();\r
536                                 Assert.IsNotNull (mtb.Culture, "#B1");\r
537                                 Assert.AreEqual ("es-ES", mtb.Culture.Name, "#B2");\r
538                                 mtb.Dispose ();\r
539 \r
540                                 mtp = new MaskedTextProvider ("abc");\r
541                                 Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("es-AR");\r
542                                 mtb = new MaskedTextBox (mtp);\r
543                                 Assert.IsNotNull (mtb.Culture, "#C1");\r
544                                 Assert.AreEqual ("es-ES", mtb.Culture.Name, "#C2");\r
545                                 mtb.Dispose ();\r
546                                 \r
547                                 mtb = new MaskedTextBox ();\r
548                                 mtb.Culture = CultureInfo.GetCultureInfo ("de-DE");\r
549                                 Assert.AreEqual ("de-DE", mtb.Culture.Name, "#D1");\r
550                                 \r
551                         } finally {\r
552                                 Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");\r
553                         }\r
554                 }\r
555                 \r
556                 [Test]\r
557                 public void CanUndoTest ()\r
558                 {\r
559                         MaskedTextBox mtb = new MaskedTextBox ();\r
560                         TextBoxBase tbb = mtb;\r
561                         Assert.AreEqual (false, mtb.CanUndo, "#A1");\r
562                         Assert.AreEqual (false, tbb.CanUndo, "#A2");\r
563                         mtb.Dispose ();\r
564                 }\r
565                 \r
566                 [Test]\r
567                 public void BeepOnErrorTest ()\r
568                 {\r
569                         MaskedTextBox mtb = new MaskedTextBox ();\r
570                         Assert.AreEqual (false, mtb.BeepOnError, "#A1");\r
571                         mtb.BeepOnError = true;\r
572                         Assert.AreEqual (true, mtb.BeepOnError, "#A2");\r
573                         mtb.BeepOnError = false;\r
574                         Assert.AreEqual (false, mtb.BeepOnError, "#A3");\r
575                         mtb.Dispose ();\r
576                 }\r
577 \r
578                 [Test]\r
579                 public void AsciiOnlyTest ()\r
580                 {\r
581                         MaskedTextBox mtb = new MaskedTextBox ();\r
582                         Assert.AreEqual (false, mtb.AsciiOnly, "#A1");\r
583                         mtb.AsciiOnly = true;\r
584                         Assert.AreEqual (true, mtb.AsciiOnly, "#A2");\r
585                         mtb.AsciiOnly = false;\r
586                         Assert.AreEqual (false, mtb.AsciiOnly, "#A3");\r
587                         mtb.Dispose ();\r
588                 }\r
589                 \r
590                 [Test]\r
591                 public void AllowPromptAsInputTest ()\r
592                 {\r
593                         MaskedTextBox mtb = new MaskedTextBox ();\r
594                         Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A1");\r
595                         mtb.AllowPromptAsInput = true;\r
596                         Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A2");\r
597                         mtb.AllowPromptAsInput = false;\r
598                         Assert.AreEqual (false, mtb.AllowPromptAsInput, "#A3");\r
599                         mtb.Dispose ();\r
600                 }\r
601                 \r
602                 [Test]\r
603                 public void AcceptsTabTest ()\r
604                 {\r
605                         MaskedTextBox mtb = new MaskedTextBox ();\r
606                         Assert.AreEqual (false, mtb.AcceptsTab, "#A1");\r
607                         mtb.AcceptsTab = true;\r
608                         Assert.AreEqual (false, mtb.AcceptsTab, "#A2");\r
609                         mtb.AcceptsTab = false;\r
610                         Assert.AreEqual (false, mtb.AcceptsTab, "#A3");\r
611                         mtb.Dispose ();\r
612                 }\r
613                 \r
614                 [Test]\r
615                 public void ConstructorTest ()\r
616                 {\r
617                         using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
618                                 Assert.AreEqual (false, mtb.AcceptsTab, "#A_A1");\r
619                                 Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A_A2");\r
620                                 Assert.AreEqual (false, mtb.AsciiOnly, "#A_A3");\r
621                                 Assert.AreEqual (false, mtb.BeepOnError, "#A_B1");\r
622                                 Assert.AreEqual (false, mtb.CanUndo, "#A_C1");\r
623                                 Assert.IsNotNull (mtb.Culture, "#A_C3");\r
624                                 Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#A_4");\r
625                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#A_C5");\r
626                                 Assert.IsNull (mtb.FormatProvider, "#A_F1");\r
627                                 Assert.AreEqual (false, mtb.HidePromptOnLeave, "#A_H1");\r
628                                 Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#A_I1");\r
629                                 Assert.AreEqual (false, mtb.IsOverwriteMode, "#A_I2");\r
630                                 Assert.AreEqual (0, mtb.Lines.Length, "#A_L1");\r
631                                 Assert.AreEqual ("", mtb.Mask, "#A_M1");\r
632                                 Assert.AreEqual (true, mtb.MaskCompleted, "#A_M2");\r
633                                 Assert.IsNull (mtb.MaskedTextProvider, "#A_M3");\r
634                                 Assert.AreEqual (true, mtb.MaskFull, "#A_M4");\r
635                                 Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#A_M5");\r
636                                 Assert.AreEqual (false, mtb.Multiline, "#A_M6");\r
637                                 Assert.AreEqual ('\0', mtb.PasswordChar, "#A_P1");\r
638                                 Assert.AreEqual ('_', mtb.PromptChar, "#A_P2");\r
639                                 Assert.AreEqual (false, mtb.ReadOnly, "#A_R1");\r
640                                 Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#A_R2");\r
641                                 Assert.AreEqual (true, mtb.ResetOnPrompt, "#A_R3");\r
642                                 Assert.AreEqual (true, mtb.ResetOnSpace, "#A_R4");\r
643                                 Assert.AreEqual ("", mtb.SelectedText, "#A_S1");\r
644                                 Assert.AreEqual (true, mtb.SkipLiterals, "#A_S2");\r
645                                 Assert.AreEqual ("", mtb.Text, "#A_T1");\r
646                                 Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#A_T2");\r
647                                 Assert.AreEqual (0, mtb.TextLength, "#A_T3");\r
648                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#A_T4");\r
649                                 Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#A_U1");\r
650                                 Assert.IsNull (mtb.ValidatingType, "#A_V1");\r
651                                 Assert.AreEqual (false, mtb.WordWrap, "#A_W1");\r
652                         }\r
653 \r
654                         using (MaskedTextBox mtb = new MaskedTextBox ("abc")) {\r
655                                 Assert.AreEqual (false, mtb.AcceptsTab, "#B_A1");\r
656                                 Assert.AreEqual (true, mtb.AllowPromptAsInput, "#B_A2");\r
657                                 Assert.AreEqual (false, mtb.AsciiOnly, "#B_A3");\r
658                                 Assert.AreEqual (false, mtb.BeepOnError, "#B_B1");\r
659                                 Assert.AreEqual (false, mtb.CanUndo, "#B_C1");\r
660                                 Assert.IsNotNull (mtb.Culture, "#B_C3");\r
661                                 Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#B_4");\r
662                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#B_C5");\r
663                                 Assert.IsNull (mtb.FormatProvider, "#B_F1");\r
664                                 Assert.AreEqual (false, mtb.HidePromptOnLeave, "#B_H1");\r
665                                 Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#B_I1");\r
666                                 Assert.AreEqual (false, mtb.IsOverwriteMode, "#B_I2");\r
667                                 Assert.AreEqual (1, mtb.Lines.Length, "#B_L1");\r
668                                 Assert.AreEqual ("abc", mtb.Mask, "#B_M1");\r
669                                 Assert.AreEqual (true, mtb.MaskCompleted, "#B_M2");\r
670                                 Assert.IsNotNull (mtb.MaskedTextProvider, "#B_M3");\r
671                                 Assert.AreEqual (false, mtb.MaskFull, "#B_M4");\r
672                                 Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#B_M5");\r
673                                 Assert.AreEqual (false, mtb.Multiline, "#B_M6");\r
674                                 Assert.AreEqual ('\0', mtb.PasswordChar, "#B_P1");\r
675                                 Assert.AreEqual ('_', mtb.PromptChar, "#B_P2");\r
676                                 Assert.AreEqual (false, mtb.ReadOnly, "#B_R1");\r
677                                 Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#B_R2");\r
678                                 Assert.AreEqual (true, mtb.ResetOnPrompt, "#B_R3");\r
679                                 Assert.AreEqual (true, mtb.ResetOnSpace, "#B_R4");\r
680                                 Assert.AreEqual ("", mtb.SelectedText, "#B_S1");\r
681                                 Assert.AreEqual (true, mtb.SkipLiterals, "#B_S2");\r
682                                 Assert.AreEqual (" bc", mtb.Text, "#B_T1");\r
683                                 Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#B_T2");\r
684                                 Assert.AreEqual (3, mtb.TextLength, "#B_T3");\r
685                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#B_T4");\r
686                                 Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#B_U1");\r
687                                 Assert.IsNull (mtb.ValidatingType, "#B_V1");\r
688                                 Assert.AreEqual (false, mtb.WordWrap, "#B_W1");\r
689                         }\r
690 \r
691                         using (MaskedTextBox mtb = new MaskedTextBox ("<>")) {\r
692                                 Assert.AreEqual (false, mtb.AcceptsTab, "#C_A1");\r
693                                 Assert.AreEqual (true, mtb.AllowPromptAsInput, "#C_A2");\r
694                                 Assert.AreEqual (false, mtb.AsciiOnly, "#C_A3");\r
695                                 Assert.AreEqual (false, mtb.BeepOnError, "#C_B1");\r
696                                 Assert.AreEqual (false, mtb.CanUndo, "#C_C1");\r
697                                 Assert.IsNotNull (mtb.Culture, "#C_C3");\r
698                                 Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#C_4");\r
699                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C_C5");\r
700                                 Assert.IsNull (mtb.FormatProvider, "#C_F1");\r
701                                 Assert.AreEqual (false, mtb.HidePromptOnLeave, "#C_H1");\r
702                                 Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#C_I1");\r
703                                 Assert.AreEqual (false, mtb.IsOverwriteMode, "#C_I2");\r
704                                 Assert.AreEqual (0, mtb.Lines.Length, "#C_L1");\r
705                                 Assert.AreEqual ("<>", mtb.Mask, "#C_M1");\r
706                                 Assert.AreEqual (true, mtb.MaskCompleted, "#C_M2");\r
707                                 Assert.IsNotNull (mtb.MaskedTextProvider, "#C_M3");\r
708                                 Assert.AreEqual (true, mtb.MaskFull, "#C_M4");\r
709                                 Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#C_M5");\r
710                                 Assert.AreEqual (false, mtb.Multiline, "#C_M6");\r
711                                 Assert.AreEqual ('\0', mtb.PasswordChar, "#C_P1");\r
712                                 Assert.AreEqual ('_', mtb.PromptChar, "#C_P2");\r
713                                 Assert.AreEqual (false, mtb.ReadOnly, "#C_R1");\r
714                                 Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#C_R2");\r
715                                 Assert.AreEqual (true, mtb.ResetOnPrompt, "#C_R3");\r
716                                 Assert.AreEqual (true, mtb.ResetOnSpace, "#C_R4");\r
717                                 Assert.AreEqual ("", mtb.SelectedText, "#C_S1");\r
718                                 Assert.AreEqual (true, mtb.SkipLiterals, "#C_S2");\r
719                                 Assert.AreEqual ("", mtb.Text, "#C_T1");\r
720                                 Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#C_T2");\r
721                                 Assert.AreEqual (0, mtb.TextLength, "#C_T3");\r
722                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#C_T4");\r
723                                 Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#C_U1");\r
724                                 Assert.IsNull (mtb.ValidatingType, "#C_V1");\r
725                                 Assert.AreEqual (false, mtb.WordWrap, "#C_W1");\r
726                         }\r
727 \r
728                         using (MaskedTextBox mtb = new MaskedTextBox ("abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890ÑñæøåÆØÅ!\\ºª\"·$%&/()='?¡¿`^+*´¨Çç-_.:,;}{][")) {\r
729                                 Assert.AreEqual (false, mtb.AcceptsTab, "#D_A1");\r
730                                 Assert.AreEqual (true, mtb.AllowPromptAsInput, "#D_A2");\r
731                                 Assert.AreEqual (false, mtb.AsciiOnly, "#D_A3");\r
732                                 Assert.AreEqual (false, mtb.BeepOnError, "#D_B1");\r
733                                 Assert.AreEqual (false, mtb.CanUndo, "#D_C1");\r
734                                 Assert.IsNotNull (mtb.Culture, "#D_C3");\r
735                                 Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#D_4");\r
736                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#D_C5");\r
737                                 Assert.IsNull (mtb.FormatProvider, "#D_F1");\r
738                                 Assert.AreEqual (false, mtb.HidePromptOnLeave, "#D_H1");\r
739                                 Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#D_I1");\r
740                                 Assert.AreEqual (false, mtb.IsOverwriteMode, "#D_I2");\r
741                                 Assert.AreEqual (1, mtb.Lines.Length, "#D_L1");\r
742                                 Assert.AreEqual ("abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890ÑñæøåÆØÅ!\\ºª\"·$%&/()='?¡¿`^+*´¨Çç-_.:,;}{][", mtb.Mask, "#D_M1");\r
743                                 Assert.AreEqual (false, mtb.MaskCompleted, "#D_M2");\r
744                                 Assert.IsNotNull (mtb.MaskedTextProvider, "#D_M3");\r
745                                 Assert.AreEqual (false, mtb.MaskFull, "#D_M4");\r
746                                 Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#D_M5");\r
747                                 Assert.AreEqual (false, mtb.Multiline, "#D_M6");\r
748                                 Assert.AreEqual ('\0', mtb.PasswordChar, "#D_P1");\r
749                                 Assert.AreEqual ('_', mtb.PromptChar, "#D_P2");\r
750                                 Assert.AreEqual (false, mtb.ReadOnly, "#D_R1");\r
751                                 Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#D_R2");\r
752                                 Assert.AreEqual (true, mtb.ResetOnPrompt, "#D_R3");\r
753                                 Assert.AreEqual (true, mtb.ResetOnSpace, "#D_R4");\r
754                                 Assert.AreEqual ("", mtb.SelectedText, "#D_S1");\r
755                                 Assert.AreEqual (true, mtb.SkipLiterals, "#D_S2");\r
756                                 Assert.AreEqual (" bcdefghijklmopqrstuvwxyz B DEFGHIJK MOPQRSTUVWXYZ12345678  ÑñæøåÆØÅ!ºª\"·$% /()=' ¡¿`^+*´¨Çç-_.:,;}{][", mtb.Text, "#D_T1");\r
757                                 Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#D_T2");\r
758                                 Assert.AreEqual (102, mtb.TextLength, "#D_T3");\r
759                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#D_T4");\r
760                                 Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#D_U1");\r
761                                 Assert.IsNull (mtb.ValidatingType, "#D_V1");\r
762                                 Assert.AreEqual (false, mtb.WordWrap, "#D_W1");\r
763                         }\r
764 \r
765                         MaskedTextProvider mtp = new MaskedTextProvider ("abcd", CultureInfo.GetCultureInfo ("es-AR"), false, '>', '^', false);\r
766                         using (MaskedTextBox mtb = new MaskedTextBox (mtp)) {\r
767                                 Assert.AreEqual (false, mtb.AcceptsTab, "#E_A1");\r
768                                 Assert.AreEqual (false, mtb.AllowPromptAsInput, "#E_A2");\r
769                                 Assert.AreEqual (false, mtb.AsciiOnly, "#E_A3");\r
770                                 Assert.AreEqual (false, mtb.BeepOnError, "#E_B1");\r
771                                 Assert.AreEqual (false, mtb.CanUndo, "#E_C1");\r
772                                 Assert.IsNotNull (mtb.Culture, "#E_C3");\r
773                                 Assert.AreEqual ("es-AR", mtb.Culture.Name, "#E_4");\r
774                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#E_C5");\r
775                                 Assert.IsNull (mtb.FormatProvider, "#E_F1");\r
776                                 Assert.AreEqual (false, mtb.HidePromptOnLeave, "#E_H1");\r
777                                 Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#E_I1");\r
778                                 Assert.AreEqual (false, mtb.IsOverwriteMode, "#E_I2");\r
779                                 Assert.AreEqual (1, mtb.Lines.Length, "#E_L1");\r
780                                 Assert.AreEqual ("abcd", mtb.Mask, "#E_M1");\r
781                                 Assert.AreEqual (true, mtb.MaskCompleted, "#E_M2");\r
782                                 Assert.IsNotNull (mtb.MaskedTextProvider, "#E_M3");\r
783                                 Assert.IsFalse (mtb.MaskedTextProvider == mtp, "#E_M3-b");\r
784                                 Assert.AreEqual (false, mtb.MaskFull, "#E_M4");\r
785                                 Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#E_M5");\r
786                                 Assert.AreEqual (false, mtb.Multiline, "#E_M6");\r
787                                 Assert.AreEqual ('^', mtb.PasswordChar, "#E_P1");\r
788                                 Assert.AreEqual ('>', mtb.PromptChar, "#E_P2");\r
789                                 Assert.AreEqual (false, mtb.ReadOnly, "#E_R1");\r
790                                 Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#E_R2");\r
791                                 Assert.AreEqual (true, mtb.ResetOnPrompt, "#E_R3");\r
792                                 Assert.AreEqual (true, mtb.ResetOnSpace, "#E_R4");\r
793                                 Assert.AreEqual ("", mtb.SelectedText, "#E_S1");\r
794                                 Assert.AreEqual (true, mtb.SkipLiterals, "#E_S2");\r
795                                 Assert.AreEqual (" bcd", mtb.Text, "#E_T1");\r
796                                 Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#E_T2");\r
797                                 Assert.AreEqual (4, mtb.TextLength, "#E_T3");\r
798                                 Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#E_T4");\r
799                                 Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#E_U1");\r
800                                 Assert.IsNull (mtb.ValidatingType, "#E_V1");\r
801                                 Assert.AreEqual (false, mtb.WordWrap, "#E_W1");\r
802                         }\r
803                         \r
804                 }\r
805                 \r
806                 [Test]\r
807                 public void UndoTest ()\r
808                 {\r
809                         MaskedTextBox mtb;\r
810                         \r
811                         mtb = new MaskedTextBox ();\r
812                         mtb.Text = "abcdef";\r
813                         Assert.AreEqual (false, mtb.CanUndo, "#A0-c");\r
814                         mtb.Undo ();\r
815                         Assert.AreEqual ("abcdef", mtb.Text, "#A1");\r
816                         Assert.AreEqual (false, mtb.CanUndo, "#A1-c");\r
817                         mtb.Text = "cdef";\r
818                         mtb.ClearUndo ();\r
819                         Assert.AreEqual ("cdef", mtb.Text, "#A2");\r
820                         Assert.AreEqual (false, mtb.CanUndo, "#A2-c");\r
821                         \r
822                         mtb.Dispose ();\r
823                 }\r
824                 \r
825                 [Test]\r
826                 public void CreateHandleTest ()\r
827                 {\r
828                         using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
829                                 Assert.AreEqual (false, mtb.IsHandleCreated, "#A1");\r
830                                 typeof (MaskedTextBox).GetMethod ("CreateHandle", global::System.Reflection.BindingFlags.Instance | global::System.Reflection.BindingFlags.NonPublic).Invoke (mtb, new object [] { });\r
831                                 Assert.AreEqual (true, mtb.IsHandleCreated, "#A2");\r
832                         }\r
833                 }\r
834                 \r
835                 [Test]\r
836                 public void GetFirstCharIndexFromLineTest ()\r
837                 {\r
838                         using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
839                                 for (int i = -100; i < 100; i++) { \r
840                                         Assert.AreEqual (0, mtb.GetFirstCharIndexFromLine (i), "#A" + i.ToString ());\r
841                                 }\r
842                                 mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";\r
843                                 for (int i = -100; i < 100; i++) {\r
844                                         Assert.AreEqual (0, mtb.GetFirstCharIndexFromLine (i), "#B" + i.ToString ());\r
845                                 }\r
846                         }\r
847                 }\r
848 \r
849 \r
850                 [Test]\r
851                 public void GetFirstCharIndexOfCurrentLineTest ()\r
852                 {\r
853                         using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
854                                 Assert.AreEqual (0, mtb.GetFirstCharIndexOfCurrentLine (), "#A1");\r
855                                 mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";\r
856                                 Assert.AreEqual (0, mtb.GetFirstCharIndexOfCurrentLine (), "#B1");\r
857                         }\r
858                 }\r
859 \r
860                 [Test]\r
861                 public void GetLineFromCharIndexTest ()\r
862                 {\r
863                         using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
864                                 for (int i = -100; i < 100; i++) {\r
865                                         Assert.AreEqual (0, mtb.GetLineFromCharIndex (i), "#A" + i.ToString ());\r
866                                 }\r
867                                 mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";\r
868                                 for (int i = -100; i < 100; i++) {\r
869                                         Assert.AreEqual (0, mtb.GetLineFromCharIndex (i), "#B" + i.ToString ());\r
870                                 }\r
871                         }\r
872                 }\r
873                 \r
874                 [Test]\r
875                 public void IsInputKeyTest ()\r
876                 {\r
877                         using (Form f = new Form ()) {\r
878                         using (MaskedTextBox mtb = new MaskedTextBox ()) {\r
879                                 f.Controls.Add (mtb);\r
880                                 f.Show ();\r
881                                 MethodInfo IsInputKey = typeof (MaskedTextBox).GetMethod ("IsInputKey", global::System.Reflection.BindingFlags.NonPublic | global::System.Reflection.BindingFlags.Instance);\r
882                                 \r
883                                 for (int i = 0; i <= 0xFF; i++) {\r
884                                         Keys key = (Keys) i;\r
885                                         Keys key_ALT = key | Keys.Alt;\r
886                                         Keys key_SHIFT = key | Keys.Shift;\r
887                                         Keys key_CTRL = key | Keys.Control;\r
888                                         Keys key_ALT_SHIFT = key | Keys.Alt | Keys.Shift;\r
889                                         Keys key_ALT_CTRL = key | Keys.Alt | Keys.Control;\r
890                                         Keys key_SHIFT_CTLR = key | Keys.Shift | Keys.Control;\r
891                                         Keys key_ALT_SHIFT_CTLR = key | Keys.Alt | Keys.Shift | Keys.Control;\r
892 \r
893                                         bool is_input = false;\r
894                                         \r
895                                         switch (key) {\r
896                                         case Keys.PageDown:\r
897                                         case Keys.PageUp:\r
898                                         case Keys.End:\r
899                                         case Keys.Home:\r
900                                         case Keys.Left:\r
901                                         case Keys.Right:\r
902                                         case Keys.Up:\r
903                                         case Keys.Down:\r
904                                                 is_input = true;\r
905                                                 break;\r
906                                         }\r
907 \r
908                                         Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key }));\r
909                                         Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT }));\r
910                                         Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_SHIFT }));\r
911                                         Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_CTRL }));\r
912                                         Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_SHIFT }));\r
913                                         Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_CTRL }));\r
914                                         Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_SHIFT_CTLR }));\r
915                                         Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_SHIFT_CTLR }));\r
916                                 }\r
917                         }\r
918                         }\r
919                 }\r
920                 \r
921                 [Test]\r
922                 public void ValidateTextTest ()\r
923                 {\r
924                         Assert.Ignore ("Pending implementation");\r
925                 }\r
926                 \r
927                 [Test]\r
928                 public void ToStringTest ()\r
929                 {\r
930                         Assert.Ignore ("Pending implementation");\r
931                 }\r
932         }\r
933 }\r
934 \r
935 #endif