TextFieldTests.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659
  1. using Xunit;
  2. namespace Terminal.Gui {
  3. public class TextFieldTests {
  4. private TextField _textField;
  5. public TextFieldTests ()
  6. {
  7. Application.Init (new FakeDriver (), new FakeMainLoop (() => FakeConsole.ReadKey (true)));
  8. // 1 2 3
  9. // 01234567890123456789012345678901=32 (Length)
  10. _textField = new TextField ("TAB to jump between text fields.");
  11. }
  12. [Fact]
  13. public void Changing_SelectedStart_Or_CursorPosition_Update_SelectedLength_And_SelectedText ()
  14. {
  15. _textField.SelectedStart = 2;
  16. Assert.Equal (32, _textField.CursorPosition);
  17. Assert.Equal (30, _textField.SelectedLength);
  18. Assert.Equal ("B to jump between text fields.", _textField.SelectedText);
  19. _textField.CursorPosition = 20;
  20. Assert.Equal (2, _textField.SelectedStart);
  21. Assert.Equal (18, _textField.SelectedLength);
  22. Assert.Equal ("B to jump between ", _textField.SelectedText);
  23. }
  24. [Fact]
  25. public void SelectedStart_With_Value_Less_Than_Minus_One_Changes_To_Minus_One ()
  26. {
  27. _textField.SelectedStart = -2;
  28. Assert.Equal (-1, _textField.SelectedStart);
  29. Assert.Equal (0, _textField.SelectedLength);
  30. Assert.Null (_textField.SelectedText);
  31. }
  32. [Fact]
  33. public void SelectedStart_With_Value_Greater_Than_Text_Length_Changes_To_Text_Length ()
  34. {
  35. _textField.CursorPosition = 2;
  36. _textField.SelectedStart = 33;
  37. Assert.Equal (32, _textField.SelectedStart);
  38. Assert.Equal (30, _textField.SelectedLength);
  39. Assert.Equal ("B to jump between text fields.", _textField.SelectedText);
  40. }
  41. [Fact]
  42. public void SelectedStart_And_CursorPosition_With_Value_Greater_Than_Text_Length_Changes_Both_To_Text_Length ()
  43. {
  44. _textField.CursorPosition = 33;
  45. _textField.SelectedStart = 33;
  46. Assert.Equal (32, _textField.CursorPosition);
  47. Assert.Equal (32, _textField.SelectedStart);
  48. Assert.Equal (0, _textField.SelectedLength);
  49. Assert.Null (_textField.SelectedText);
  50. }
  51. [Fact]
  52. public void CursorPosition_With_Value_Less_Than_Zero_Changes_To_Zero ()
  53. {
  54. _textField.CursorPosition = -1;
  55. Assert.Equal (0, _textField.CursorPosition);
  56. Assert.Equal (0, _textField.SelectedLength);
  57. Assert.Null (_textField.SelectedText);
  58. }
  59. [Fact]
  60. public void CursorPosition_With_Value_Greater_Than_Text_Length_Changes_To_Text_Length ()
  61. {
  62. _textField.CursorPosition = 33;
  63. Assert.Equal (32, _textField.CursorPosition);
  64. Assert.Equal (0, _textField.SelectedLength);
  65. Assert.Null (_textField.SelectedText);
  66. }
  67. [Fact]
  68. public void WordForward_With_No_Selection ()
  69. {
  70. _textField.CursorPosition = 0;
  71. var iteration = 0;
  72. while (_textField.CursorPosition < _textField.Text.Length) {
  73. _textField.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask, new KeyModifiers ()));
  74. switch (iteration) {
  75. case 0:
  76. Assert.Equal (4, _textField.CursorPosition);
  77. Assert.Equal (-1, _textField.SelectedStart);
  78. Assert.Equal (0, _textField.SelectedLength);
  79. Assert.Null (_textField.SelectedText);
  80. break;
  81. case 1:
  82. Assert.Equal (7, _textField.CursorPosition);
  83. Assert.Equal (-1, _textField.SelectedStart);
  84. Assert.Equal (0, _textField.SelectedLength);
  85. Assert.Null (_textField.SelectedText);
  86. break;
  87. case 2:
  88. Assert.Equal (12, _textField.CursorPosition);
  89. Assert.Equal (-1, _textField.SelectedStart);
  90. Assert.Equal (0, _textField.SelectedLength);
  91. Assert.Null (_textField.SelectedText);
  92. break;
  93. case 3:
  94. Assert.Equal (20, _textField.CursorPosition);
  95. Assert.Equal (-1, _textField.SelectedStart);
  96. Assert.Equal (0, _textField.SelectedLength);
  97. Assert.Null (_textField.SelectedText);
  98. break;
  99. case 4:
  100. Assert.Equal (25, _textField.CursorPosition);
  101. Assert.Equal (-1, _textField.SelectedStart);
  102. Assert.Equal (0, _textField.SelectedLength);
  103. Assert.Null (_textField.SelectedText);
  104. break;
  105. case 5:
  106. Assert.Equal (32, _textField.CursorPosition);
  107. Assert.Equal (-1, _textField.SelectedStart);
  108. Assert.Equal (0, _textField.SelectedLength);
  109. Assert.Null (_textField.SelectedText);
  110. break;
  111. }
  112. iteration++;
  113. }
  114. }
  115. [Fact]
  116. public void WordBackward_With_No_Selection ()
  117. {
  118. _textField.CursorPosition = _textField.Text.Length;
  119. var iteration = 0;
  120. while (_textField.CursorPosition > 0) {
  121. _textField.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask, new KeyModifiers ()));
  122. switch (iteration) {
  123. case 0:
  124. Assert.Equal (25, _textField.CursorPosition);
  125. Assert.Equal (-1, _textField.SelectedStart);
  126. Assert.Equal (0, _textField.SelectedLength);
  127. Assert.Null (_textField.SelectedText);
  128. break;
  129. case 1:
  130. Assert.Equal (20, _textField.CursorPosition);
  131. Assert.Equal (-1, _textField.SelectedStart);
  132. Assert.Equal (0, _textField.SelectedLength);
  133. Assert.Null (_textField.SelectedText);
  134. break;
  135. case 2:
  136. Assert.Equal (12, _textField.CursorPosition);
  137. Assert.Equal (-1, _textField.SelectedStart);
  138. Assert.Equal (0, _textField.SelectedLength);
  139. Assert.Null (_textField.SelectedText);
  140. break;
  141. case 3:
  142. Assert.Equal (7, _textField.CursorPosition);
  143. Assert.Equal (-1, _textField.SelectedStart);
  144. Assert.Equal (0, _textField.SelectedLength);
  145. Assert.Null (_textField.SelectedText);
  146. break;
  147. case 4:
  148. Assert.Equal (4, _textField.CursorPosition);
  149. Assert.Equal (-1, _textField.SelectedStart);
  150. Assert.Equal (0, _textField.SelectedLength);
  151. Assert.Null (_textField.SelectedText);
  152. break;
  153. case 5:
  154. Assert.Equal (0, _textField.CursorPosition);
  155. Assert.Equal (-1, _textField.SelectedStart);
  156. Assert.Equal (0, _textField.SelectedLength);
  157. Assert.Null (_textField.SelectedText);
  158. break;
  159. }
  160. iteration++;
  161. }
  162. }
  163. [Fact]
  164. public void WordForward_With_Selection ()
  165. {
  166. _textField.CursorPosition = 0;
  167. _textField.SelectedStart = 0;
  168. var iteration = 0;
  169. while (_textField.CursorPosition < _textField.Text.Length) {
  170. _textField.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
  171. switch (iteration) {
  172. case 0:
  173. Assert.Equal (4, _textField.CursorPosition);
  174. Assert.Equal (0, _textField.SelectedStart);
  175. Assert.Equal (4, _textField.SelectedLength);
  176. Assert.Equal ("TAB ", _textField.SelectedText);
  177. break;
  178. case 1:
  179. Assert.Equal (7, _textField.CursorPosition);
  180. Assert.Equal (0, _textField.SelectedStart);
  181. Assert.Equal (7, _textField.SelectedLength);
  182. Assert.Equal ("TAB to ", _textField.SelectedText);
  183. break;
  184. case 2:
  185. Assert.Equal (12, _textField.CursorPosition);
  186. Assert.Equal (0, _textField.SelectedStart);
  187. Assert.Equal (12, _textField.SelectedLength);
  188. Assert.Equal ("TAB to jump ", _textField.SelectedText);
  189. break;
  190. case 3:
  191. Assert.Equal (20, _textField.CursorPosition);
  192. Assert.Equal (0, _textField.SelectedStart);
  193. Assert.Equal (20, _textField.SelectedLength);
  194. Assert.Equal ("TAB to jump between ", _textField.SelectedText);
  195. break;
  196. case 4:
  197. Assert.Equal (25, _textField.CursorPosition);
  198. Assert.Equal (0, _textField.SelectedStart);
  199. Assert.Equal (25, _textField.SelectedLength);
  200. Assert.Equal ("TAB to jump between text ", _textField.SelectedText);
  201. break;
  202. case 5:
  203. Assert.Equal (32, _textField.CursorPosition);
  204. Assert.Equal (0, _textField.SelectedStart);
  205. Assert.Equal (32, _textField.SelectedLength);
  206. Assert.Equal ("TAB to jump between text fields.", _textField.SelectedText);
  207. break;
  208. }
  209. iteration++;
  210. }
  211. }
  212. [Fact]
  213. public void WordBackward_With_Selection ()
  214. {
  215. _textField.CursorPosition = _textField.Text.Length;
  216. _textField.SelectedStart = _textField.Text.Length;
  217. var iteration = 0;
  218. while (_textField.CursorPosition > 0) {
  219. _textField.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
  220. switch (iteration) {
  221. case 0:
  222. Assert.Equal (25, _textField.CursorPosition);
  223. Assert.Equal (32, _textField.SelectedStart);
  224. Assert.Equal (7, _textField.SelectedLength);
  225. Assert.Equal ("fields.", _textField.SelectedText);
  226. break;
  227. case 1:
  228. Assert.Equal (20, _textField.CursorPosition);
  229. Assert.Equal (32, _textField.SelectedStart);
  230. Assert.Equal (12, _textField.SelectedLength);
  231. Assert.Equal ("text fields.", _textField.SelectedText);
  232. break;
  233. case 2:
  234. Assert.Equal (12, _textField.CursorPosition);
  235. Assert.Equal (32, _textField.SelectedStart);
  236. Assert.Equal (20, _textField.SelectedLength);
  237. Assert.Equal ("between text fields.", _textField.SelectedText);
  238. break;
  239. case 3:
  240. Assert.Equal (7, _textField.CursorPosition);
  241. Assert.Equal (32, _textField.SelectedStart);
  242. Assert.Equal (25, _textField.SelectedLength);
  243. Assert.Equal ("jump between text fields.", _textField.SelectedText);
  244. break;
  245. case 4:
  246. Assert.Equal (4, _textField.CursorPosition);
  247. Assert.Equal (32, _textField.SelectedStart);
  248. Assert.Equal (28, _textField.SelectedLength);
  249. Assert.Equal ("to jump between text fields.", _textField.SelectedText);
  250. break;
  251. case 5:
  252. Assert.Equal (0, _textField.CursorPosition);
  253. Assert.Equal (32, _textField.SelectedStart);
  254. Assert.Equal (32, _textField.SelectedLength);
  255. Assert.Equal ("TAB to jump between text fields.", _textField.SelectedText);
  256. break;
  257. }
  258. iteration++;
  259. }
  260. }
  261. [Fact]
  262. public void WordForward_With_The_Same_Values_For_SelectedStart_And_CursorPosition_And_Not_Starting_At_Beginning_Of_The_Text ()
  263. {
  264. _textField.CursorPosition = 10;
  265. _textField.SelectedStart = 10;
  266. var iteration = 0;
  267. while (_textField.CursorPosition < _textField.Text.Length) {
  268. _textField.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
  269. switch (iteration) {
  270. case 0:
  271. Assert.Equal (12, _textField.CursorPosition);
  272. Assert.Equal (10, _textField.SelectedStart);
  273. Assert.Equal (2, _textField.SelectedLength);
  274. Assert.Equal ("p ", _textField.SelectedText);
  275. break;
  276. case 1:
  277. Assert.Equal (20, _textField.CursorPosition);
  278. Assert.Equal (10, _textField.SelectedStart);
  279. Assert.Equal (10, _textField.SelectedLength);
  280. Assert.Equal ("p between ", _textField.SelectedText);
  281. break;
  282. case 2:
  283. Assert.Equal (25, _textField.CursorPosition);
  284. Assert.Equal (10, _textField.SelectedStart);
  285. Assert.Equal (15, _textField.SelectedLength);
  286. Assert.Equal ("p between text ", _textField.SelectedText);
  287. break;
  288. case 3:
  289. Assert.Equal (32, _textField.CursorPosition);
  290. Assert.Equal (10, _textField.SelectedStart);
  291. Assert.Equal (22, _textField.SelectedLength);
  292. Assert.Equal ("p between text fields.", _textField.SelectedText);
  293. break;
  294. }
  295. iteration++;
  296. }
  297. }
  298. [Fact]
  299. public void WordBackward_With_The_Same_Values_For_SelectedStart_And_CursorPosition_And_Not_Starting_At_Beginning_Of_The_Text ()
  300. {
  301. _textField.CursorPosition = 10;
  302. _textField.SelectedStart = 10;
  303. var iteration = 0;
  304. while (_textField.CursorPosition > 0) {
  305. _textField.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask | Key.ShiftMask, new KeyModifiers ()));
  306. switch (iteration) {
  307. case 0:
  308. Assert.Equal (7, _textField.CursorPosition);
  309. Assert.Equal (10, _textField.SelectedStart);
  310. Assert.Equal (3, _textField.SelectedLength);
  311. Assert.Equal ("jum", _textField.SelectedText);
  312. break;
  313. case 1:
  314. Assert.Equal (4, _textField.CursorPosition);
  315. Assert.Equal (10, _textField.SelectedStart);
  316. Assert.Equal (6, _textField.SelectedLength);
  317. Assert.Equal ("to jum", _textField.SelectedText);
  318. break;
  319. case 2:
  320. Assert.Equal (0, _textField.CursorPosition);
  321. Assert.Equal (10, _textField.SelectedStart);
  322. Assert.Equal (10, _textField.SelectedLength);
  323. Assert.Equal ("TAB to jum", _textField.SelectedText);
  324. break;
  325. }
  326. iteration++;
  327. }
  328. }
  329. [Fact]
  330. public void WordForward_With_No_Selection_And_With_More_Than_Only_One_Whitespace_And_With_Only_One_Letter ()
  331. {
  332. // 1 2 3 4 5
  333. // 0123456789012345678901234567890123456789012345678901234=55 (Length)
  334. _textField.Text = "TAB t o jump b etween t ext f ields .";
  335. _textField.CursorPosition = 0;
  336. var iteration = 0;
  337. while (_textField.CursorPosition < _textField.Text.Length) {
  338. _textField.ProcessKey (new KeyEvent (Key.CursorRight | Key.CtrlMask, new KeyModifiers ()));
  339. switch (iteration) {
  340. case 0:
  341. Assert.Equal (6, _textField.CursorPosition);
  342. Assert.Equal (-1, _textField.SelectedStart);
  343. Assert.Equal (0, _textField.SelectedLength);
  344. Assert.Null (_textField.SelectedText);
  345. break;
  346. case 1:
  347. Assert.Equal (9, _textField.CursorPosition);
  348. Assert.Equal (-1, _textField.SelectedStart);
  349. Assert.Equal (0, _textField.SelectedLength);
  350. Assert.Null (_textField.SelectedText);
  351. break;
  352. case 2:
  353. Assert.Equal (12, _textField.CursorPosition);
  354. Assert.Equal (-1, _textField.SelectedStart);
  355. Assert.Equal (0, _textField.SelectedLength);
  356. Assert.Null (_textField.SelectedText);
  357. break;
  358. case 3:
  359. Assert.Equal (25, _textField.CursorPosition);
  360. Assert.Equal (-1, _textField.SelectedStart);
  361. Assert.Equal (0, _textField.SelectedLength);
  362. Assert.Null (_textField.SelectedText);
  363. break;
  364. case 4:
  365. Assert.Equal (28, _textField.CursorPosition);
  366. Assert.Equal (-1, _textField.SelectedStart);
  367. Assert.Equal (0, _textField.SelectedLength);
  368. Assert.Null (_textField.SelectedText);
  369. break;
  370. case 5:
  371. Assert.Equal (38, _textField.CursorPosition);
  372. Assert.Equal (-1, _textField.SelectedStart);
  373. Assert.Equal (0, _textField.SelectedLength);
  374. Assert.Null (_textField.SelectedText);
  375. break;
  376. case 6:
  377. Assert.Equal (40, _textField.CursorPosition);
  378. Assert.Equal (-1, _textField.SelectedStart);
  379. Assert.Equal (0, _textField.SelectedLength);
  380. Assert.Null (_textField.SelectedText);
  381. break;
  382. case 7:
  383. Assert.Equal (46, _textField.CursorPosition);
  384. Assert.Equal (-1, _textField.SelectedStart);
  385. Assert.Equal (0, _textField.SelectedLength);
  386. Assert.Null (_textField.SelectedText);
  387. break;
  388. case 8:
  389. Assert.Equal (48, _textField.CursorPosition);
  390. Assert.Equal (-1, _textField.SelectedStart);
  391. Assert.Equal (0, _textField.SelectedLength);
  392. Assert.Null (_textField.SelectedText);
  393. break;
  394. case 9:
  395. Assert.Equal (55, _textField.CursorPosition);
  396. Assert.Equal (-1, _textField.SelectedStart);
  397. Assert.Equal (0, _textField.SelectedLength);
  398. Assert.Null (_textField.SelectedText);
  399. break;
  400. }
  401. iteration++;
  402. }
  403. }
  404. [Fact]
  405. public void WordBackward_With_No_Selection_And_With_More_Than_Only_One_Whitespace_And_With_Only_One_Letter ()
  406. {
  407. // 1 2 3 4 5
  408. // 0123456789012345678901234567890123456789012345678901234=55 (Length)
  409. _textField.Text = "TAB t o jump b etween t ext f ields .";
  410. _textField.CursorPosition = _textField.Text.Length;
  411. var iteration = 0;
  412. while (_textField.CursorPosition > 0) {
  413. _textField.ProcessKey (new KeyEvent (Key.CursorLeft | Key.CtrlMask, new KeyModifiers ()));
  414. switch (iteration) {
  415. case 0:
  416. Assert.Equal (54, _textField.CursorPosition);
  417. Assert.Equal (-1, _textField.SelectedStart);
  418. Assert.Equal (0, _textField.SelectedLength);
  419. Assert.Null (_textField.SelectedText);
  420. break;
  421. case 1:
  422. Assert.Equal (48, _textField.CursorPosition);
  423. Assert.Equal (-1, _textField.SelectedStart);
  424. Assert.Equal (0, _textField.SelectedLength);
  425. Assert.Null (_textField.SelectedText);
  426. break;
  427. case 2:
  428. Assert.Equal (46, _textField.CursorPosition);
  429. Assert.Equal (-1, _textField.SelectedStart);
  430. Assert.Equal (0, _textField.SelectedLength);
  431. Assert.Null (_textField.SelectedText);
  432. break;
  433. case 3:
  434. Assert.Equal (40, _textField.CursorPosition);
  435. Assert.Equal (-1, _textField.SelectedStart);
  436. Assert.Equal (0, _textField.SelectedLength);
  437. Assert.Null (_textField.SelectedText);
  438. break;
  439. case 4:
  440. Assert.Equal (38, _textField.CursorPosition);
  441. Assert.Equal (-1, _textField.SelectedStart);
  442. Assert.Equal (0, _textField.SelectedLength);
  443. Assert.Null (_textField.SelectedText);
  444. break;
  445. case 5:
  446. Assert.Equal (28, _textField.CursorPosition);
  447. Assert.Equal (-1, _textField.SelectedStart);
  448. Assert.Equal (0, _textField.SelectedLength);
  449. Assert.Null (_textField.SelectedText);
  450. break;
  451. case 6:
  452. Assert.Equal (25, _textField.CursorPosition);
  453. Assert.Equal (-1, _textField.SelectedStart);
  454. Assert.Equal (0, _textField.SelectedLength);
  455. Assert.Null (_textField.SelectedText);
  456. break;
  457. case 7:
  458. Assert.Equal (12, _textField.CursorPosition);
  459. Assert.Equal (-1, _textField.SelectedStart);
  460. Assert.Equal (0, _textField.SelectedLength);
  461. Assert.Null (_textField.SelectedText);
  462. break;
  463. case 8:
  464. Assert.Equal (9, _textField.CursorPosition);
  465. Assert.Equal (-1, _textField.SelectedStart);
  466. Assert.Equal (0, _textField.SelectedLength);
  467. Assert.Null (_textField.SelectedText);
  468. break;
  469. case 9:
  470. Assert.Equal (6, _textField.CursorPosition);
  471. Assert.Equal (-1, _textField.SelectedStart);
  472. Assert.Equal (0, _textField.SelectedLength);
  473. Assert.Null (_textField.SelectedText);
  474. break;
  475. case 10:
  476. Assert.Equal (0, _textField.CursorPosition);
  477. Assert.Equal (-1, _textField.SelectedStart);
  478. Assert.Equal (0, _textField.SelectedLength);
  479. Assert.Null (_textField.SelectedText);
  480. break;
  481. }
  482. iteration++;
  483. }
  484. }
  485. [Fact]
  486. public void Copy_Or_Cut_Null_If_No_Selection ()
  487. {
  488. _textField.SelectedStart = -1;
  489. _textField.Copy ();
  490. Assert.Null (_textField.SelectedText);
  491. _textField.Cut ();
  492. Assert.Null (_textField.SelectedText);
  493. }
  494. [Fact]
  495. public void Copy_Or_Cut_Not_Null_If_Has_Selection ()
  496. {
  497. _textField.SelectedStart = 20;
  498. _textField.CursorPosition = 24;
  499. _textField.Copy ();
  500. Assert.Equal ("text", _textField.SelectedText);
  501. _textField.Cut ();
  502. Assert.Null (_textField.SelectedText);
  503. }
  504. [Fact]
  505. public void Copy_Or_Cut_And_Paste_With_Selection ()
  506. {
  507. _textField.SelectedStart = 20;
  508. _textField.CursorPosition = 24;
  509. _textField.Copy ();
  510. Assert.Equal ("text", _textField.SelectedText);
  511. Assert.Equal ("TAB to jump between text fields.", _textField.Text);
  512. _textField.Paste ();
  513. Assert.Equal ("TAB to jump between text fields.", _textField.Text);
  514. _textField.SelectedStart = 20;
  515. _textField.Cut ();
  516. _textField.Paste ();
  517. Assert.Equal ("TAB to jump between text fields.", _textField.Text);
  518. }
  519. [Fact]
  520. public void Copy_Or_Cut_And_Paste_With_No_Selection ()
  521. {
  522. _textField.SelectedStart = 20;
  523. _textField.CursorPosition = 24;
  524. _textField.Copy ();
  525. Assert.Equal ("text", _textField.SelectedText);
  526. Assert.Equal ("TAB to jump between text fields.", _textField.Text);
  527. _textField.SelectedStart = -1;
  528. _textField.Paste ();
  529. Assert.Equal ("TAB to jump between texttext fields.", _textField.Text);
  530. _textField.SelectedStart = 24;
  531. _textField.Cut ();
  532. Assert.Null (_textField.SelectedText);
  533. Assert.Equal ("TAB to jump between text fields.", _textField.Text);
  534. _textField.SelectedStart = -1;
  535. _textField.Paste ();
  536. Assert.Equal ("TAB to jump between texttext fields.", _textField.Text);
  537. }
  538. [Fact]
  539. public void Copy_Or_Cut__Not_Allowed_If_Secret_Is_True ()
  540. {
  541. _textField.Secret = true;
  542. _textField.SelectedStart = 20;
  543. _textField.CursorPosition = 24;
  544. _textField.Copy ();
  545. Assert.Null (_textField.SelectedText);
  546. _textField.Cut ();
  547. Assert.Null (_textField.SelectedText);
  548. _textField.Secret = false;
  549. _textField.Copy ();
  550. Assert.Equal ("text", _textField.SelectedText);
  551. _textField.Cut ();
  552. Assert.Null (_textField.SelectedText);
  553. }
  554. [Fact]
  555. public void Paste_Always_Clear_The_SelectedText ()
  556. {
  557. _textField.SelectedStart = 20;
  558. _textField.CursorPosition = 24;
  559. _textField.Copy ();
  560. Assert.Equal ("text", _textField.SelectedText);
  561. _textField.Paste ();
  562. Assert.Null (_textField.SelectedText);
  563. }
  564. [Fact]
  565. public void TextChanging_Event ()
  566. {
  567. bool cancel = true;
  568. _textField.TextChanging += (e) => {
  569. Assert.Equal ("changing", e.NewText);
  570. if (cancel) {
  571. e.Cancel = true;
  572. }
  573. };
  574. _textField.Text = "changing";
  575. Assert.Equal ("TAB to jump between text fields.", _textField.Text);
  576. cancel = false;
  577. _textField.Text = "changing";
  578. Assert.Equal ("changing", _textField.Text);
  579. }
  580. [Fact]
  581. public void TextChanged_Event ()
  582. {
  583. _textField.TextChanged += (e) => {
  584. Assert.Equal ("TAB to jump between text fields.", e);
  585. };
  586. _textField.Text = "changed";
  587. Assert.Equal ("changed", _textField.Text);
  588. }
  589. [Fact]
  590. public void Used_Is_True_By_Default ()
  591. {
  592. _textField.CursorPosition = 10;
  593. Assert.Equal ("TAB to jump between text fields.", _textField.Text);
  594. _textField.ProcessKey (new KeyEvent ((Key)0x75, new KeyModifiers ())); // u
  595. Assert.Equal ("TAB to jumup between text fields.", _textField.Text);
  596. _textField.ProcessKey (new KeyEvent ((Key)0x73, new KeyModifiers ())); // s
  597. Assert.Equal ("TAB to jumusp between text fields.", _textField.Text);
  598. _textField.ProcessKey (new KeyEvent ((Key)0x65, new KeyModifiers ())); // e
  599. Assert.Equal ("TAB to jumusep between text fields.", _textField.Text);
  600. _textField.ProcessKey (new KeyEvent ((Key)0x64, new KeyModifiers ())); // d
  601. Assert.Equal ("TAB to jumusedp between text fields.", _textField.Text);
  602. }
  603. [Fact]
  604. public void Used_Is_False ()
  605. {
  606. _textField.Used = false;
  607. _textField.CursorPosition = 10;
  608. Assert.Equal ("TAB to jump between text fields.", _textField.Text);
  609. _textField.ProcessKey (new KeyEvent ((Key)0x75, new KeyModifiers ())); // u
  610. Assert.Equal ("TAB to jumu between text fields.", _textField.Text);
  611. _textField.ProcessKey (new KeyEvent ((Key)0x73, new KeyModifiers ())); // s
  612. Assert.Equal ("TAB to jumusbetween text fields.", _textField.Text);
  613. _textField.ProcessKey (new KeyEvent ((Key)0x65, new KeyModifiers ())); // e
  614. Assert.Equal ("TAB to jumuseetween text fields.", _textField.Text);
  615. _textField.ProcessKey (new KeyEvent ((Key)0x64, new KeyModifiers ())); // d
  616. Assert.Equal ("TAB to jumusedtween text fields.", _textField.Text);
  617. }
  618. }
  619. }