MessageBoxTests.cs 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876
  1. using System.Text;
  2. using Xunit.Abstractions;
  3. namespace Terminal.Gui.DialogTests;
  4. public class MessageBoxTests
  5. {
  6. private readonly ITestOutputHelper _output;
  7. public MessageBoxTests (ITestOutputHelper output) { _output = output; }
  8. [Fact]
  9. [AutoInitShutdown]
  10. public void KeyBindings_Enter_Causes_Focused_Button_Click ()
  11. {
  12. int result = -1;
  13. var iteration = 0;
  14. Application.Iteration += (s, a) =>
  15. {
  16. iteration++;
  17. switch (iteration)
  18. {
  19. case 1:
  20. result = MessageBox.Query (string.Empty, string.Empty, 0, false, "btn0", "btn1");
  21. Application.RequestStop ();
  22. break;
  23. case 2:
  24. // Tab to btn2
  25. Application.OnKeyDown (Key.Tab);
  26. Application.OnKeyDown (Key.Enter);
  27. break;
  28. default:
  29. Assert.Fail ();
  30. break;
  31. }
  32. };
  33. Application.Run ().Dispose ();
  34. Assert.Equal (1, result);
  35. }
  36. [Fact]
  37. [AutoInitShutdown]
  38. public void KeyBindings_Esc_Closes ()
  39. {
  40. var result = 999;
  41. var iteration = 0;
  42. Application.Iteration += (s, a) =>
  43. {
  44. iteration++;
  45. switch (iteration)
  46. {
  47. case 1:
  48. result = MessageBox.Query (string.Empty, string.Empty, 0, false, "btn0", "btn1");
  49. Application.RequestStop ();
  50. break;
  51. case 2:
  52. Application.OnKeyDown (Key.Esc);
  53. break;
  54. default:
  55. Assert.Fail ();
  56. break;
  57. }
  58. };
  59. Application.Run ().Dispose ();
  60. Assert.Equal (-1, result);
  61. }
  62. [Fact]
  63. [AutoInitShutdown]
  64. public void KeyBindings_Space_Causes_Focused_Button_Click ()
  65. {
  66. int result = -1;
  67. var iteration = 0;
  68. Application.Iteration += (s, a) =>
  69. {
  70. iteration++;
  71. switch (iteration)
  72. {
  73. case 1:
  74. result = MessageBox.Query (string.Empty, string.Empty, 0, false, "btn0", "btn1");
  75. Application.RequestStop ();
  76. break;
  77. case 2:
  78. // Tab to btn2
  79. Application.OnKeyDown (Key.Tab);
  80. Application.OnKeyDown (Key.Space);
  81. break;
  82. default:
  83. Assert.Fail ();
  84. break;
  85. }
  86. };
  87. Application.Run ().Dispose ();
  88. Assert.Equal (1, result);
  89. }
  90. [Fact (Skip = "Dim.Auto WIP")]
  91. [AutoInitShutdown]
  92. public void Location_Default ()
  93. {
  94. int iterations = -1;
  95. ((FakeDriver)Application.Driver).SetBufferSize (100, 100);
  96. Application.Iteration += (s, a) =>
  97. {
  98. iterations++;
  99. if (iterations == 0)
  100. {
  101. MessageBox.Query (string.Empty, string.Empty, null);
  102. Application.RequestStop ();
  103. }
  104. else if (iterations == 1)
  105. {
  106. Application.Refresh ();
  107. Assert.IsType<Dialog> (Application.Current);
  108. // Default location is centered, so
  109. // X = (100 / 2) - (60 / 2) = 20
  110. // Y = (100 / 2) - (5 / 2) = 47
  111. Assert.Equal (new Point (20, 47), (Point)Application.Current.Frame.Location);
  112. Application.RequestStop ();
  113. }
  114. };
  115. Application.Run ().Dispose ();
  116. }
  117. [Theory (Skip = "Dim.Auto WIP")]
  118. [AutoInitShutdown]
  119. [InlineData (" ", true, 1)]
  120. [InlineData (" ", false, 1)]
  121. [InlineData ("", true, 1)]
  122. [InlineData ("", false, 1)]
  123. [InlineData ("\n", true, 1)]
  124. [InlineData ("\n", false, 1)]
  125. [InlineData (" \n", true, 1)]
  126. [InlineData (" \n", false, 2)]
  127. public void Message_Empty_Or_A_NewLline_WrapMessagge_True_Or_False (
  128. string message,
  129. bool wrapMessage,
  130. int linesLength
  131. )
  132. {
  133. int iterations = -1;
  134. Application.Iteration += (s, a) =>
  135. {
  136. iterations++;
  137. if (iterations == 0)
  138. {
  139. MessageBox.Query (string.Empty, message, 0, wrapMessage, "ok");
  140. Application.RequestStop ();
  141. }
  142. else if (iterations == 1)
  143. {
  144. Application.Refresh ();
  145. if (linesLength == 1)
  146. {
  147. TestHelpers.AssertDriverContentsWithFrameAre (
  148. @$"
  149. ┌──────────────────────────────────────────────┐
  150. │ │
  151. │ │
  152. │ {
  153. CM.Glyphs.LeftBracket
  154. }{
  155. CM.Glyphs.LeftDefaultIndicator
  156. } ok {
  157. CM.Glyphs.RightDefaultIndicator
  158. }{
  159. CM.Glyphs.RightBracket
  160. } │
  161. └──────────────────────────────────────────────┘",
  162. _output
  163. );
  164. }
  165. else
  166. {
  167. TestHelpers.AssertDriverContentsWithFrameAre (
  168. @$"
  169. ┌──────────────────────────────────────────────┐
  170. │ │
  171. │ │
  172. │ │
  173. │ {
  174. CM.Glyphs.LeftBracket
  175. }{
  176. CM.Glyphs.LeftDefaultIndicator
  177. } ok {
  178. CM.Glyphs.RightDefaultIndicator
  179. }{
  180. CM.Glyphs.RightBracket
  181. } │
  182. └──────────────────────────────────────────────┘",
  183. _output
  184. );
  185. }
  186. Application.RequestStop ();
  187. }
  188. };
  189. Application.Run ().Dispose ();
  190. }
  191. [Fact (Skip = "Dim.Auto WIP")]
  192. [AutoInitShutdown]
  193. public void Message_Long_Without_Spaces_WrapMessage_True ()
  194. {
  195. int iterations = -1;
  196. var top = new Toplevel ();
  197. top.BorderStyle = LineStyle.None;
  198. ((FakeDriver)Application.Driver).SetBufferSize (20, 10);
  199. var btn =
  200. $"{
  201. CM.Glyphs.LeftBracket
  202. }{
  203. CM.Glyphs.LeftDefaultIndicator
  204. } btn {
  205. CM.Glyphs.RightDefaultIndicator
  206. }{
  207. CM.Glyphs.RightBracket
  208. }";
  209. Application.Iteration += (s, a) =>
  210. {
  211. iterations++;
  212. if (iterations == 0)
  213. {
  214. // 50 characters should make the height of the wrapped text 7
  215. MessageBox.Query (string.Empty, new string ('f', 50), 0, true, "btn");
  216. Application.RequestStop ();
  217. }
  218. else if (iterations == 1)
  219. {
  220. Application.Refresh ();
  221. TestHelpers.AssertDriverContentsWithFrameAre (
  222. @$"
  223. ┌──────────────────┐
  224. │ffffffffffffffffff│
  225. │ffffffffffffffffff│
  226. │ ffffffffffffff │
  227. │ │
  228. │ {btn} │
  229. └──────────────────┘",
  230. _output
  231. );
  232. Application.RequestStop ();
  233. // Really long text
  234. MessageBox.Query (string.Empty, new string ('f', 500), 0, true, "btn");
  235. }
  236. else if (iterations == 2)
  237. {
  238. Application.Refresh ();
  239. TestHelpers.AssertDriverContentsWithFrameAre (
  240. @$"
  241. │ffffffffffffffffff│
  242. │ffffffffffffffffff│
  243. │ffffffffffffffffff│
  244. │ffffffffffffffffff│
  245. │ffffffffffffffffff│
  246. │ffffffffffffffffff│
  247. │ffffffffffffffffff│
  248. │ffffffffffffffffff│
  249. │ffffffffffffffffff│
  250. │ {btn} │",
  251. _output
  252. );
  253. Application.RequestStop ();
  254. }
  255. };
  256. Application.Run (top);
  257. }
  258. [Fact (Skip = "Dim.Auto WIP")]
  259. [AutoInitShutdown]
  260. public void Message_With_Spaces_WrapMessage_False ()
  261. {
  262. int iterations = -1;
  263. var top = new Toplevel ();
  264. top.BorderStyle = LineStyle.None;
  265. ((FakeDriver)Application.Driver).SetBufferSize (20, 10);
  266. var btn =
  267. $"{
  268. CM.Glyphs.LeftBracket
  269. }{
  270. CM.Glyphs.LeftDefaultIndicator
  271. } btn {
  272. CM.Glyphs.RightDefaultIndicator
  273. }{
  274. CM.Glyphs.RightBracket
  275. }";
  276. Application.Iteration += (s, a) =>
  277. {
  278. iterations++;
  279. if (iterations == 0)
  280. {
  281. var sb = new StringBuilder ();
  282. for (var i = 0; i < 17; i++)
  283. {
  284. sb.Append ("ff ");
  285. }
  286. MessageBox.Query (string.Empty, sb.ToString (), 0, false, "btn");
  287. Application.RequestStop ();
  288. }
  289. else if (iterations == 1)
  290. {
  291. Application.Refresh ();
  292. TestHelpers.AssertDriverContentsWithFrameAre (
  293. @"
  294. ────────────────────
  295. ff ff ff ff ff ff ff
  296. ⟦► btn ◄⟧
  297. ────────────────────
  298. ",
  299. _output
  300. );
  301. Application.RequestStop ();
  302. // Really long text
  303. MessageBox.Query (string.Empty, new string ('f', 500), 0, false, "btn");
  304. }
  305. else if (iterations == 2)
  306. {
  307. Application.Refresh ();
  308. TestHelpers.AssertDriverContentsWithFrameAre (
  309. @"
  310. ────────────────────
  311. ffffffffffffffffffff
  312. ⟦► btn ◄⟧
  313. ────────────────────
  314. ",
  315. _output
  316. );
  317. Application.RequestStop ();
  318. }
  319. };
  320. Application.Run (top);
  321. }
  322. [Fact (Skip = "Dim.Auto WIP")]
  323. [AutoInitShutdown]
  324. public void Message_With_Spaces_WrapMessage_True ()
  325. {
  326. int iterations = -1;
  327. var top = new Toplevel();
  328. top.BorderStyle = LineStyle.None;
  329. ((FakeDriver)Application.Driver).SetBufferSize (20, 10);
  330. var btn =
  331. $"{
  332. CM.Glyphs.LeftBracket
  333. }{
  334. CM.Glyphs.LeftDefaultIndicator
  335. } btn {
  336. CM.Glyphs.RightDefaultIndicator
  337. }{
  338. CM.Glyphs.RightBracket
  339. }";
  340. Application.Iteration += (s, a) =>
  341. {
  342. iterations++;
  343. if (iterations == 0)
  344. {
  345. var sb = new StringBuilder ();
  346. for (var i = 0; i < 17; i++)
  347. {
  348. sb.Append ("ff ");
  349. }
  350. MessageBox.Query (string.Empty, sb.ToString (), 0, true, "btn");
  351. Application.RequestStop ();
  352. }
  353. else if (iterations == 1)
  354. {
  355. Application.Refresh ();
  356. TestHelpers.AssertDriverContentsWithFrameAre (@$"
  357. ┌─────────────────┐
  358. │ff ff ff ff ff ff│
  359. │ff ff ff ff ff ff│
  360. │ ff ff ff ff ff │
  361. │ │
  362. │ {btn} │
  363. └─────────────────┘",
  364. _output
  365. );
  366. Application.RequestStop ();
  367. // Really long text
  368. MessageBox.Query (string.Empty, new string ('f', 500), 0, true, "btn");
  369. }
  370. else if (iterations == 2)
  371. {
  372. Application.Refresh ();
  373. TestHelpers.AssertDriverContentsWithFrameAre (@$"
  374. │ffffffffffffffffff│
  375. │ffffffffffffffffff│
  376. │ffffffffffffffffff│
  377. │ffffffffffffffffff│
  378. │ffffffffffffffffff│
  379. │ffffffffffffffffff│
  380. │ffffffffffffffffff│
  381. │ffffffffffffffffff│
  382. │ffffffffffffffffff│
  383. │ {btn} │",
  384. _output
  385. );
  386. Application.RequestStop ();
  387. }
  388. };
  389. Application.Run (top);
  390. top.Dispose ();
  391. }
  392. [Fact (Skip = "Dim.Auto WIP")]
  393. [AutoInitShutdown]
  394. public void Message_Without_Spaces_WrapMessage_False ()
  395. {
  396. int iterations = -1;
  397. var top = new Toplevel();
  398. top.BorderStyle = LineStyle.None;
  399. ((FakeDriver)Application.Driver).SetBufferSize (20, 10);
  400. var btn =
  401. $"{
  402. CM.Glyphs.LeftBracket
  403. }{
  404. CM.Glyphs.LeftDefaultIndicator
  405. } btn {
  406. CM.Glyphs.RightDefaultIndicator
  407. }{
  408. CM.Glyphs.RightBracket
  409. }";
  410. Application.Iteration += (s, a) =>
  411. {
  412. iterations++;
  413. if (iterations == 0)
  414. {
  415. MessageBox.Query (string.Empty, new string ('f', 50), 0, false, "btn");
  416. Application.RequestStop ();
  417. }
  418. else if (iterations == 1)
  419. {
  420. Application.Refresh ();
  421. TestHelpers.AssertDriverContentsWithFrameAre (
  422. @"
  423. ────────────────────
  424. ffffffffffffffffffff
  425. ⟦► btn ◄⟧
  426. ────────────────────
  427. ",
  428. _output
  429. );
  430. Application.RequestStop ();
  431. // Really long text
  432. MessageBox.Query (string.Empty, new string ('f', 500), 0, false, "btn");
  433. }
  434. else if (iterations == 2)
  435. {
  436. Application.Refresh ();
  437. TestHelpers.AssertDriverContentsWithFrameAre (
  438. @"
  439. ────────────────────
  440. ffffffffffffffffffff
  441. ⟦► btn ◄⟧
  442. ────────────────────
  443. ",
  444. _output
  445. );
  446. Application.RequestStop ();
  447. }
  448. };
  449. Application.Run (top);
  450. }
  451. [Fact (Skip = "Dim.Auto WIP")]
  452. [AutoInitShutdown]
  453. public void Size_Default ()
  454. {
  455. int iterations = -1;
  456. ((FakeDriver)Application.Driver).SetBufferSize (100, 100);
  457. Application.Iteration += (s, a) =>
  458. {
  459. iterations++;
  460. if (iterations == 0)
  461. {
  462. MessageBox.Query (string.Empty, string.Empty, null);
  463. Application.RequestStop ();
  464. }
  465. else if (iterations == 1)
  466. {
  467. Application.Refresh ();
  468. Assert.IsType<Dialog> (Application.Current);
  469. // Default size is Percent(60)
  470. Assert.Equal (new ((int)(100 * .60), 5), Application.Current.Frame.Size);
  471. Application.RequestStop ();
  472. }
  473. };
  474. Application.Run ().Dispose ();
  475. }
  476. [Fact (Skip = "Dim.Auto WIP")]
  477. [AutoInitShutdown]
  478. public void Size_JustBigEnough_Fixed_Size ()
  479. {
  480. int iterations = -1;
  481. var btn =
  482. $"{
  483. CM.Glyphs.LeftBracket
  484. }{
  485. CM.Glyphs.LeftDefaultIndicator
  486. } Ok {
  487. CM.Glyphs.RightDefaultIndicator
  488. }{
  489. CM.Glyphs.RightBracket
  490. }";
  491. Application.Iteration += (s, a) =>
  492. {
  493. iterations++;
  494. if (iterations == 0)
  495. {
  496. MessageBox.Query (11, 5, string.Empty, "Message", "_Ok");
  497. Application.RequestStop ();
  498. }
  499. else if (iterations == 1)
  500. {
  501. Application.Refresh ();
  502. TestHelpers.AssertDriverContentsWithFrameAre (
  503. @$"
  504. ┌─────────┐
  505. │ Message │
  506. │ │
  507. │{
  508. btn
  509. } │
  510. └─────────┘
  511. ",
  512. _output
  513. );
  514. Application.RequestStop ();
  515. }
  516. };
  517. Application.Run ().Dispose ();
  518. }
  519. [Fact (Skip = "Dim.Auto WIP")]
  520. [AutoInitShutdown]
  521. public void Size_No_With_Button ()
  522. {
  523. var top = new Toplevel ();
  524. top.BorderStyle = LineStyle.None;
  525. int iterations = -1;
  526. var aboutMessage = new StringBuilder ();
  527. aboutMessage.AppendLine (@"0123456789012345678901234567890123456789");
  528. aboutMessage.AppendLine (@"https://github.com/gui-cs/Terminal.Gui");
  529. var message = aboutMessage.ToString ();
  530. var btn =
  531. $"{
  532. CM.Glyphs.LeftBracket
  533. }{
  534. CM.Glyphs.LeftDefaultIndicator
  535. } Ok {
  536. CM.Glyphs.RightDefaultIndicator
  537. }{
  538. CM.Glyphs.RightBracket
  539. }";
  540. ((FakeDriver)Application.Driver).SetBufferSize (40 + 4, 8);
  541. Application.Iteration += (s, a) =>
  542. {
  543. iterations++;
  544. if (iterations == 0)
  545. {
  546. MessageBox.Query (string.Empty, message, "_Ok");
  547. Application.RequestStop ();
  548. }
  549. else if (iterations == 1)
  550. {
  551. Application.Refresh ();
  552. TestHelpers.AssertDriverContentsWithFrameAre (
  553. @$"
  554. ┌────────────────────────────────────────┐
  555. │0123456789012345678901234567890123456789│
  556. │ https://github.com/gui-cs/Terminal.Gui │
  557. │ │
  558. │ {btn} │
  559. └────────────────────────────────────────┘
  560. ",
  561. _output
  562. );
  563. Application.RequestStop ();
  564. }
  565. };
  566. Application.Run (top);
  567. top.Dispose ();
  568. }
  569. [Fact (Skip = "Dim.Auto WIP")]
  570. [AutoInitShutdown]
  571. public void Size_None_No_Buttons ()
  572. {
  573. int iterations = -1;
  574. Application.Iteration += (s, a) =>
  575. {
  576. iterations++;
  577. if (iterations == 0)
  578. {
  579. MessageBox.Query ("Title", "Message");
  580. Application.RequestStop ();
  581. }
  582. else if (iterations == 1)
  583. {
  584. Application.Refresh ();
  585. TestHelpers.AssertDriverContentsWithFrameAre (
  586. @"
  587. ┌┤Title├───────────────────────────────────────┐
  588. │ Message │
  589. │ │
  590. │ │
  591. └──────────────────────────────────────────────┘
  592. ",
  593. _output
  594. );
  595. Application.RequestStop ();
  596. }
  597. };
  598. Application.Run ().Dispose ();
  599. }
  600. [Theory]
  601. [InlineData (0, 0, "1")]
  602. [InlineData (1, 1, "1")]
  603. [InlineData (7, 5, "1")]
  604. [InlineData (50, 50, "1")]
  605. [InlineData (0, 0, "message")]
  606. [InlineData (1, 1, "message")]
  607. [InlineData (7, 5, "message")]
  608. [InlineData (50, 50, "message")]
  609. [AutoInitShutdown]
  610. public void Size_Not_Default_Message (int height, int width, string message)
  611. {
  612. int iterations = -1;
  613. ((FakeDriver)Application.Driver).SetBufferSize (100, 100);
  614. Application.Iteration += (s, a) =>
  615. {
  616. iterations++;
  617. if (iterations == 0)
  618. {
  619. MessageBox.Query (height, width, string.Empty, message, null);
  620. Application.RequestStop ();
  621. }
  622. else if (iterations == 1)
  623. {
  624. Application.Refresh ();
  625. Assert.IsType<Dialog> (Application.Current);
  626. Assert.Equal (new (height, width), Application.Current.Frame.Size);
  627. Application.RequestStop ();
  628. }
  629. };
  630. }
  631. [Theory]
  632. [InlineData (0, 0, "1")]
  633. [InlineData (1, 1, "1")]
  634. [InlineData (7, 5, "1")]
  635. [InlineData (50, 50, "1")]
  636. [InlineData (0, 0, "message")]
  637. [InlineData (1, 1, "message")]
  638. [InlineData (7, 5, "message")]
  639. [InlineData (50, 50, "message")]
  640. [AutoInitShutdown]
  641. public void Size_Not_Default_Message_Button (int height, int width, string message)
  642. {
  643. int iterations = -1;
  644. ((FakeDriver)Application.Driver).SetBufferSize (100, 100);
  645. Application.Iteration += (s, a) =>
  646. {
  647. iterations++;
  648. if (iterations == 0)
  649. {
  650. MessageBox.Query (height, width, string.Empty, message, "_Ok");
  651. Application.RequestStop ();
  652. }
  653. else if (iterations == 1)
  654. {
  655. Application.Refresh ();
  656. Assert.IsType<Dialog> (Application.Current);
  657. Assert.Equal (new (height, width), Application.Current.Frame.Size);
  658. Application.RequestStop ();
  659. }
  660. };
  661. }
  662. [Theory]
  663. [InlineData (0, 0)]
  664. [InlineData (1, 1)]
  665. [InlineData (7, 5)]
  666. [InlineData (50, 50)]
  667. [AutoInitShutdown]
  668. public void Size_Not_Default_No_Message (int height, int width)
  669. {
  670. int iterations = -1;
  671. ((FakeDriver)Application.Driver).SetBufferSize (100, 100);
  672. Application.Iteration += (s, a) =>
  673. {
  674. iterations++;
  675. if (iterations == 0)
  676. {
  677. MessageBox.Query (height, width, string.Empty, string.Empty, null);
  678. Application.RequestStop ();
  679. }
  680. else if (iterations == 1)
  681. {
  682. Application.Refresh ();
  683. Assert.IsType<Dialog> (Application.Current);
  684. Assert.Equal (new (height, width), Application.Current.Frame.Size);
  685. Application.RequestStop ();
  686. }
  687. };
  688. }
  689. // TODO: Reimplement once messagebox ues Dim.Auto
  690. // [Fact]
  691. // [AutoInitShutdown]
  692. // public void Size_Tiny_Fixed_Size ()
  693. // {
  694. // int iterations = -1;
  695. // Application.Iteration += (s, a) =>
  696. // {
  697. // iterations++;
  698. // if (iterations == 0)
  699. // {
  700. // MessageBox.Query (7, 5, string.Empty, "Message", "_Ok");
  701. // Application.RequestStop ();
  702. // }
  703. // else if (iterations == 1)
  704. // {
  705. // Application.Refresh ();
  706. // Assert.Equal (new (7, 5), Application.Current.Frame.Size);
  707. // TestHelpers.AssertDriverContentsWithFrameAre (
  708. // @$"
  709. // ┌─────┐
  710. // │Messa│
  711. // │ ge │
  712. // │ Ok {
  713. // CM.Glyphs.RightDefaultIndicator
  714. // }│
  715. // └─────┘
  716. //",
  717. // _output
  718. // );
  719. // Application.RequestStop ();
  720. // }
  721. // };
  722. // Application.Run ().Dispose ();
  723. // }
  724. }