Pos.CenterTests.cs 10 KB

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