MessageBoxTests.cs 37 KB

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