Pos.CenterTests.cs 10 KB

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