MessageBoxTests.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. using System.Threading.Tasks;
  2. using Xunit;
  3. using Xunit.Abstractions;
  4. using System.Text;
  5. using Terminal.Gui;
  6. namespace Terminal.Gui.TopLevelTests {
  7. public class MessageBoxTests {
  8. readonly ITestOutputHelper output;
  9. public MessageBoxTests (ITestOutputHelper output)
  10. {
  11. this.output = output;
  12. }
  13. [Fact, AutoInitShutdown]
  14. public void MessageBox_With_Empty_Size_Without_Buttons ()
  15. {
  16. var iterations = -1;
  17. Application.Begin (Application.Top);
  18. Application.Iteration += () => {
  19. iterations++;
  20. if (iterations == 0) {
  21. MessageBox.Query ("Title", "Message");
  22. Application.RequestStop ();
  23. } else if (iterations == 1) {
  24. Application.Refresh ();
  25. TestHelpers.AssertDriverContentsWithFrameAre (@"
  26. ┌ Title ───────────────────────────────────────┐
  27. │ Message │
  28. │ │
  29. │ │
  30. └──────────────────────────────────────────────┘
  31. ", output);
  32. Application.RequestStop ();
  33. }
  34. };
  35. Application.Run ();
  36. }
  37. [Fact, AutoInitShutdown]
  38. public void MessageBox_With_Empty_Size_With_Button ()
  39. {
  40. var iterations = -1;
  41. Application.Begin (Application.Top);
  42. Application.Iteration += () => {
  43. iterations++;
  44. if (iterations == 0) {
  45. var aboutMessage = new StringBuilder ();
  46. aboutMessage.AppendLine (@"A comprehensive sample library for");
  47. aboutMessage.AppendLine (@"");
  48. aboutMessage.AppendLine (@" _______ _ _ _____ _ ");
  49. aboutMessage.AppendLine (@" |__ __| (_) | | / ____| (_) ");
  50. aboutMessage.AppendLine (@" | | ___ _ __ _ __ ___ _ _ __ __ _| || | __ _ _ _ ");
  51. aboutMessage.AppendLine (@" | |/ _ \ '__| '_ ` _ \| | '_ \ / _` | || | |_ | | | | | ");
  52. aboutMessage.AppendLine (@" | | __/ | | | | | | | | | | | (_| | || |__| | |_| | | ");
  53. aboutMessage.AppendLine (@" |_|\___|_| |_| |_| |_|_|_| |_|\__,_|_(_)_____|\__,_|_| ");
  54. aboutMessage.AppendLine (@"");
  55. aboutMessage.AppendLine (@"https://github.com/gui-cs/Terminal.Gui");
  56. MessageBox.Query ("About UI Catalog", aboutMessage.ToString (), "_Ok");
  57. Application.RequestStop ();
  58. } else if (iterations == 1) {
  59. Application.Refresh ();
  60. TestHelpers.AssertDriverContentsWithFrameAre (@"
  61. ┌ About UI Catalog ──────────────────────────────────────────┐
  62. │ A comprehensive sample library for │
  63. │ │
  64. │ _______ _ _ _____ _ │
  65. │ |__ __| (_) | | / ____| (_) │
  66. │ | | ___ _ __ _ __ ___ _ _ __ __ _| || | __ _ _ _ │
  67. │ | |/ _ \ '__| '_ ` _ \| | '_ \ / _` | || | |_ | | | | | │
  68. │ | | __/ | | | | | | | | | | | (_| | || |__| | |_| | | │
  69. │ |_|\___|_| |_| |_| |_|_|_| |_|\__,_|_(_)_____|\__,_|_| │
  70. │ │
  71. │ https://github.com/gui-cs/Terminal.Gui │
  72. │ │
  73. │ [◦ Ok ◦] │
  74. └────────────────────────────────────────────────────────────┘
  75. ", output);
  76. Application.RequestStop ();
  77. }
  78. };
  79. Application.Run ();
  80. }
  81. [Fact, AutoInitShutdown]
  82. public void MessageBox_With_A_Lower_Fixed_Size ()
  83. {
  84. var iterations = -1;
  85. Application.Begin (Application.Top);
  86. Application.Iteration += () => {
  87. iterations++;
  88. if (iterations == 0) {
  89. MessageBox.Query (7, 5, "Title", "Message", "_Ok");
  90. Application.RequestStop ();
  91. } else if (iterations == 1) {
  92. Application.Refresh ();
  93. TestHelpers.AssertDriverContentsWithFrameAre (@"
  94. ┌─────┐
  95. │Messa│
  96. │ ge │
  97. │ Ok ◦│
  98. └─────┘
  99. ", output);
  100. Application.RequestStop ();
  101. }
  102. };
  103. Application.Run ();
  104. }
  105. [Fact, AutoInitShutdown]
  106. public void MessageBox_With_A_Enough_Fixed_Size ()
  107. {
  108. var iterations = -1;
  109. Application.Begin (Application.Top);
  110. Application.Iteration += () => {
  111. iterations++;
  112. if (iterations == 0) {
  113. MessageBox.Query (11, 5, "Title", "Message", "_Ok");
  114. Application.RequestStop ();
  115. } else if (iterations == 1) {
  116. Application.Refresh ();
  117. TestHelpers.AssertDriverContentsWithFrameAre (@"
  118. ┌ Title ──┐
  119. │ Message │
  120. │ │
  121. │[◦ Ok ◦] │
  122. └─────────┘
  123. ", output);
  124. Application.RequestStop ();
  125. }
  126. };
  127. Application.Run ();
  128. }
  129. [Fact, AutoInitShutdown]
  130. public void MessageBox_With_A_Label_Without_Spaces ()
  131. {
  132. var iterations = -1;
  133. Application.Begin (Application.Top);
  134. Application.Iteration += () => {
  135. iterations++;
  136. if (iterations == 0) {
  137. MessageBox.Query ("mywindow", new string ('f', 2000), "ok");
  138. Application.RequestStop ();
  139. } else if (iterations == 1) {
  140. Application.Refresh ();
  141. TestHelpers.AssertDriverContentsWithFrameAre (@"
  142. ┌ mywindow ────────────────────────────────────────────────────────────────────┐
  143. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  144. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  145. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  146. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  147. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  148. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  149. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  150. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  151. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  152. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  153. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  154. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  155. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  156. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  157. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  158. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  159. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  160. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  161. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  162. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  163. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  164. │ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
  165. │ [◦ ok ◦] │
  166. └──────────────────────────────────────────────────────────────────────────────┘
  167. ", output);
  168. Application.RequestStop ();
  169. }
  170. };
  171. Application.Run ();
  172. }
  173. [Fact, AutoInitShutdown]
  174. public void MessageBox_With_A_Label_With_Spaces ()
  175. {
  176. var iterations = -1;
  177. Application.Begin (Application.Top);
  178. Application.Iteration += () => {
  179. iterations++;
  180. if (iterations == 0) {
  181. var sb = new StringBuilder ();
  182. for (int i = 0; i < 1000; i++)
  183. sb.Append ("ff ");
  184. MessageBox.Query ("mywindow", sb.ToString (), "ok");
  185. Application.RequestStop ();
  186. } else if (iterations == 1) {
  187. Application.Refresh ();
  188. TestHelpers.AssertDriverContentsWithFrameAre (@"
  189. ┌ mywindow ────────────────────────────────────────────────────────────────────┐
  190. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  191. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  192. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  193. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  194. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  195. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  196. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  197. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  198. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  199. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  200. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  201. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  202. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  203. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  204. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  205. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  206. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  207. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  208. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  209. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  210. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  211. │ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
  212. │ [◦ ok ◦] │
  213. └──────────────────────────────────────────────────────────────────────────────┘
  214. ", output);
  215. Application.RequestStop ();
  216. }
  217. };
  218. Application.Run ();
  219. }
  220. }
  221. }