MessageBoxTests.cs 11 KB

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