TextBoxTest.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. //
  2. // Copyright (c) 2005 Novell, Inc.
  3. //
  4. // Authors:
  5. // Ritvik Mayank ([email protected])
  6. //
  7. using System;
  8. using System.ComponentModel;
  9. using System.Drawing;
  10. using System.Reflection;
  11. using System.Windows.Forms;
  12. using NUnit.Framework;
  13. using CategoryAttribute = NUnit.Framework.CategoryAttribute;
  14. namespace MonoTests.System.Windows.Forms
  15. {
  16. [TestFixture]
  17. public class TextBoxTest
  18. {
  19. TextBox textBox;
  20. int _invalidated;
  21. int _paint;
  22. [SetUp]
  23. public void SetUp()
  24. {
  25. textBox = new TextBox();
  26. textBox.Invalidated += new InvalidateEventHandler (TextBox_Invalidated);
  27. textBox.Paint += new PaintEventHandler (TextBox_Paint);
  28. Reset ();
  29. }
  30. [Test]
  31. [Category ("NotWorking")]
  32. public void TextBoxBasePropertyTest ()
  33. {
  34. Assert.AreEqual (false, textBox.AcceptsTab, "#1a");
  35. textBox.Multiline = true;
  36. textBox.AcceptsTab = true;
  37. // SendKeys.SendWait ("^%");
  38. Assert.AreEqual (true, textBox.AcceptsTab, "#1b");
  39. Assert.AreEqual (true, textBox.AutoSize, "#2");
  40. Assert.AreEqual (null, textBox.BackgroundImage, "#4a");
  41. string gif = "M.gif";
  42. textBox.BackgroundImage = Image.FromFile (gif);
  43. // comparing image objects fails on MS .Net so using Size property
  44. Assert.AreEqual (Image.FromFile(gif, true).Size, textBox.BackgroundImage.Size, "#4b");
  45. Assert.AreEqual (BorderStyle.Fixed3D, textBox.BorderStyle, "#5");
  46. Assert.AreEqual (false, textBox.CanUndo, "#6a");
  47. Clipboard.SetDataObject ("TEST");
  48. textBox.Paste ();
  49. Assert.AreEqual (true, textBox.CanUndo, "#6b");
  50. textBox.Undo ();
  51. textBox.ClearUndo ();
  52. Assert.AreEqual (false, textBox.CanUndo, "#6c");
  53. Assert.AreEqual (true, textBox.HideSelection, "#8");
  54. Assert.AreEqual (0, textBox.Lines.Length, "#9");
  55. Assert.AreEqual (32767, textBox.MaxLength, "#10");
  56. Assert.AreEqual (true, textBox.Modified, "#11");
  57. Assert.AreEqual (true, textBox.Multiline, "#12a");
  58. textBox.WordWrap = false;
  59. Assert.AreEqual (true, textBox.Multiline, "#12b");
  60. textBox.AcceptsReturn = true;
  61. Assert.AreEqual (true, textBox.Multiline, "#12c");
  62. Assert.AreEqual (20, textBox.PreferredHeight, "#13");
  63. Assert.AreEqual (false, textBox.ReadOnly, "#14");
  64. Assert.AreEqual ("", textBox.SelectedText, "#15");
  65. textBox.Text = "sample TextBox";
  66. Assert.AreEqual (0, textBox.SelectionLength, "#16b");
  67. Assert.AreEqual (0, textBox.SelectionStart, "#17");
  68. textBox.WordWrap = false;
  69. textBox.AcceptsReturn = true;
  70. Assert.AreEqual ("sample TextBox", textBox.Text, "#18");
  71. Assert.AreEqual (14, textBox.TextLength, "#19");
  72. Assert.AreEqual (false, textBox.WordWrap, "#20");
  73. }
  74. [Test]
  75. public void TextBoxPropertyTest ()
  76. {
  77. Assert.AreEqual (false, textBox.AcceptsReturn, "#21");
  78. Assert.AreEqual (CharacterCasing.Normal, textBox.CharacterCasing, "#22");
  79. Assert.AreEqual ('\0', textBox.PasswordChar, "#23");
  80. textBox.PasswordChar = '*';
  81. Assert.AreEqual ('*', textBox.PasswordChar, "#23b");
  82. Assert.AreEqual (ScrollBars.None, textBox.ScrollBars, "#24");
  83. Assert.AreEqual (-1, textBox.SelectionLength, "#25");
  84. Assert.AreEqual (HorizontalAlignment.Left , textBox.TextAlign, "#26");
  85. #if NET_2_0
  86. Assert.AreEqual (true, textBox.AutoCompleteCustomSource != null, "#27");
  87. Assert.AreEqual (AutoCompleteMode.None, textBox.AutoCompleteMode, "#28");
  88. Assert.AreEqual (AutoCompleteSource.None, textBox.AutoCompleteSource, "#29");
  89. textBox.AutoCompleteCustomSource = null;
  90. Assert.AreEqual (true, textBox.AutoCompleteCustomSource != null, "#30");
  91. #endif
  92. }
  93. #if NET_2_0
  94. [Test]
  95. public void UseSystemPasswordCharDefault()
  96. {
  97. Assert.IsFalse(textBox.UseSystemPasswordChar);
  98. }
  99. [Test]
  100. public void UseSystemPasswordCharOverridesPasswordChar()
  101. {
  102. textBox.PasswordChar = '!';
  103. textBox.UseSystemPasswordChar = true;
  104. Assert.AreEqual('*', textBox.PasswordChar);
  105. }
  106. #endif
  107. [Test]
  108. public void AppendTextTest ()
  109. {
  110. Form f = new Form ();
  111. f.ShowInTaskbar = false;
  112. f.Visible = true;
  113. textBox.Visible = true;
  114. textBox.Text = "TextBox1";
  115. TextBox textBox2 = new TextBox ();
  116. textBox2.Visible = true;
  117. f.Controls.Add (textBox);
  118. f.Controls.Add (textBox2);
  119. textBox2.AppendText (textBox.Text);
  120. Assert.AreEqual ("TextBox1", textBox2.Text, "#27");
  121. f.Dispose ();
  122. }
  123. [Test]
  124. public void AppendTextTest2 ()
  125. {
  126. TextBox textBox2 = new TextBox ();
  127. textBox2.AppendText ("hi");
  128. textBox2.AppendText ("ho");
  129. Assert.AreEqual ("hiho", textBox2.Text, "#1");
  130. Assert.IsNotNull (textBox2.Lines, "#2");
  131. Assert.AreEqual (1, textBox2.Lines.Length, "#3");
  132. Assert.AreEqual ("hiho", textBox2.Lines [0], "#4");
  133. }
  134. [Test]
  135. public void AppendText_Multiline_CRLF ()
  136. {
  137. TextBox textBox = new TextBox ();
  138. textBox.Text = "ha";
  139. textBox.AppendText ("hi\r\n\r\n");
  140. textBox.AppendText ("ho\r\n");
  141. Assert.AreEqual ("hahi\r\n\r\nho\r\n", textBox.Text, "#A1");
  142. Assert.IsNotNull (textBox.Lines, "#A2");
  143. Assert.AreEqual (4, textBox.Lines.Length, "#A3");
  144. Assert.AreEqual ("hahi", textBox.Lines [0], "#A4");
  145. Assert.AreEqual (string.Empty, textBox.Lines [1], "#A5");
  146. Assert.AreEqual ("ho", textBox.Lines [2], "#A6");
  147. Assert.AreEqual (string.Empty, textBox.Lines [3], "#A7");
  148. textBox.Multiline = true;
  149. textBox.Text = "ha";
  150. textBox.AppendText ("hi\r\n\r\n");
  151. textBox.AppendText ("ho\r\n");
  152. Assert.AreEqual ("hahi\r\n\r\nho\r\n", textBox.Text, "#B1");
  153. Assert.IsNotNull (textBox.Lines, "#B2");
  154. Assert.AreEqual (4, textBox.Lines.Length, "#B3");
  155. Assert.AreEqual ("hahi", textBox.Lines [0], "#B4");
  156. Assert.AreEqual (string.Empty, textBox.Lines [1], "#B5");
  157. Assert.AreEqual ("ho", textBox.Lines [2], "#B6");
  158. Assert.AreEqual (string.Empty, textBox.Lines [3], "#B7");
  159. }
  160. [Test]
  161. public void AppendText_Multiline_LF ()
  162. {
  163. TextBox textBox = new TextBox ();
  164. textBox.Text = "ha";
  165. textBox.AppendText ("hi\n\n");
  166. textBox.AppendText ("ho\n");
  167. Assert.AreEqual ("hahi\n\nho\n", textBox.Text, "#A1");
  168. Assert.IsNotNull (textBox.Lines, "#A2");
  169. Assert.AreEqual (4, textBox.Lines.Length, "#A3");
  170. Assert.AreEqual ("hahi", textBox.Lines [0], "#A4");
  171. Assert.AreEqual (string.Empty, textBox.Lines [1], "#A5");
  172. Assert.AreEqual ("ho", textBox.Lines [2], "#A6");
  173. Assert.AreEqual (string.Empty, textBox.Lines [3], "#A7");
  174. textBox.Multiline = true;
  175. textBox.Text = "ha";
  176. textBox.AppendText ("hi\n\n");
  177. textBox.AppendText ("ho\n");
  178. Assert.AreEqual ("hahi\n\nho\n", textBox.Text, "#B1");
  179. Assert.IsNotNull (textBox.Lines, "#B2");
  180. Assert.AreEqual (4, textBox.Lines.Length, "#B3");
  181. Assert.AreEqual ("hahi", textBox.Lines [0], "#B4");
  182. Assert.AreEqual (string.Empty, textBox.Lines [1], "#B5");
  183. Assert.AreEqual ("ho", textBox.Lines [2], "#B6");
  184. Assert.AreEqual (string.Empty, textBox.Lines [3], "#B7");
  185. }
  186. [Test]
  187. public void BackColorTest ()
  188. {
  189. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#A1");
  190. textBox.BackColor = Color.Red;
  191. Assert.AreEqual (Color.Red, textBox.BackColor, "#A2");
  192. textBox.BackColor = Color.White;
  193. Assert.AreEqual (Color.White, textBox.BackColor, "#A3");
  194. Assert.AreEqual (0, _invalidated, "#A4");
  195. Assert.AreEqual (0, _paint, "#A5");
  196. Form form = new Form ();
  197. form.ShowInTaskbar = false;
  198. form.Controls.Add (textBox);
  199. form.Show ();
  200. _invalidated = 0;
  201. _paint = 0;
  202. Assert.AreEqual (Color.White, textBox.BackColor, "#B1");
  203. Assert.AreEqual (0, _invalidated, "#B2");
  204. Assert.AreEqual (0, _paint, "#B3");
  205. textBox.BackColor = Color.Red;
  206. Assert.AreEqual (Color.Red, textBox.BackColor, "#B4");
  207. Assert.AreEqual (1, _invalidated, "#B5");
  208. Assert.AreEqual (0, _paint, "#B6");
  209. textBox.BackColor = Color.Red;
  210. Assert.AreEqual (Color.Red, textBox.BackColor, "#B7");
  211. Assert.AreEqual (1, _invalidated, "#B8");
  212. Assert.AreEqual (0, _paint, "#B9");
  213. textBox.BackColor = Color.Blue;
  214. Assert.AreEqual (Color.Blue, textBox.BackColor, "#B10");
  215. Assert.AreEqual (2, _invalidated, "#B11");
  216. Assert.AreEqual (0, _paint, "#B12");
  217. textBox.BackColor = Color.Empty;
  218. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#B13");
  219. Assert.AreEqual (3, _invalidated, "#B14");
  220. Assert.AreEqual (0, _paint, "#B15");
  221. form.Close ();
  222. }
  223. [Test] // bug #80626
  224. public void BorderStyle_None ()
  225. {
  226. textBox.BorderStyle = BorderStyle.None;
  227. Assert.AreEqual (20, textBox.Height, "#1");
  228. textBox.CreateControl ();
  229. Assert.AreEqual (13, textBox.Height, "#2");
  230. }
  231. [Test]
  232. public void ClearTest ()
  233. {
  234. textBox.Text = "TextBox1";
  235. Assert.AreEqual ("TextBox1", textBox.Text, "#28a" );
  236. textBox.Clear ();
  237. Assert.AreEqual ("", textBox.Text, "#28b");
  238. }
  239. [Test]
  240. public void ClearUndoTest ()
  241. {
  242. textBox.Text = "TextBox1";
  243. textBox.SelectionLength = 4;
  244. textBox.Copy ();
  245. Assert.AreEqual ("Text", textBox.SelectedText, "#29a");
  246. textBox.Paste ();
  247. Assert.AreEqual (true, textBox.CanUndo, "#29b");
  248. textBox.ClearUndo ();
  249. Assert.AreEqual (false, textBox.CanUndo, "#29c");
  250. }
  251. [Test] // bug #80620
  252. public void ClientRectangle_Borders ()
  253. {
  254. textBox.CreateControl ();
  255. Assert.AreEqual (textBox.ClientRectangle, new TextBox ().ClientRectangle);
  256. }
  257. [Test] // bug #80163
  258. public void ContextMenu ()
  259. {
  260. TextBox textBox = new TextBox ();
  261. Assert.IsNull (textBox.ContextMenu);
  262. }
  263. [Test]
  264. public void CopyTest ()
  265. {
  266. textBox.Text = "ABCDE";
  267. textBox.SelectionLength = 4;
  268. textBox.Copy ();
  269. Assert.AreEqual ("ABCD", textBox.SelectedText, "#30");
  270. }
  271. [Test]
  272. public void CutTest ()
  273. {
  274. textBox.Text = "ABCDE";
  275. textBox.SelectionLength = 4;
  276. textBox.Cut ();
  277. Assert.AreEqual ("E", textBox.Text, "#31");
  278. }
  279. [Test]
  280. public void PasteTest ()
  281. {
  282. textBox.Text = "ABCDE";
  283. textBox.SelectionLength = 4;
  284. textBox.Copy ();
  285. textBox.SelectionStart = textBox.SelectionStart + textBox.SelectionLength;
  286. textBox.Paste ();
  287. Assert.AreEqual ("ABCDABCD", textBox.Text, "#32");
  288. }
  289. [Test] // bug #80301
  290. [Ignore ("Depends on specific DPI")]
  291. public void PreferredHeight ()
  292. {
  293. textBox.Font = new Font ("Arial", 14);
  294. Assert.AreEqual (29, textBox.PreferredHeight, "#A1");
  295. textBox.Font = new Font ("Arial", 16);
  296. Assert.AreEqual (32, textBox.PreferredHeight, "#A2");
  297. textBox.Font = new Font ("Arial", 17);
  298. Assert.AreEqual (34, textBox.PreferredHeight, "#A3");
  299. textBox.BorderStyle = BorderStyle.None;
  300. Assert.AreEqual (27, textBox.PreferredHeight, "#B1");
  301. textBox.Font = new Font ("Arial", 14);
  302. Assert.AreEqual (22, textBox.PreferredHeight, "#B2");
  303. textBox.Font = new Font ("Arial", 16);
  304. Assert.AreEqual (25, textBox.PreferredHeight, "#B3");
  305. }
  306. [Test]
  307. public void SelectTest ()
  308. {
  309. textBox.Text = "This is a sample test.";
  310. textBox.Select (0, 4);
  311. Assert.AreEqual ("This", textBox.SelectedText, "#33");
  312. }
  313. [Test]
  314. public void SelectAllTest ()
  315. {
  316. textBox.Text = "This is a sample test.";
  317. textBox.SelectAll ();
  318. Assert.AreEqual ("This is a sample test.", textBox.SelectedText, "#34");
  319. }
  320. [Test]
  321. [Category ("NotWorking")]
  322. public void FocusSelectsAllTest ()
  323. {
  324. Form form = new Form ();
  325. form.ShowInTaskbar = false;
  326. TextBox textBoxA = new TextBox ();
  327. textBoxA.Text = "This is a sample testA.";
  328. textBoxA.TabIndex = 0;
  329. form.Controls.Add (textBoxA);
  330. TextBox textBoxB = new TextBox ();
  331. textBoxB.Text = "This is a sample testB.";
  332. textBoxB.TabIndex = 1;
  333. form.Controls.Add (textBoxB);
  334. #if NET_2_0
  335. Assert.AreEqual (String.Empty, textBoxA.SelectedText, "#A1 (2.0)");
  336. Assert.AreEqual (String.Empty, textBoxB.SelectedText, "#A2 (2.0)");
  337. #else
  338. Assert.IsNull (textBoxA.SelectedText, "#A1");
  339. Assert.IsNull (textBoxB.SelectedText, "#A2");
  340. #endif
  341. form.Show ();
  342. textBoxA.Focus ();
  343. Assert.AreEqual ("This is a sample testA.", textBoxA.SelectedText, "#B1");
  344. Assert.AreEqual (string.Empty, textBoxB.SelectedText, "#B2");
  345. textBoxB.Focus ();
  346. Assert.AreEqual ("This is a sample testA.", textBoxA.SelectedText, "#C1");
  347. Assert.AreEqual ("This is a sample testB.", textBoxB.SelectedText, "#C2");
  348. textBoxA.Text = "another testA.";
  349. textBoxB.Text = "another testB.";
  350. Assert.AreEqual (string.Empty, textBoxA.SelectedText, "#D1");
  351. Assert.AreEqual (string.Empty, textBoxB.SelectedText, "#D2");
  352. textBoxA.Focus ();
  353. Assert.AreEqual ("another testA.", textBoxA.SelectedText, "#E1");
  354. Assert.AreEqual (string.Empty, textBoxB.SelectedText, "#E2");
  355. textBoxB.Focus ();
  356. Assert.AreEqual ("another testA.", textBoxA.SelectedText, "#F1");
  357. Assert.AreEqual ("another testB.", textBoxB.SelectedText, "#F2");
  358. form.Dispose ();
  359. }
  360. [Test]
  361. [Category ("NotWorking")]
  362. public void ForeColorTest ()
  363. {
  364. Assert.AreEqual (SystemColors.WindowText, textBox.ForeColor, "#A1");
  365. textBox.ForeColor = Color.Red;
  366. Assert.AreEqual (Color.Red, textBox.ForeColor, "#A2");
  367. textBox.ForeColor = Color.White;
  368. Assert.AreEqual (Color.White, textBox.ForeColor, "#A3");
  369. Assert.AreEqual (0, _invalidated, "#A4");
  370. Assert.AreEqual (0, _paint, "#A5");
  371. Form form = new Form ();
  372. form.ShowInTaskbar = false;
  373. form.Controls.Add (textBox);
  374. form.Show ();
  375. Assert.AreEqual (Color.White, textBox.ForeColor, "#B1");
  376. Assert.AreEqual (0, _invalidated, "#B2");
  377. Assert.AreEqual (0, _paint, "#B3");
  378. textBox.ForeColor = Color.Red;
  379. Assert.AreEqual (Color.Red, textBox.ForeColor, "#B4");
  380. Assert.AreEqual (1, _invalidated, "#B5");
  381. Assert.AreEqual (0, _paint, "#B6");
  382. textBox.ForeColor = Color.Red;
  383. Assert.AreEqual (Color.Red, textBox.ForeColor, "#B7");
  384. Assert.AreEqual (1, _invalidated, "#B8");
  385. Assert.AreEqual (0, _paint, "#B9");
  386. textBox.ForeColor = Color.Blue;
  387. Assert.AreEqual (Color.Blue, textBox.ForeColor, "#B10");
  388. Assert.AreEqual (2, _invalidated, "#B11");
  389. Assert.AreEqual (0, _paint, "#B12");
  390. }
  391. [Test]
  392. public void ReadOnly_BackColor_NotSet ()
  393. {
  394. textBox.ReadOnly = true;
  395. Assert.IsTrue (textBox.ReadOnly, "#A1");
  396. #if NET_2_0
  397. Assert.AreEqual (SystemColors.Control, textBox.BackColor, "#A2");
  398. #else
  399. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#A2");
  400. #endif
  401. Form form = new Form ();
  402. form.ShowInTaskbar = false;
  403. form.Controls.Add (textBox);
  404. form.Show ();
  405. Assert.IsTrue (textBox.ReadOnly, "#B1");
  406. #if NET_2_0
  407. Assert.AreEqual (SystemColors.Control, textBox.BackColor, "#B2");
  408. #else
  409. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#B2");
  410. #endif
  411. textBox.ResetBackColor ();
  412. Assert.IsTrue (textBox.ReadOnly, "#C1");
  413. #if NET_2_0
  414. Assert.AreEqual (SystemColors.Control, textBox.BackColor, "#C2");
  415. #else
  416. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#C2");
  417. #endif
  418. textBox.ReadOnly = false;
  419. Assert.IsFalse (textBox.ReadOnly, "#D1");
  420. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#D2");
  421. textBox.ReadOnly = true;
  422. Assert.IsTrue (textBox.ReadOnly, "#E1");
  423. #if NET_2_0
  424. Assert.AreEqual (SystemColors.Control, textBox.BackColor, "#E2");
  425. #else
  426. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#E2");
  427. #endif
  428. textBox.BackColor = Color.Red;
  429. Assert.IsTrue (textBox.ReadOnly, "#F1");
  430. Assert.AreEqual (Color.Red, textBox.BackColor, "#F2");
  431. textBox.ReadOnly = false;
  432. Assert.IsFalse (textBox.ReadOnly, "#G1");
  433. Assert.AreEqual (Color.Red, textBox.BackColor, "#G2");
  434. textBox.ReadOnly = true;
  435. Assert.IsTrue (textBox.ReadOnly, "#H1");
  436. Assert.AreEqual (Color.Red, textBox.BackColor, "#H2");
  437. textBox.ResetBackColor ();
  438. Assert.IsTrue (textBox.ReadOnly, "#I1");
  439. #if NET_2_0
  440. Assert.AreEqual (SystemColors.Control, textBox.BackColor, "#I2");
  441. #else
  442. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#I2");
  443. #endif
  444. form.Close ();
  445. }
  446. [Test]
  447. public void ReadOnly_BackColor_Set ()
  448. {
  449. textBox.BackColor = Color.Blue;
  450. textBox.ReadOnly = true;
  451. Assert.IsTrue (textBox.ReadOnly, "#A1");
  452. Assert.AreEqual (Color.Blue, textBox.BackColor, "#A2");
  453. Form form = new Form ();
  454. form.ShowInTaskbar = false;
  455. form.Controls.Add (textBox);
  456. form.Show ();
  457. Assert.IsTrue (textBox.ReadOnly, "#B1");
  458. Assert.AreEqual (Color.Blue, textBox.BackColor, "#B2");
  459. textBox.ReadOnly = false;
  460. Assert.IsFalse (textBox.ReadOnly, "#C1");
  461. Assert.AreEqual (Color.Blue, textBox.BackColor, "#C2");
  462. textBox.ReadOnly = true;
  463. Assert.IsTrue (textBox.ReadOnly, "#D1");
  464. Assert.AreEqual (Color.Blue, textBox.BackColor, "#D2");
  465. textBox.BackColor = Color.Red;
  466. Assert.IsTrue (textBox.ReadOnly, "#E1");
  467. Assert.AreEqual (Color.Red, textBox.BackColor, "#E2");
  468. textBox.ReadOnly = false;
  469. Assert.IsFalse (textBox.ReadOnly, "#F1");
  470. Assert.AreEqual (Color.Red, textBox.BackColor, "#F2");
  471. textBox.ReadOnly = true;
  472. textBox.ResetBackColor ();
  473. Assert.IsTrue (textBox.ReadOnly, "#G1");
  474. #if NET_2_0
  475. Assert.AreEqual (SystemColors.Control, textBox.BackColor, "#G2");
  476. #else
  477. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#G2");
  478. #endif
  479. form.Dispose ();
  480. textBox = new TextBox ();
  481. textBox.ReadOnly = true;
  482. textBox.BackColor = Color.Blue;
  483. Assert.IsTrue (textBox.ReadOnly, "#H1");
  484. Assert.AreEqual (Color.Blue, textBox.BackColor, "#H2");
  485. form = new Form ();
  486. form.ShowInTaskbar = false;
  487. form.Controls.Add (textBox);
  488. form.Show ();
  489. Assert.IsTrue (textBox.ReadOnly, "#I1");
  490. Assert.AreEqual (Color.Blue, textBox.BackColor, "#I2");
  491. textBox.ReadOnly = false;
  492. Assert.IsFalse (textBox.ReadOnly, "#J1");
  493. Assert.AreEqual (Color.Blue, textBox.BackColor, "#J2");
  494. textBox.ResetBackColor ();
  495. Assert.IsFalse (textBox.ReadOnly, "#K1");
  496. Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#K2");
  497. form.Close ();
  498. }
  499. [Test]
  500. public void ScrollBarsTest ()
  501. {
  502. Assert.AreEqual (ScrollBars.None, textBox.ScrollBars, "#1");
  503. textBox.ScrollBars = ScrollBars.Vertical;
  504. Assert.AreEqual (ScrollBars.Vertical, textBox.ScrollBars, "#2");
  505. }
  506. [Test]
  507. [ExpectedException (typeof (InvalidEnumArgumentException))]
  508. public void ScrollBars_Invalid ()
  509. {
  510. textBox.ScrollBars = (ScrollBars) 666;
  511. }
  512. [Test]
  513. public void ToStringTest ()
  514. {
  515. Assert.AreEqual ("System.Windows.Forms.TextBox, Text: ", textBox.ToString(), "#35");
  516. }
  517. [Test]
  518. public void UndoTest1 ()
  519. {
  520. textBox.Text = "ABCDE";
  521. textBox.SelectionLength = 4;
  522. textBox.Copy ();
  523. textBox.SelectionStart = textBox.SelectionStart + textBox.SelectionLength;
  524. textBox.Paste ();
  525. Console.WriteLine ("pre paste text: {0}", textBox.Text);
  526. textBox.Undo ();
  527. Assert.AreEqual ("ABCDE", textBox.Text, "#36");
  528. }
  529. [Test] // bug #79851
  530. public void WrappedText ()
  531. {
  532. string text = "blabla blablabalbalbalbalbalbal blabla blablabl bal " +
  533. "bal bla bal balajkdhfk dskfk ersd dsfjksdhf sdkfjshd f";
  534. textBox.Multiline = true;
  535. textBox.Size = new Size (30, 168);
  536. textBox.Text = text;
  537. Form form = new Form ();
  538. form.Controls.Add (textBox);
  539. form.ShowInTaskbar = false;
  540. form.Show ();
  541. Assert.AreEqual (text, textBox.Text);
  542. form.Close ();
  543. }
  544. [Test] // bug #79909
  545. public void MultilineText ()
  546. {
  547. string text = "line1\n\nline2\nline3\r\nline4";
  548. textBox.Size = new Size (300, 168);
  549. textBox.Text = text;
  550. Form form = new Form ();
  551. form.Controls.Add (textBox);
  552. form.ShowInTaskbar = false;
  553. form.Show ();
  554. Assert.AreEqual (text, textBox.Text, "#1");
  555. text = "line1\n\nline2\nline3\r\nline4\rline5\r\n\nline6\n\n\nline7";
  556. textBox.Text = text;
  557. form.Visible = false;
  558. form.Show ();
  559. Assert.AreEqual (text, textBox.Text, "#2");
  560. form.Close ();
  561. }
  562. [Test]
  563. public void ModifiedTest ()
  564. {
  565. Assert.AreEqual (true, textBox.Modified, "modified-1");
  566. textBox.Modified = false;
  567. Assert.AreEqual (false, textBox.Modified, "modified-2");
  568. textBox.Modified = true;
  569. Assert.AreEqual (true, textBox.Modified, "modified-2");
  570. textBox.Text = "TEXT";
  571. Assert.AreEqual (false, textBox.Modified, "modified-3");
  572. }
  573. void TextBox_Invalidated (object sender, InvalidateEventArgs e)
  574. {
  575. _invalidated++;
  576. }
  577. void TextBox_Paint (object sender, PaintEventArgs e)
  578. {
  579. _paint++;
  580. }
  581. void Reset ()
  582. {
  583. _invalidated = 0;
  584. _paint = 0;
  585. }
  586. [Test]
  587. public void MethodIsInputChar ()
  588. {
  589. // Basically, show that this method always returns true
  590. InputCharControl m = new InputCharControl ();
  591. bool result = true;
  592. for (int i = 0; i < 256; i++)
  593. result &= m.PublicIsInputChar ((char)i);
  594. Assert.AreEqual (true, result, "I1");
  595. }
  596. private class InputCharControl : TextBox
  597. {
  598. public bool PublicIsInputChar (char charCode)
  599. {
  600. return base.IsInputChar (charCode);
  601. }
  602. }
  603. }
  604. }