Pos.CenterTests.cs 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. using Microsoft.VisualStudio.TestPlatform.Utilities;
  2. using Xunit.Abstractions;
  3. using static Terminal.Gui.Dim;
  4. using static Terminal.Gui.Pos;
  5. namespace Terminal.Gui.LayoutTests;
  6. public class PosCenterTests (ITestOutputHelper output)
  7. {
  8. private readonly ITestOutputHelper _output = output;
  9. [Fact]
  10. public void PosCenter_Constructor ()
  11. {
  12. var posCenter = new PosCenter ();
  13. Assert.NotNull (posCenter);
  14. }
  15. [Fact]
  16. public void PosCenter_Equals ()
  17. {
  18. var posCenter1 = new PosCenter ();
  19. var posCenter2 = new PosCenter ();
  20. Assert.False (posCenter1.Equals (posCenter2));
  21. Assert.False (posCenter2.Equals (posCenter1));
  22. }
  23. [Fact]
  24. public void PosCenter_ToString ()
  25. {
  26. var posCenter = new PosCenter ();
  27. var expectedString = "Center";
  28. Assert.Equal (expectedString, posCenter.ToString ());
  29. }
  30. [Fact]
  31. public void PosCenter_GetAnchor ()
  32. {
  33. var posCenter = new PosCenter ();
  34. var width = 50;
  35. var expectedAnchor = width / 2;
  36. Assert.Equal (expectedAnchor, posCenter.GetAnchor (width));
  37. }
  38. [Fact]
  39. public void PosCenter_CreatesCorrectInstance ()
  40. {
  41. var pos = Pos.Center ();
  42. Assert.IsType<PosCenter> (pos);
  43. }
  44. [Fact]
  45. public void PosCenter_Calculate_ReturnsExpectedValue ()
  46. {
  47. var posCenter = new PosCenter ();
  48. var result = posCenter.Calculate (10, new DimAbsolute (2), null, Dimension.None);
  49. Assert.Equal (4, result);
  50. }
  51. [Theory]
  52. [AutoInitShutdown]
  53. [InlineData (1)]
  54. [InlineData (2)]
  55. [InlineData (3)]
  56. [InlineData (4)]
  57. [InlineData (5)]
  58. [InlineData (6)]
  59. [InlineData (7)]
  60. [InlineData (8)]
  61. [InlineData (9)]
  62. [InlineData (10)]
  63. public void PosCenter_SubView_85_Percent_Height (int height)
  64. {
  65. var win = new Window { Width = Dim.Fill (), Height = Dim.Fill () };
  66. var subview = new Window
  67. {
  68. X = Pos.Center (), Y = Pos.Center (), Width = Dim.Percent (85), Height = Dim.Percent (85)
  69. };
  70. win.Add (subview);
  71. RunState rs = Application.Begin (win);
  72. var firstIteration = false;
  73. ((FakeDriver)Application.Driver).SetBufferSize (20, height);
  74. Application.RunIteration (ref rs, ref firstIteration);
  75. var expected = string.Empty;
  76. switch (height)
  77. {
  78. case 1:
  79. //Assert.Equal (new (0, 0, 17, 0), subview.Frame);
  80. expected = @"
  81. ────────────────────";
  82. break;
  83. case 2:
  84. //Assert.Equal (new (0, 0, 17, 1), subview.Frame);
  85. expected = @"
  86. ┌──────────────────┐
  87. └──────────────────┘
  88. ";
  89. break;
  90. case 3:
  91. //Assert.Equal (new (0, 0, 17, 2), subview.Frame);
  92. expected = @"
  93. ┌──────────────────┐
  94. │ │
  95. └──────────────────┘
  96. ";
  97. break;
  98. case 4:
  99. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  100. expected = @"
  101. ┌──────────────────┐
  102. │ ─────────────── │
  103. │ │
  104. └──────────────────┘";
  105. break;
  106. case 5:
  107. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  108. expected = @"
  109. ┌──────────────────┐
  110. │ ┌─────────────┐ │
  111. │ └─────────────┘ │
  112. │ │
  113. └──────────────────┘";
  114. break;
  115. case 6:
  116. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  117. expected = @"
  118. ┌──────────────────┐
  119. │ ┌─────────────┐ │
  120. │ │ │ │
  121. │ └─────────────┘ │
  122. │ │
  123. └──────────────────┘";
  124. break;
  125. case 7:
  126. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  127. expected = @"
  128. ┌──────────────────┐
  129. │ ┌─────────────┐ │
  130. │ │ │ │
  131. │ │ │ │
  132. │ └─────────────┘ │
  133. │ │
  134. └──────────────────┘";
  135. break;
  136. case 8:
  137. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  138. expected = @"
  139. ┌──────────────────┐
  140. │ ┌─────────────┐ │
  141. │ │ │ │
  142. │ │ │ │
  143. │ │ │ │
  144. │ └─────────────┘ │
  145. │ │
  146. └──────────────────┘";
  147. break;
  148. case 9:
  149. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  150. expected = @"
  151. ┌──────────────────┐
  152. │ │
  153. │ ┌─────────────┐ │
  154. │ │ │ │
  155. │ │ │ │
  156. │ │ │ │
  157. │ └─────────────┘ │
  158. │ │
  159. └──────────────────┘";
  160. break;
  161. case 10:
  162. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  163. expected = @"
  164. ┌──────────────────┐
  165. │ │
  166. │ ┌─────────────┐ │
  167. │ │ │ │
  168. │ │ │ │
  169. │ │ │ │
  170. │ │ │ │
  171. │ └─────────────┘ │
  172. │ │
  173. └──────────────────┘"
  174. ;
  175. break;
  176. }
  177. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  178. Application.End (rs);
  179. }
  180. [Theory]
  181. [AutoInitShutdown]
  182. [InlineData (1)]
  183. [InlineData (2)]
  184. [InlineData (3)]
  185. [InlineData (4)]
  186. [InlineData (5)]
  187. [InlineData (6)]
  188. [InlineData (7)]
  189. [InlineData (8)]
  190. [InlineData (9)]
  191. [InlineData (10)]
  192. public void PosCenter_SubView_85_Percent_Width (int width)
  193. {
  194. var win = new Window { Width = Dim.Fill (), Height = Dim.Fill () };
  195. var subview = new Window
  196. {
  197. X = Pos.Center (), Y = Pos.Center (), Width = Dim.Percent (85), Height = Dim.Percent (85)
  198. };
  199. win.Add (subview);
  200. RunState rs = Application.Begin (win);
  201. var firstIteration = false;
  202. ((FakeDriver)Application.Driver).SetBufferSize (width, 7);
  203. Application.RunIteration (ref rs, ref firstIteration);
  204. var expected = string.Empty;
  205. switch (width)
  206. {
  207. case 1:
  208. Assert.Equal (new Rectangle (0, 0, 0, 4), subview.Frame);
  209. expected = @"
  210. │";
  211. break;
  212. case 2:
  213. Assert.Equal (new Rectangle (0, 0, 0, 4), subview.Frame);
  214. expected = @"
  215. ┌┐
  216. ││
  217. ││
  218. ││
  219. ││
  220. ││
  221. └┘";
  222. break;
  223. case 3:
  224. Assert.Equal (new Rectangle (0, 0, 0, 4), subview.Frame);
  225. expected = @"
  226. ┌─┐
  227. │ │
  228. │ │
  229. │ │
  230. │ │
  231. │ │
  232. └─┘";
  233. break;
  234. case 4:
  235. Assert.Equal (new Rectangle (0, 0, 1, 4), subview.Frame);
  236. expected = @"
  237. ┌──┐
  238. ││ │
  239. ││ │
  240. ││ │
  241. ││ │
  242. │ │
  243. └──┘";
  244. break;
  245. case 5:
  246. Assert.Equal (new Rectangle (0, 0, 2, 4), subview.Frame);
  247. expected = @"
  248. ┌───┐
  249. │┌┐ │
  250. │││ │
  251. │││ │
  252. │└┘ │
  253. │ │
  254. └───┘";
  255. break;
  256. case 6:
  257. Assert.Equal (new Rectangle (0, 0, 3, 4), subview.Frame);
  258. expected = @"
  259. ┌────┐
  260. │┌─┐ │
  261. ││ │ │
  262. ││ │ │
  263. │└─┘ │
  264. │ │
  265. └────┘";
  266. break;
  267. case 7:
  268. Assert.Equal (new Rectangle (0, 0, 4, 4), subview.Frame);
  269. expected = @"
  270. ┌─────┐
  271. │┌──┐ │
  272. ││ │ │
  273. ││ │ │
  274. │└──┘ │
  275. │ │
  276. └─────┘";
  277. break;
  278. case 8:
  279. Assert.Equal (new Rectangle (0, 0, 5, 4), subview.Frame);
  280. expected = @"
  281. ┌──────┐
  282. │┌───┐ │
  283. ││ │ │
  284. ││ │ │
  285. │└───┘ │
  286. │ │
  287. └──────┘";
  288. break;
  289. case 9:
  290. Assert.Equal (new Rectangle (1, 0, 5, 4), subview.Frame);
  291. expected = @"
  292. ┌───────┐
  293. │ ┌───┐ │
  294. │ │ │ │
  295. │ │ │ │
  296. │ └───┘ │
  297. │ │
  298. └───────┘";
  299. break;
  300. case 10:
  301. Assert.Equal (new Rectangle (1, 0, 6, 4), subview.Frame);
  302. expected = @"
  303. ┌────────┐
  304. │ ┌────┐ │
  305. │ │ │ │
  306. │ │ │ │
  307. │ └────┘ │
  308. │ │
  309. └────────┘"
  310. ;
  311. break;
  312. }
  313. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  314. Application.End (rs);
  315. }
  316. }