Pos.CenterTests.cs 9.4 KB

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