MessageBoxTests.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. using System.Threading.Tasks;
  2. using Xunit;
  3. using Xunit.Abstractions;
  4. using System.Text;
  5. using Terminal.Gui;
  6. namespace Terminal.Gui.DialogTests {
  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_Smaller_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. ┌┤Tit├┐
  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_WrapMessagge_True ()
  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. └──────────────────────────────────────────────────────────────────────────────┘", output);
  167. Application.RequestStop ();
  168. }
  169. };
  170. Application.Run ();
  171. }
  172. [Fact, AutoInitShutdown]
  173. public void MessageBox_With_A_Label_With_Spaces_WrapMessagge_True ()
  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.Refresh ();
  187. TestHelpers.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. └──────────────────────────────────────────────────────────────────────────────┘", output);
  213. Application.RequestStop ();
  214. }
  215. };
  216. Application.Run ();
  217. }
  218. [Fact, AutoInitShutdown]
  219. public void MessageBox_With_A_Label_Without_Spaces_WrapMessagge_False ()
  220. {
  221. var iterations = -1;
  222. Application.Begin (Application.Top);
  223. Application.Iteration += () => {
  224. iterations++;
  225. if (iterations == 0) {
  226. MessageBox.Query ("mywindow", new string ('f', 2000), 0, false, "ok");
  227. Application.RequestStop ();
  228. } else if (iterations == 1) {
  229. Application.Refresh ();
  230. TestHelpers.AssertDriverContentsWithFrameAre (@"
  231. ────────────────────────────────────────────────────────────────────────────────
  232. ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  233. [◦ ok ◦]
  234. ────────────────────────────────────────────────────────────────────────────────", output);
  235. Application.RequestStop ();
  236. }
  237. };
  238. Application.Run ();
  239. }
  240. [Fact, AutoInitShutdown]
  241. public void MessageBox_With_A_Label_With_Spaces_WrapMessagge_False ()
  242. {
  243. var iterations = -1;
  244. Application.Begin (Application.Top);
  245. Application.Iteration += () => {
  246. iterations++;
  247. if (iterations == 0) {
  248. var sb = new StringBuilder ();
  249. for (int i = 0; i < 1000; i++)
  250. sb.Append ("ff ");
  251. MessageBox.Query ("mywindow", sb.ToString (), 0, false, "ok");
  252. Application.RequestStop ();
  253. } else if (iterations == 1) {
  254. Application.Refresh ();
  255. TestHelpers.AssertDriverContentsWithFrameAre (@"
  256. ────────────────────────────────────────────────────────────────────────────────
  257. 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 f
  258. [◦ ok ◦]
  259. ────────────────────────────────────────────────────────────────────────────────", output);
  260. Application.RequestStop ();
  261. }
  262. };
  263. Application.Run ();
  264. }
  265. [Theory, AutoInitShutdown]
  266. [InlineData ("", true)]
  267. [InlineData ("", false)]
  268. [InlineData ("\n", true)]
  269. [InlineData ("\n", false)]
  270. public void MessageBox_With_A_Empty_Message_Or_A_NewLline_WrapMessagge_True_Or_False (string message, bool wrapMessage)
  271. {
  272. var iterations = -1;
  273. Application.Begin (Application.Top);
  274. Application.Iteration += () => {
  275. iterations++;
  276. if (iterations == 0) {
  277. MessageBox.Query ("mywindow", message, 0, wrapMessage, "ok");
  278. Application.RequestStop ();
  279. } else if (iterations == 1) {
  280. Application.Refresh ();
  281. TestHelpers.AssertDriverContentsWithFrameAre (@"
  282. ┌┤mywindow├────────────────────────────────────┐
  283. │ │
  284. │ │
  285. │ [◦ ok ◦] │
  286. └──────────────────────────────────────────────┘", output);
  287. Application.RequestStop ();
  288. }
  289. };
  290. Application.Run ();
  291. }
  292. }
  293. }