MessageBoxTests.cs 36 KB

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