Pos.CenterTests.cs 10 KB

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