UpDownTest.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035
  1. //
  2. //
  3. //
  4. // Authors:
  5. // Alexander Olk ([email protected])
  6. // Gert Driesen ([email protected])
  7. //
  8. using System;
  9. using System.Collections;
  10. using System.Drawing;
  11. using System.Globalization;
  12. using System.Windows.Forms;
  13. using NUnit.Framework;
  14. namespace MonoTests.System.Windows.Forms
  15. {
  16. [TestFixture]
  17. public class UpDownTest
  18. {
  19. [SetUp]
  20. public void SetUp ()
  21. {
  22. Reset ();
  23. }
  24. private void Reset ()
  25. {
  26. selected_item_changed = 0;
  27. text_changed = 0;
  28. value_changed = 0;
  29. }
  30. [Test]
  31. public void UpDownActiveControlTest ()
  32. {
  33. NumericUpDown n1 = new NumericUpDown ();
  34. Assert.IsNull (n1.ActiveControl, "1");
  35. }
  36. [Test]
  37. public void UpDownBasePropTest ()
  38. {
  39. NumericUpDown n1 = new NumericUpDown ();
  40. Assert.AreEqual (BorderStyle.Fixed3D, n1.BorderStyle, "#1");
  41. Assert.AreEqual (true, n1.InterceptArrowKeys, "#2");
  42. Assert.AreEqual (LeftRightAlignment.Right, n1.UpDownAlign, "#3");
  43. }
  44. [Test]
  45. public void ToStringTest ()
  46. {
  47. NumericUpDown n1 = new NumericUpDown ();
  48. Assert.AreEqual ("System.Windows.Forms.NumericUpDown, Minimum = 0, Maximum = 100", n1.ToString (), "1");
  49. n1.Minimum = 0.33m;
  50. n1.Maximum = 100.33m;
  51. Assert.AreEqual (string.Format (CultureInfo.CurrentCulture,
  52. "System.Windows.Forms.NumericUpDown, Minimum = {0}, Maximum = {1}",
  53. 0.33, 100.33), n1.ToString (), "2");
  54. }
  55. [Test]
  56. public void NumericUpDownStandardPropTest ()
  57. {
  58. NumericUpDown n1 = new NumericUpDown ();
  59. Assert.AreEqual (100, n1.Maximum, "#4");
  60. Assert.AreEqual (0, n1.Minimum, "#5");
  61. Assert.AreEqual (0, n1.Value, "#6");
  62. Assert.AreEqual (0, n1.DecimalPlaces, "#7");
  63. Assert.IsFalse (n1.Hexadecimal, "#8");
  64. Assert.IsFalse (n1.ThousandsSeparator, "#9");
  65. Assert.AreEqual (1, n1.Increment, "#10");
  66. }
  67. [Test]
  68. public void NumericUpDownEnhancedPropTest ()
  69. {
  70. NumericUpDown n1 = new NumericUpDown ();
  71. n1.Minimum = 200;
  72. Assert.AreEqual (200, n1.Maximum, "#11");
  73. Assert.AreEqual (200, n1.Value, "#12");
  74. n1.Minimum = 100;
  75. n1.Maximum = 50;
  76. Assert.AreEqual (50, n1.Minimum, "#13");
  77. n1.Minimum = 0;
  78. n1.Maximum = 100;
  79. n1.Value = 90;
  80. n1.Maximum = 50;
  81. Assert.AreEqual (50, n1.Value, "#14");
  82. n1.Minimum = 0;
  83. n1.Maximum = 100;
  84. n1.Value = 90;
  85. n1.DownButton ();
  86. Assert.AreEqual (89, n1.Value, "#15");
  87. n1.UpButton ();
  88. Assert.AreEqual (90, n1.Value, "#16");
  89. }
  90. [Test]
  91. [Category ("NotWorking")]
  92. public void NumericUpDownEditValidateTest ()
  93. {
  94. NumericNew nn = new NumericNew ();
  95. Assert.IsTrue (nn.update_edit_text_called, "#17");
  96. Assert.IsFalse (nn.user_edit, "#18");
  97. nn.Reset ();
  98. nn.user_edit = true;
  99. nn.Text = "10";
  100. Assert.IsTrue (nn.validate_edit_text_called, "#19");
  101. Assert.IsTrue (nn.update_edit_text_called, "#20");
  102. nn.Reset ();
  103. nn.user_edit = false;
  104. nn.Text = "11";
  105. Assert.IsTrue (nn.validate_edit_text_called, "#21");
  106. Assert.IsTrue (nn.update_edit_text_called, "#22");
  107. nn.DownButton ();
  108. Assert.AreEqual (10, nn.Value, "#23");
  109. }
  110. [Test]
  111. [Category ("NotWorking")]
  112. public void NumericUpDown_BeginInit ()
  113. {
  114. NumericNew nud = new NumericNew ();
  115. nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
  116. nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
  117. Assert.AreEqual (2, nud.CallStack.Count, "#A1");
  118. Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
  119. Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
  120. Assert.AreEqual (0, nud.Value, "#A4");
  121. Assert.AreEqual (2, nud.CallStack.Count, "#A5");
  122. Assert.AreEqual (0, value_changed, "#A6");
  123. Assert.AreEqual (0, text_changed, "#A7");
  124. nud.BeginInit ();
  125. Assert.AreEqual (2, nud.CallStack.Count, "#B1");
  126. nud.Value = 10;
  127. Assert.AreEqual (3, nud.CallStack.Count, "#B2");
  128. Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#B3");
  129. Assert.AreEqual ("0", nud.Text, "#B4");
  130. Assert.AreEqual (10, nud.Value, "#B5");
  131. Assert.AreEqual (3, nud.CallStack.Count, "#B6");
  132. Assert.AreEqual (1, value_changed, "#B7");
  133. Assert.AreEqual (0, text_changed, "#B8");
  134. nud.EndInit ();
  135. Assert.AreEqual (4, nud.CallStack.Count, "#B9");
  136. Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B10");
  137. Assert.AreEqual (1, text_changed, "#B11");
  138. Assert.AreEqual ("10", nud.Text, "#B12");
  139. Assert.AreEqual (10, nud.Value, "#B13");
  140. Assert.AreEqual (4, nud.CallStack.Count, "#B14");
  141. Assert.AreEqual (1, value_changed, "#B15");
  142. Assert.AreEqual (1, text_changed, "#B16");
  143. // multiple calls to BeginInit are undone by a single EndInit call
  144. nud.BeginInit ();
  145. nud.BeginInit ();
  146. Assert.AreEqual (4, nud.CallStack.Count, "#C1");
  147. nud.Value = 20;
  148. Assert.AreEqual (5, nud.CallStack.Count, "#C2");
  149. Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C3");
  150. Assert.AreEqual ("10", nud.Text, "#C4");
  151. Assert.AreEqual (20, nud.Value, "#C5");
  152. Assert.AreEqual (5, nud.CallStack.Count, "#C6");
  153. Assert.AreEqual (2, value_changed, "#C7");
  154. Assert.AreEqual (1, text_changed, "#C8");
  155. nud.EndInit ();
  156. Assert.AreEqual (6, nud.CallStack.Count, "#C9");
  157. Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#C10");
  158. Assert.AreEqual (2, text_changed, "#C11");
  159. Assert.AreEqual ("20", nud.Text, "#C12");
  160. Assert.AreEqual (20, nud.Value, "#C13");
  161. Assert.AreEqual (6, nud.CallStack.Count, "#C14");
  162. Assert.AreEqual (2, value_changed, "#C15");
  163. Assert.AreEqual (2, text_changed, "#C16");
  164. }
  165. [Test]
  166. [Category ("NotWorking")]
  167. public void NumericUpDown_ChangingText ()
  168. {
  169. NumericNew nud = new NumericNew ();
  170. nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
  171. nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
  172. Assert.IsFalse (nud.changing_text, "#A1");
  173. Assert.IsFalse (nud.user_edit, "#A2");
  174. Assert.AreEqual (0, text_changed, "#A3");
  175. nud.Text = "1";
  176. Assert.IsFalse (nud.changing_text, "#B1");
  177. Assert.IsFalse (nud.user_edit, "#B2");
  178. Assert.AreEqual (5, nud.CallStack.Count, "#B3");
  179. Assert.AreEqual (1, text_changed, "#B4");
  180. nud.changing_text = true;
  181. nud.Text = "2";
  182. Assert.IsFalse (nud.changing_text, "#C1");
  183. Assert.IsFalse (nud.user_edit, "#C2");
  184. Assert.AreEqual (5, nud.CallStack.Count, "#C3");
  185. Assert.AreEqual (2, text_changed, "#C4");
  186. }
  187. [Test]
  188. [Category ("NotWorking")]
  189. public void NumericUpDown_EndInit ()
  190. {
  191. NumericNew nud = new NumericNew ();
  192. nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
  193. nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
  194. Assert.AreEqual (2, nud.CallStack.Count, "#A1");
  195. Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
  196. Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
  197. Assert.AreEqual (0, nud.Value, "#A4");
  198. Assert.AreEqual (2, nud.CallStack.Count, "#A5");
  199. Assert.AreEqual (0, value_changed, "#A6");
  200. Assert.AreEqual (0, text_changed, "#A7");
  201. // EndInit without corresponding BeginInit
  202. nud.EndInit ();
  203. Assert.AreEqual (3, nud.CallStack.Count, "#B1");
  204. Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#B2");
  205. Assert.AreEqual (0, nud.Value, "#B3");
  206. Assert.AreEqual (3, nud.CallStack.Count, "#B4");
  207. Assert.AreEqual (0, value_changed, "#B5");
  208. Assert.AreEqual (0, text_changed, "#B6");
  209. }
  210. [Test]
  211. [Category ("NotWorking")]
  212. public void NumericUpDown_UpButton ()
  213. {
  214. NumericNew nud = new NumericNew ();
  215. nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
  216. nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
  217. nud.UpButton ();
  218. Assert.AreEqual (3, nud.CallStack.Count, "#A1");
  219. Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
  220. Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
  221. Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#A4");
  222. Assert.AreEqual (1, value_changed, "#A5");
  223. Assert.AreEqual (1, nud.Value, "#A6");
  224. Assert.AreEqual (3, nud.CallStack.Count, "#A7");
  225. Assert.AreEqual (1, value_changed, "#A8");
  226. Assert.AreEqual (1, text_changed, "#A9");
  227. nud.Text = "5";
  228. nud.UpButton ();
  229. Assert.AreEqual (7, nud.CallStack.Count, "#B1");
  230. Assert.AreEqual ("ValidateEditText", nud.CallStack [3], "#B2");
  231. Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#B3");
  232. Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#B4");
  233. Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#B5");
  234. Assert.AreEqual (3, value_changed, "#B6");
  235. Assert.AreEqual (6, nud.Value, "#B7");
  236. Assert.AreEqual ("6", nud.Text, "#B8");
  237. Assert.AreEqual (7, nud.CallStack.Count, "#B9");
  238. Assert.AreEqual (3, value_changed, "#B10");
  239. Assert.AreEqual (3, text_changed, "#B11");
  240. nud.Text = "7";
  241. nud.user_edit = true;
  242. nud.UpButton ();
  243. Assert.AreEqual (11, nud.CallStack.Count, "#C1");
  244. Assert.AreEqual ("ValidateEditText", nud.CallStack [7], "#C2");
  245. Assert.AreEqual ("UpdateEditText", nud.CallStack [8], "#C3");
  246. Assert.AreEqual ("UpdateEditText", nud.CallStack [9], "#C4");
  247. Assert.AreEqual ("UpdateEditText", nud.CallStack [10], "#C5");
  248. Assert.AreEqual (5, value_changed, "#C6");
  249. Assert.AreEqual (8, nud.Value, "#C7");
  250. Assert.AreEqual (11, nud.CallStack.Count, "#C8");
  251. Assert.AreEqual (5, value_changed, "#C9");
  252. Assert.AreEqual (5, text_changed, "#C10");
  253. nud.user_edit = false;
  254. Assert.AreEqual ("8", nud.Text, "#C11");
  255. Assert.AreEqual (11, nud.CallStack.Count, "#C12");
  256. Assert.AreEqual (5, value_changed, "#C13");
  257. Assert.AreEqual (5, text_changed, "#C14");
  258. nud.user_edit = false;
  259. nud.Text = "555";
  260. nud.user_edit = true;
  261. nud.UpButton ();
  262. Assert.AreEqual (14, nud.CallStack.Count, "#D1");
  263. Assert.AreEqual ("ValidateEditText", nud.CallStack [11], "#D2");
  264. Assert.AreEqual ("UpdateEditText", nud.CallStack [12], "#D3");
  265. Assert.AreEqual ("UpdateEditText", nud.CallStack [13], "#D4");
  266. Assert.AreEqual (6, value_changed, "#D5");
  267. Assert.AreEqual (100, nud.Value, "#D6");
  268. Assert.AreEqual (14, nud.CallStack.Count, "#D7");
  269. Assert.AreEqual (6, value_changed, "#D8");
  270. Assert.AreEqual (7, text_changed, "#D9");
  271. nud.user_edit = false;
  272. Assert.AreEqual ("100", nud.Text, "#D10");
  273. Assert.AreEqual (14, nud.CallStack.Count, "#D11");
  274. Assert.AreEqual (6, value_changed, "#D12");
  275. Assert.AreEqual (7, text_changed, "#D13");
  276. }
  277. [Test]
  278. [Category ("NotWorking")]
  279. public void NumericUpDown_Value ()
  280. {
  281. // obtain Value when UserEdit is false
  282. NumericNew nud = new NumericNew ();
  283. nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
  284. nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
  285. Assert.AreEqual (2, nud.CallStack.Count, "#A1");
  286. Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
  287. Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
  288. Assert.AreEqual (0, nud.Value, "#A4");
  289. Assert.AreEqual (2, nud.CallStack.Count, "#A5");
  290. Assert.AreEqual (0, value_changed, "#A6");
  291. Assert.AreEqual (0, text_changed, "#A7");
  292. // obtain Value when UserEdit is true
  293. nud.user_edit = true;
  294. Assert.AreEqual (2, nud.CallStack.Count, "#B1");
  295. Assert.AreEqual (0, nud.Value, "#B2");
  296. Assert.AreEqual (4, nud.CallStack.Count, "#B3");
  297. Assert.AreEqual ("ValidateEditText", nud.CallStack [2], "#B4");
  298. Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B5");
  299. Assert.AreEqual (0, value_changed, "#B6");
  300. Assert.AreEqual (0, text_changed, "#B7");
  301. // modify Value when UserEdit is false
  302. nud.user_edit = false;
  303. nud.Value = 10;
  304. Assert.AreEqual (5, nud.CallStack.Count, "#C1");
  305. Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C2");
  306. Assert.AreEqual (1, value_changed, "#C3");
  307. Assert.AreEqual (1, text_changed, "#C4");
  308. Assert.AreEqual (10, nud.Value, "#C5");
  309. Assert.AreEqual (5, nud.CallStack.Count, "#C6");
  310. Assert.AreEqual (1, value_changed, "#C7");
  311. Assert.AreEqual (1, text_changed, "#C8");
  312. // setting same Value
  313. nud.Value = 10;
  314. Assert.AreEqual (5, nud.CallStack.Count, "#D1");
  315. Assert.AreEqual (1, value_changed, "#D2");
  316. Assert.AreEqual (10, nud.Value, "#D3");
  317. Assert.AreEqual (5, nud.CallStack.Count, "#D4");
  318. Assert.AreEqual (1, value_changed, "#D5");
  319. Assert.AreEqual (1, text_changed, "#D6");
  320. // modify Value when UserEdit is true
  321. nud.user_edit = true;
  322. nud.Value = 20;
  323. Assert.AreEqual (7, nud.CallStack.Count, "#E1");
  324. Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#E2");
  325. Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#E3");
  326. Assert.AreEqual (3, value_changed, "#E4");
  327. Assert.AreEqual (1, text_changed, "#E5");
  328. nud.user_edit = false; // reset UserEdit to avoid Value being parsed from Text
  329. Assert.AreEqual (10, nud.Value, "#E6");
  330. Assert.AreEqual (7, nud.CallStack.Count, "#E7");
  331. Assert.AreEqual (3, value_changed, "#E8");
  332. Assert.AreEqual (1, text_changed, "#E9");
  333. }
  334. [Test]
  335. [Category ("NotWorking")]
  336. public void NumericUpDown_Value_Invalid ()
  337. {
  338. NumericNew nud = new NumericNew ();
  339. try {
  340. nud.Value = 1000;
  341. Assert.Fail ("#A1");
  342. #if NET_2_0
  343. } catch (ArgumentOutOfRangeException ex) {
  344. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
  345. Assert.IsNotNull (ex.Message, "#A3");
  346. Assert.IsNotNull (ex.ParamName, "#A4");
  347. Assert.AreEqual ("Value", ex.ParamName, "#A5");
  348. Assert.IsNull (ex.InnerException, "#A6");
  349. }
  350. #else
  351. } catch (ArgumentException ex) {
  352. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  353. Assert.IsNotNull (ex.Message, "#A3");
  354. Assert.IsNull (ex.ParamName, "#A4");
  355. Assert.IsNull (ex.InnerException, "#A5");
  356. }
  357. #endif
  358. try {
  359. nud.Value = 1000;
  360. Assert.Fail ("#B1");
  361. #if NET_2_0
  362. } catch (ArgumentOutOfRangeException ex) {
  363. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  364. Assert.IsNotNull (ex.Message, "#B3");
  365. Assert.IsNotNull (ex.ParamName, "#B4");
  366. Assert.AreEqual ("Value", ex.ParamName, "#B5");
  367. Assert.IsNull (ex.InnerException, "#B6");
  368. }
  369. #else
  370. } catch (ArgumentException ex) {
  371. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
  372. Assert.IsNotNull (ex.Message, "#B3");
  373. Assert.IsNull (ex.ParamName, "#B4");
  374. Assert.IsNull (ex.InnerException, "#B5");
  375. }
  376. #endif
  377. try {
  378. nud.Value = -1000;
  379. Assert.Fail ("#C1");
  380. #if NET_2_0
  381. } catch (ArgumentOutOfRangeException ex) {
  382. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
  383. Assert.IsNotNull (ex.Message, "#C3");
  384. Assert.IsNotNull (ex.ParamName, "#C4");
  385. Assert.AreEqual ("Value", ex.ParamName, "#C5");
  386. Assert.IsNull (ex.InnerException, "#C6");
  387. }
  388. #else
  389. } catch (ArgumentException ex) {
  390. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
  391. Assert.IsNotNull (ex.Message, "#C3");
  392. Assert.IsNull (ex.ParamName, "#C4");
  393. Assert.IsNull (ex.InnerException, "#C5");
  394. }
  395. #endif
  396. nud.BeginInit ();
  397. nud.Value = 1000;
  398. Assert.AreEqual (1000, nud.Value, "#D1");
  399. nud.Value = 1000;
  400. Assert.AreEqual (1000, nud.Value, "#D2");
  401. nud.Value = -1000;
  402. Assert.AreEqual (-1000, nud.Value, "#D3");
  403. nud.EndInit ();
  404. try {
  405. nud.Value = -1000;
  406. Assert.Fail ("#E1");
  407. #if NET_2_0
  408. } catch (ArgumentOutOfRangeException ex) {
  409. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#E2");
  410. Assert.IsNotNull (ex.Message, "#E3");
  411. Assert.IsNotNull (ex.ParamName, "#E4");
  412. Assert.AreEqual ("Value", ex.ParamName, "#E5");
  413. Assert.IsNull (ex.InnerException, "#E6");
  414. }
  415. #else
  416. } catch (ArgumentException ex) {
  417. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
  418. Assert.IsNotNull (ex.Message, "#E3");
  419. Assert.IsNull (ex.ParamName, "#E4");
  420. Assert.IsNull (ex.InnerException, "#E5");
  421. }
  422. #endif
  423. }
  424. void NumericUpDown_TextChanged (object sender, EventArgs e)
  425. {
  426. text_changed++;
  427. }
  428. void NumericUpDown_ValueChanged (object sender, EventArgs e)
  429. {
  430. value_changed++;
  431. }
  432. public class NumericNew : NumericUpDown
  433. {
  434. public bool update_edit_text_called = false;
  435. public bool validate_edit_text_called = false;
  436. private ArrayList _callStack = new ArrayList ();
  437. public ArrayList CallStack {
  438. get { return _callStack; }
  439. }
  440. public bool user_edit {
  441. get {
  442. return UserEdit;
  443. }
  444. set {
  445. UserEdit = value;
  446. }
  447. }
  448. public bool changing_text {
  449. get {
  450. return ChangingText;
  451. }
  452. set {
  453. ChangingText = value;
  454. }
  455. }
  456. public void Reset ()
  457. {
  458. update_edit_text_called = false;
  459. validate_edit_text_called = false;
  460. _callStack.Clear ();
  461. }
  462. protected override void UpdateEditText ()
  463. {
  464. _callStack.Add ("UpdateEditText");
  465. update_edit_text_called = true;
  466. base.UpdateEditText ();
  467. }
  468. protected override void ValidateEditText ()
  469. {
  470. _callStack.Add ("ValidateEditText");
  471. validate_edit_text_called = true;
  472. base.ValidateEditText ();
  473. }
  474. }
  475. [Test]
  476. public void DomainUpDownStandardPropTest ()
  477. {
  478. DomainUpDown d1 = new DomainUpDown ();
  479. Assert.AreEqual (0, d1.Items.Count, "#24");
  480. Assert.AreEqual (false, d1.Sorted, "#25");
  481. Assert.AreEqual (false, d1.Wrap, "#26");
  482. Assert.AreEqual ("System.Windows.Forms.DomainUpDown, Items.Count: 0, SelectedIndex: -1", d1.ToString (), "#26a");
  483. d1.Items.Add ("item1");
  484. d1.Items.Add ("item2");
  485. d1.Items.Add ("item3");
  486. d1.Items.Add ("item4");
  487. Assert.AreEqual (4, d1.Items.Count, "#27");
  488. Assert.AreEqual (-1, d1.SelectedIndex, "#28");
  489. Assert.AreEqual (null, d1.SelectedItem, "#29");
  490. }
  491. [Test]
  492. [Category ("NotWorking")]
  493. public void DomainUpDownEnhancedPropTest ()
  494. {
  495. DomainUpDown d1 = new DomainUpDown ();
  496. d1.Items.Add ("item1");
  497. d1.Items.Add ("item2");
  498. d1.Items.Add ("item3");
  499. d1.Items.Add ("item4");
  500. d1.SelectedIndex = 3;
  501. Assert.AreEqual (3, d1.SelectedIndex, "#30");
  502. d1.Items.Remove ("item1");
  503. Assert.AreEqual (3, d1.Items.Count, "#31");
  504. Assert.AreEqual (2, d1.SelectedIndex, "#32");
  505. d1.Items.Remove ("item4");
  506. Assert.AreEqual (2, d1.Items.Count, "#33");
  507. Assert.AreEqual (-1, d1.SelectedIndex, "#34");
  508. Assert.AreEqual (null, d1.SelectedItem, "#35");
  509. // strange, ArgumentOutOfRangeException on windows
  510. // d1.SelectedIndex = 1;
  511. //Assert.AreEqual (1, d1.SelectedIndex, "#36");
  512. d1.Items.Clear ();
  513. Assert.AreEqual (0, d1.Items.Count, "#37");
  514. Assert.AreEqual (-1, d1.SelectedIndex, "#38");
  515. Assert.AreEqual (null, d1.SelectedItem, "#39");
  516. d1.Items.Add ("zitem1");
  517. d1.Items.Add ("oitem2");
  518. d1.Items.Add ("mitem3");
  519. d1.Items.Add ("aitem4");
  520. d1.SelectedIndex = 0;
  521. Assert.AreEqual ("zitem1", d1.SelectedItem.ToString (), "#40");
  522. d1.Sorted = true;
  523. Assert.AreEqual ("aitem4", d1.SelectedItem.ToString (), "#41");
  524. Assert.AreEqual ("aitem4", d1.Items[0].ToString (), "#42");
  525. d1.Items.Clear ();
  526. d1.Items.Add ("item1");
  527. d1.Items.Add ("item2");
  528. d1.Items.Add ("item3");
  529. d1.Items.Add ("item4");
  530. d1.SelectedIndex = 0;
  531. d1.UpButton ();
  532. Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#43");
  533. d1.DownButton ();
  534. Assert.AreEqual ("item2", d1.SelectedItem.ToString (), "#44");
  535. d1.SelectedIndex = 0;
  536. d1.Wrap = true;
  537. d1.UpButton ();
  538. Assert.AreEqual ("item4", d1.SelectedItem.ToString (), "#45");
  539. d1.DownButton ();
  540. Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#46");
  541. d1.Text = "item3";
  542. Assert.AreEqual (null, d1.SelectedItem, "#47");
  543. }
  544. [Test]
  545. [Category ("NotWorking")]
  546. public void DomainUpDown_SelectedIndex ()
  547. {
  548. MockDomainUpDown dud = new MockDomainUpDown ();
  549. dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
  550. dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
  551. Assert.AreEqual (1, dud.CallStack.Count, "#A1");
  552. Assert.AreEqual ("set_Text: (0)", dud.CallStack [0], "#A2");
  553. Assert.AreEqual (0, selected_item_changed, "#A3");
  554. Assert.AreEqual (0, text_changed, "#A4");
  555. Assert.AreEqual (-1, dud.SelectedIndex, "#A5");
  556. string itemA = "itemA";
  557. dud.Items.Add (itemA);
  558. Assert.AreEqual (1, dud.CallStack.Count, "#B1");
  559. Assert.AreEqual (0, selected_item_changed, "#B2");
  560. Assert.AreEqual (0, text_changed, "#B3");
  561. Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
  562. dud.SelectedIndex = 0;
  563. Assert.AreEqual (4, dud.CallStack.Count, "#C1");
  564. Assert.AreEqual ("UpdateEditText", dud.CallStack [1], "#C2");
  565. Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [2], "#C3");
  566. Assert.AreEqual ("OnChanged", dud.CallStack [3], "#C4");
  567. Assert.AreEqual (1, selected_item_changed, "#C5");
  568. Assert.AreEqual (1, text_changed, "#C6");
  569. Assert.AreEqual (0, dud.SelectedIndex, "#C7");
  570. dud.SelectedIndex = 0;
  571. Assert.AreEqual (4, dud.CallStack.Count, "#D1");
  572. Assert.AreEqual (1, selected_item_changed, "#D2");
  573. Assert.AreEqual (1, text_changed, "#D3");
  574. Assert.AreEqual (0, dud.SelectedIndex, "#D4");
  575. dud.SelectedIndex = -1;
  576. Assert.AreEqual (4, dud.CallStack.Count, "#E1");
  577. Assert.AreEqual (1, selected_item_changed, "#E2");
  578. Assert.AreEqual (1, text_changed, "#E3");
  579. Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
  580. dud.SelectedIndex = 0;
  581. Assert.AreEqual (6, dud.CallStack.Count, "#F1");
  582. Assert.AreEqual ("UpdateEditText", dud.CallStack [4], "#F2");
  583. Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [5], "#F3");
  584. Assert.AreEqual (1, selected_item_changed, "#F4");
  585. Assert.AreEqual (1, text_changed, "#F5");
  586. Assert.AreEqual (0, dud.SelectedIndex, "#F6");
  587. string itemAbis = "itemA";
  588. dud.Items.Add (itemAbis);
  589. Assert.AreEqual (6, dud.CallStack.Count, "#G1");
  590. Assert.AreEqual (1, selected_item_changed, "#G2");
  591. Assert.AreEqual (1, text_changed, "#G3");
  592. Assert.AreEqual (0, dud.SelectedIndex, "#G4");
  593. dud.SelectedIndex = 1;
  594. Assert.AreEqual (8, dud.CallStack.Count, "#H1");
  595. Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#H2");
  596. Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [7], "#H3");
  597. Assert.AreEqual (1, selected_item_changed, "#H4");
  598. Assert.AreEqual (1, text_changed, "#H5");
  599. Assert.AreEqual (1, dud.SelectedIndex, "#H6");
  600. string itemB = "itemB";
  601. dud.Items.Add (itemB);
  602. Assert.AreEqual (8, dud.CallStack.Count, "#I1");
  603. Assert.AreEqual (1, selected_item_changed, "#I2");
  604. Assert.AreEqual (1, text_changed, "#I3");
  605. Assert.AreEqual (1, dud.SelectedIndex, "#I4");
  606. dud.SelectedIndex = 2;
  607. Assert.AreEqual (11, dud.CallStack.Count, "#J1");
  608. Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#J2");
  609. Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#J3");
  610. Assert.AreEqual ("OnChanged", dud.CallStack [10], "#J4");
  611. Assert.AreEqual (2, selected_item_changed, "#J5");
  612. Assert.AreEqual (2, text_changed, "#J6");
  613. Assert.AreEqual (2, dud.SelectedIndex, "#J7");
  614. }
  615. [Test]
  616. [Category ("NotWorking")]
  617. public void DomainUpDown_Items_Add ()
  618. {
  619. MockItem itemA = new MockItem ("itemA");
  620. MockItem itemB = new MockItem ("itemB");
  621. MockItem itemC = new MockItem ("itemC");
  622. MockDomainUpDown dud = new MockDomainUpDown ();
  623. dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
  624. dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
  625. dud.Reset ();
  626. dud.Items.Add (itemA);
  627. Assert.AreEqual (0, dud.CallStack.Count, "#A1");
  628. Assert.AreEqual (0, selected_item_changed, "#A2");
  629. Assert.AreEqual (0, text_changed, "#A3");
  630. Assert.AreEqual (-1, dud.SelectedIndex, "#A4");
  631. Assert.AreEqual (string.Empty, dud.Text, "#A5");
  632. Assert.AreEqual (1, dud.Items.Count, "#A6");
  633. Assert.AreSame (itemA, dud.Items [0], "#A7");
  634. dud.Items.Add (itemC);
  635. Assert.AreEqual (0, dud.CallStack.Count, "#B1");
  636. Assert.AreEqual (0, selected_item_changed, "#B2");
  637. Assert.AreEqual (0, text_changed, "#B3");
  638. Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
  639. Assert.AreEqual (string.Empty, dud.Text, "#B5");
  640. Assert.AreEqual (2, dud.Items.Count, "#B6");
  641. Assert.AreSame (itemC, dud.Items [1], "#B7");
  642. dud.Items.Add (itemA);
  643. Assert.AreEqual (0, dud.CallStack.Count, "#C1");
  644. Assert.AreEqual (0, selected_item_changed, "#C2");
  645. Assert.AreEqual (0, text_changed, "#C3");
  646. Assert.AreEqual (-1, dud.SelectedIndex, "#C4");
  647. Assert.AreEqual (string.Empty, dud.Text, "#C5");
  648. Assert.AreEqual (3, dud.Items.Count, "#C6");
  649. Assert.AreSame (itemA, dud.Items [2], "#C7");
  650. dud.Sorted = true;
  651. Assert.AreEqual (3, dud.Items.Count, "#D1");
  652. Assert.AreSame (itemA, dud.Items [0], "#D2");
  653. Assert.AreSame (itemA, dud.Items [1], "#D3");
  654. Assert.AreSame (itemC, dud.Items [2], "#D4");
  655. // adding item causes re-sort
  656. dud.Items.Add (itemB);
  657. Assert.AreEqual (0, dud.CallStack.Count, "#E1");
  658. Assert.AreEqual (0, selected_item_changed, "#E2");
  659. Assert.AreEqual (0, text_changed, "#E3");
  660. Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
  661. Assert.AreEqual (string.Empty, dud.Text, "#E5");
  662. Assert.AreEqual (4, dud.Items.Count, "#E6");
  663. Assert.AreSame (itemA, dud.Items [0], "#E7");
  664. Assert.AreSame (itemA, dud.Items [1], "#E8");
  665. Assert.AreSame (itemB, dud.Items [2], "#E9");
  666. Assert.AreSame (itemC, dud.Items [3], "#E10");
  667. }
  668. [Test]
  669. [Category ("NotWorking")]
  670. public void DomainUpDown_Items_Indexer ()
  671. {
  672. MockItem itemA = new MockItem ("itemA");
  673. MockItem itemAbis = new MockItem ("itemA");
  674. MockItem itemB = new MockItem ("itemB");
  675. MockItem itemC = new MockItem ("itemC");
  676. MockItem itemD = new MockItem ("itemD");
  677. MockItem itemE = new MockItem ("itemE");
  678. TestHelper.RemoveWarning (itemAbis);
  679. MockDomainUpDown dud = new MockDomainUpDown ();
  680. dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
  681. dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
  682. dud.Items.Add (itemC);
  683. dud.Items.Add (itemA);
  684. dud.Items.Add (itemB);
  685. dud.Items.Add (itemA);
  686. dud.SelectedIndex = 1;
  687. dud.Reset ();
  688. Reset ();
  689. Assert.AreSame (itemC, dud.Items [0], "#A1");
  690. Assert.AreSame (itemA, dud.Items [1], "#A2");
  691. Assert.AreSame (itemB, dud.Items [2], "#A3");
  692. Assert.AreSame (itemA, dud.Items [3], "#A4");
  693. Assert.AreEqual (itemA.Text, dud.Text, "#A5");
  694. dud.Items [3] = itemD;
  695. Assert.AreEqual (0, dud.CallStack.Count, "#B1");
  696. Assert.AreEqual (0, selected_item_changed, "#B2");
  697. Assert.AreEqual (0, text_changed, "#B3");
  698. Assert.AreEqual (1, dud.SelectedIndex, "#B4");
  699. Assert.AreEqual (itemA.Text, dud.Text, "#B5");
  700. dud.Items [1] = itemE;
  701. Assert.AreEqual (3, dud.CallStack.Count, "#C1");
  702. Assert.AreEqual ("UpdateEditText", dud.CallStack [0], "#C2");
  703. Assert.AreEqual ("set_Text:itemE (5)", dud.CallStack [1], "#C3");
  704. Assert.AreEqual ("OnChanged", dud.CallStack [2], "#C4");
  705. Assert.AreEqual (1, selected_item_changed, "#C5");
  706. Assert.AreEqual (1, text_changed, "#C6");
  707. Assert.AreEqual (1, dud.SelectedIndex, "#C7");
  708. Assert.AreEqual (itemE.Text, dud.Text, "#C8");
  709. dud.Sorted = true;
  710. Assert.AreEqual (8, dud.CallStack.Count, "#D1");
  711. Assert.AreEqual ("UpdateEditText", dud.CallStack [3], "#D2");
  712. Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [4], "#D3");
  713. Assert.AreEqual ("OnChanged", dud.CallStack [5], "#D4");
  714. Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#D5");
  715. Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [7], "#D6");
  716. Assert.AreEqual (2, selected_item_changed, "#D7");
  717. Assert.AreEqual (2, text_changed, "#D8");
  718. Assert.AreEqual (1, dud.SelectedIndex, "#D9");
  719. Assert.AreEqual (itemC.Text, dud.Text, "#D10");
  720. Assert.AreSame (itemB, dud.Items [0], "#D11");
  721. Assert.AreSame (itemC, dud.Items [1], "#D12");
  722. Assert.AreSame (itemD, dud.Items [2], "#D13");
  723. Assert.AreSame (itemE, dud.Items [3], "#D14");
  724. dud.Items [3] = itemA;
  725. Assert.AreEqual (13, dud.CallStack.Count, "#E1");
  726. Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#E2");
  727. Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#E3");
  728. Assert.AreEqual ("OnChanged", dud.CallStack [10], "#E4");
  729. Assert.AreEqual ("UpdateEditText", dud.CallStack [11], "#E5");
  730. Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [12], "#E6");
  731. Assert.AreEqual (3, selected_item_changed, "#E7");
  732. Assert.AreEqual (3, text_changed, "#E8");
  733. Assert.AreEqual (1, dud.SelectedIndex, "#E9");
  734. Assert.AreEqual (itemB.Text, dud.Text, "#E10");
  735. }
  736. [Test]
  737. [Category ("NotWorking")]
  738. public void DomainUpDown_Items_Indexer_Null ()
  739. {
  740. MockDomainUpDown dud = new MockDomainUpDown ();
  741. dud.Items.Add ("itemA");
  742. dud.Items.Add ("itemB");
  743. dud.Items.Add ("itemC");
  744. dud.SelectedIndex = 0;
  745. // TODO: report as MS bug
  746. dud.Items [2] = null;
  747. dud.Items [1] = null;
  748. try {
  749. dud.Items [0] = null;
  750. Assert.Fail ();
  751. } catch (NullReferenceException ex) {
  752. TestHelper.RemoveWarning (ex);
  753. }
  754. }
  755. [Test]
  756. public void DomainUpDown_Items_Insert ()
  757. {
  758. // TODO
  759. }
  760. [Test]
  761. public void DomainUpDown_Items_Remove ()
  762. {
  763. // TODO
  764. }
  765. [Test]
  766. public void DomainUpDown_Items_RemoveAt ()
  767. {
  768. // TODO
  769. }
  770. [Test]
  771. [Category ("NotWorking")]
  772. public void DomainUpDown_SelectedIndex_Invalid ()
  773. {
  774. DomainUpDown dud = new DomainUpDown ();
  775. dud.Items.Add ("item1");
  776. try {
  777. dud.SelectedIndex = -2;
  778. Assert.Fail ("#A1");
  779. #if NET_2_0
  780. } catch (ArgumentOutOfRangeException ex) {
  781. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
  782. Assert.IsNotNull (ex.Message, "#A3");
  783. Assert.IsNotNull (ex.ParamName, "#A4");
  784. Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
  785. Assert.IsNull (ex.InnerException, "#A6");
  786. }
  787. #else
  788. } catch (ArgumentException ex) {
  789. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  790. Assert.IsNotNull (ex.Message, "#A3");
  791. Assert.IsNull (ex.ParamName, "#A4");
  792. Assert.IsNull (ex.InnerException, "#A5");
  793. }
  794. #endif
  795. try {
  796. dud.SelectedIndex = 1;
  797. Assert.Fail ("#B1");
  798. #if NET_2_0
  799. } catch (ArgumentOutOfRangeException ex) {
  800. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
  801. Assert.IsNotNull (ex.Message, "#A3");
  802. Assert.IsNotNull (ex.ParamName, "#A4");
  803. Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
  804. Assert.IsNull (ex.InnerException, "#A6");
  805. }
  806. #else
  807. } catch (ArgumentException ex) {
  808. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
  809. Assert.IsNotNull (ex.Message, "#B3");
  810. Assert.IsNull (ex.ParamName, "#B4");
  811. Assert.IsNull (ex.InnerException, "#B5");
  812. }
  813. #endif
  814. }
  815. [Test]
  816. public void DomainUpDown_SelectedItem_Null ()
  817. {
  818. DomainUpDown dud = new DomainUpDown ();
  819. dud.Items.Add ("item1");
  820. dud.SelectedIndex = 0;
  821. Assert.AreEqual (0, dud.SelectedIndex, "#A1");
  822. Assert.IsNotNull (dud.SelectedItem, "#A2");
  823. dud.SelectedItem = null;
  824. Assert.AreEqual (-1, dud.SelectedIndex, "#B1");
  825. Assert.IsNull (dud.SelectedItem, "#B2");
  826. }
  827. void DomainUpDown_TextChanged (object sender, EventArgs e)
  828. {
  829. text_changed++;
  830. }
  831. void DomainUpDown_SelectedItemChanged (object sender, EventArgs e)
  832. {
  833. selected_item_changed++;
  834. }
  835. public class MockDomainUpDown : DomainUpDown
  836. {
  837. private ArrayList _callStack = new ArrayList ();
  838. public ArrayList CallStack {
  839. get { return _callStack; }
  840. }
  841. public bool user_edit {
  842. get {
  843. return UserEdit;
  844. }
  845. set {
  846. UserEdit = value;
  847. }
  848. }
  849. public bool changing_text {
  850. get {
  851. return ChangingText;
  852. }
  853. set {
  854. ChangingText = value;
  855. }
  856. }
  857. public void Reset ()
  858. {
  859. _callStack.Clear ();
  860. }
  861. public override string Text {
  862. get {
  863. return base.Text;
  864. }
  865. set {
  866. if (value == null)
  867. _callStack.Add ("set_Text:null");
  868. else
  869. _callStack.Add ("set_Text:" + value + " (" + value.Length + ")");
  870. base.Text = value;
  871. }
  872. }
  873. protected override void OnChanged (object source, EventArgs e)
  874. {
  875. _callStack.Add ("OnChanged");
  876. base.OnChanged (source, e);
  877. }
  878. protected override void UpdateEditText ()
  879. {
  880. _callStack.Add ("UpdateEditText");
  881. base.UpdateEditText ();
  882. }
  883. protected override void ValidateEditText ()
  884. {
  885. _callStack.Add ("ValidateEditText");
  886. base.ValidateEditText ();
  887. }
  888. }
  889. private int selected_item_changed = 0;
  890. private int text_changed = 0;
  891. private int value_changed = 0;
  892. public class MockItem
  893. {
  894. public MockItem (string text)
  895. {
  896. _text = text;
  897. }
  898. public string Text {
  899. get { return _text; }
  900. }
  901. public override string ToString ()
  902. {
  903. return _text;
  904. }
  905. private readonly string _text;
  906. }
  907. }
  908. }