ThicknessTests.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. namespace Terminal.Gui.DrawingTests;
  2. public class ThicknessTests
  3. {
  4. [Fact]
  5. public void Constructor_Defaults ()
  6. {
  7. var t = new Thickness ();
  8. Assert.Equal (0, t.Left);
  9. Assert.Equal (0, t.Top);
  10. Assert.Equal (0, t.Right);
  11. Assert.Equal (0, t.Bottom);
  12. }
  13. [Fact]
  14. public void Constructor_params ()
  15. {
  16. var t = new Thickness (1, 2, 3, 4);
  17. Assert.Equal (1, t.Left);
  18. Assert.Equal (2, t.Top);
  19. Assert.Equal (3, t.Right);
  20. Assert.Equal (4, t.Bottom);
  21. t = new (0, 0, 0, 0);
  22. Assert.Equal (0, t.Left);
  23. Assert.Equal (0, t.Top);
  24. Assert.Equal (0, t.Right);
  25. Assert.Equal (0, t.Bottom);
  26. t = new (-1, 0, 0, 0);
  27. Assert.Equal (-1, t.Left);
  28. Assert.Equal (0, t.Top);
  29. Assert.Equal (0, t.Right);
  30. Assert.Equal (0, t.Bottom);
  31. }
  32. [Fact]
  33. public void Constructor_Width ()
  34. {
  35. var t = new Thickness (1);
  36. Assert.Equal (1, t.Left);
  37. Assert.Equal (1, t.Top);
  38. Assert.Equal (1, t.Right);
  39. Assert.Equal (1, t.Bottom);
  40. }
  41. [Fact]
  42. public void Empty_Is_empty ()
  43. {
  44. var t = Thickness.Empty;
  45. Assert.Equal (0, t.Left);
  46. Assert.Equal (0, t.Top);
  47. Assert.Equal (0, t.Right);
  48. Assert.Equal (0, t.Bottom);
  49. }
  50. // TODO: Add more test cases:
  51. // - Negative thickness values
  52. [Fact]
  53. public void EqualsTest ()
  54. {
  55. var t = new Thickness (1, 2, 3, 4);
  56. var t2 = new Thickness (1, 2, 3, 4);
  57. Assert.True (t.Equals (t2));
  58. Assert.True (t == t2);
  59. Assert.False (t != t2);
  60. }
  61. [Fact]
  62. public void GetHashCodeTest ()
  63. {
  64. var t = new Thickness (1, 2, 3, 4);
  65. Assert.Equal (t.GetHashCode (), t.GetHashCode ());
  66. }
  67. // Test Thickness.GetInside(Rectangle)
  68. [Theory]
  69. [InlineData (0, 0, 10, 10, 1, 1, 8, 8)]
  70. [InlineData (1, 0, 10, 10, 2, 1, 8, 8)]
  71. [InlineData (0, 1, 10, 10, 1, 2, 8, 8)]
  72. public void GetInside_Uniform (int x, int y, int width, int height, int expectedX, int expectedY, int expectedWidth, int expectedHeight)
  73. {
  74. var t = new Thickness (1, 1, 1, 1); // Uniform thickness for simplicity
  75. var r = new Rectangle (x, y, width, height);
  76. Rectangle inside = t.GetInside (r);
  77. Assert.Equal (expectedX, inside.X);
  78. Assert.Equal (expectedY, inside.Y);
  79. Assert.Equal (expectedWidth, inside.Width);
  80. Assert.Equal (expectedHeight, inside.Height);
  81. }
  82. [Fact]
  83. public void GetInsideTests_Mixed_Pos_Neg_Thickness_Non_Empty_Size ()
  84. {
  85. var t = new Thickness (-1, 1, -1, 1);
  86. var r = new Rectangle (0, 0, 3, 3);
  87. Rectangle inside = t.GetInside (r);
  88. Assert.Equal (-1, inside.X);
  89. Assert.Equal (1, inside.Y);
  90. Assert.Equal (5, inside.Width);
  91. Assert.Equal (1, inside.Height);
  92. t = new (-1, 1, -1, 1);
  93. r = new (-1, -1, 3, 3);
  94. inside = t.GetInside (r);
  95. Assert.Equal (-2, inside.X);
  96. Assert.Equal (0, inside.Y);
  97. Assert.Equal (5, inside.Width);
  98. Assert.Equal (1, inside.Height);
  99. t = new (-1, 1, -1, 1);
  100. r = new (1, 1, 3, 3);
  101. inside = t.GetInside (r);
  102. Assert.Equal (0, inside.X);
  103. Assert.Equal (2, inside.Y);
  104. Assert.Equal (5, inside.Width);
  105. Assert.Equal (1, inside.Height);
  106. t = new (-2, -1, 0, 1);
  107. r = new (-1, 0, 50, 60);
  108. inside = t.GetInside (r);
  109. Assert.Equal (-3, inside.X);
  110. Assert.Equal (-1, inside.Y);
  111. Assert.Equal (52, inside.Width);
  112. Assert.Equal (60, inside.Height);
  113. }
  114. [Fact]
  115. public void GetInsideTests_Negative_Thickness_Non_Empty_Size ()
  116. {
  117. var t = new Thickness (-1, -1, -1, -1);
  118. var r = new Rectangle (0, 0, 3, 3);
  119. Rectangle inside = t.GetInside (r);
  120. Assert.Equal (-1, inside.X);
  121. Assert.Equal (-1, inside.Y);
  122. Assert.Equal (5, inside.Width);
  123. Assert.Equal (5, inside.Height);
  124. t = new (-1, -1, -1, -1);
  125. r = new (-1, -1, 3, 3);
  126. inside = t.GetInside (r);
  127. Assert.Equal (-2, inside.X);
  128. Assert.Equal (-2, inside.Y);
  129. Assert.Equal (5, inside.Width);
  130. Assert.Equal (5, inside.Height);
  131. t = new (-1, -1, -1, -1);
  132. r = new (1, 1, 3, 3);
  133. inside = t.GetInside (r);
  134. Assert.Equal (0, inside.X);
  135. Assert.Equal (0, inside.Y);
  136. Assert.Equal (5, inside.Width);
  137. Assert.Equal (5, inside.Height);
  138. t = new (-1, -2, -3, -4);
  139. r = new (-1, 0, 50, 60);
  140. inside = t.GetInside (r);
  141. Assert.Equal (-2, inside.X);
  142. Assert.Equal (-2, inside.Y);
  143. Assert.Equal (54, inside.Width);
  144. Assert.Equal (66, inside.Height);
  145. }
  146. [Fact]
  147. public void GetInsideTests_Positive_Thickness_Non_Empty_Size ()
  148. {
  149. var t = new Thickness (1, 1, 1, 1);
  150. var r = new Rectangle (0, 0, 3, 3);
  151. Rectangle inside = t.GetInside (r);
  152. Assert.Equal (1, inside.X);
  153. Assert.Equal (1, inside.Y);
  154. Assert.Equal (1, inside.Width);
  155. Assert.Equal (1, inside.Height);
  156. t = new (1, 1, 1, 1);
  157. r = new (-1, -1, 3, 3);
  158. inside = t.GetInside (r);
  159. Assert.Equal (0, inside.X);
  160. Assert.Equal (0, inside.Y);
  161. Assert.Equal (1, inside.Width);
  162. Assert.Equal (1, inside.Height);
  163. t = new (1, 1, 1, 1);
  164. r = new (1, 1, 3, 3);
  165. inside = t.GetInside (r);
  166. Assert.Equal (2, inside.X);
  167. Assert.Equal (2, inside.Y);
  168. Assert.Equal (1, inside.Width);
  169. Assert.Equal (1, inside.Height);
  170. t = new (1, 2, 3, 4);
  171. r = new (-1, 0, 50, 60);
  172. inside = t.GetInside (r);
  173. Assert.Equal (0, inside.X);
  174. Assert.Equal (2, inside.Y);
  175. Assert.Equal (46, inside.Width);
  176. Assert.Equal (54, inside.Height);
  177. }
  178. [Fact]
  179. public void GetInsideTests_Positive_Thickness_Too_Small_Rect_Means_Empty_Size ()
  180. {
  181. var t = new Thickness (1, 1, 1, 1);
  182. var r = Rectangle.Empty;
  183. Rectangle inside = t.GetInside (r);
  184. Assert.Equal (1, inside.X);
  185. Assert.Equal (1, inside.Y);
  186. Assert.Equal (0, inside.Width);
  187. Assert.Equal (0, inside.Height);
  188. t = new (1, 1, 1, 1);
  189. r = new (0, 0, 1, 1);
  190. inside = t.GetInside (r);
  191. Assert.Equal (1, inside.X);
  192. Assert.Equal (1, inside.Y);
  193. Assert.Equal (0, inside.Width);
  194. Assert.Equal (0, inside.Height);
  195. t = new (1, 1, 1, 1);
  196. r = new (1, 1, 1, 1);
  197. inside = t.GetInside (r);
  198. Assert.Equal (2, inside.X);
  199. Assert.Equal (2, inside.Y);
  200. Assert.Equal (0, inside.Width);
  201. Assert.Equal (0, inside.Height);
  202. t = new (1, 1, 1, 1);
  203. r = new (0, 0, 1, 0);
  204. inside = t.GetInside (r);
  205. Assert.Equal (1, inside.X);
  206. Assert.Equal (1, inside.Y);
  207. Assert.Equal (0, inside.Width);
  208. Assert.Equal (0, inside.Height);
  209. t = new (1, 1, 1, 1);
  210. r = new (0, 0, 0, 1);
  211. inside = t.GetInside (r);
  212. Assert.Equal (1, inside.X);
  213. Assert.Equal (1, inside.Y);
  214. Assert.Equal (0, inside.Width);
  215. Assert.Equal (0, inside.Height);
  216. t = new (1, 1, 1, 1);
  217. r = new (-1, -1, 0, 1);
  218. inside = t.GetInside (r);
  219. Assert.Equal (0, inside.X);
  220. Assert.Equal (0, inside.Y);
  221. Assert.Equal (0, inside.Width);
  222. Assert.Equal (0, inside.Height);
  223. t = new (1, 1, 1, 1);
  224. r = new (0, 0, 2, 2);
  225. inside = t.GetInside (r);
  226. Assert.Equal (1, inside.X);
  227. Assert.Equal (1, inside.Y);
  228. Assert.Equal (0, inside.Width);
  229. Assert.Equal (0, inside.Height);
  230. t = new (1, 1, 1, 1);
  231. r = new (-1, -1, 2, 2);
  232. inside = t.GetInside (r);
  233. Assert.Equal (0, inside.X);
  234. Assert.Equal (0, inside.Y);
  235. Assert.Equal (0, inside.Width);
  236. Assert.Equal (0, inside.Height);
  237. t = new (1, 1, 1, 1);
  238. r = new (1, 1, 2, 2);
  239. inside = t.GetInside (r);
  240. Assert.Equal (2, inside.X);
  241. Assert.Equal (2, inside.Y);
  242. Assert.Equal (0, inside.Width);
  243. Assert.Equal (0, inside.Height);
  244. t = new (1, 2, 3, 4);
  245. r = new (-1, 0, 4, 6);
  246. inside = t.GetInside (r);
  247. Assert.Equal (0, inside.X);
  248. Assert.Equal (2, inside.Y);
  249. Assert.Equal (0, inside.Width);
  250. Assert.Equal (0, inside.Height);
  251. }
  252. [Fact]
  253. public void GetInsideTests_Zero_Thickness ()
  254. {
  255. var t = new Thickness (0, 0, 0, 0);
  256. var r = Rectangle.Empty;
  257. Rectangle inside = t.GetInside (r);
  258. Assert.Equal (0, inside.X);
  259. Assert.Equal (0, inside.Y);
  260. Assert.Equal (0, inside.Width);
  261. Assert.Equal (0, inside.Height);
  262. t = new (0, 0, 0, 0);
  263. r = new (0, 0, 1, 1);
  264. inside = t.GetInside (r);
  265. Assert.Equal (0, inside.X);
  266. Assert.Equal (0, inside.Y);
  267. Assert.Equal (1, inside.Width);
  268. Assert.Equal (1, inside.Height);
  269. t = new (0, 0, 0, 0);
  270. r = new (1, 1, 1, 1);
  271. inside = t.GetInside (r);
  272. Assert.Equal (1, inside.X);
  273. Assert.Equal (1, inside.Y);
  274. Assert.Equal (1, inside.Width);
  275. Assert.Equal (1, inside.Height);
  276. t = new (0, 0, 0, 0);
  277. r = new (0, 0, 1, 0);
  278. inside = t.GetInside (r);
  279. Assert.Equal (0, inside.X);
  280. Assert.Equal (0, inside.Y);
  281. Assert.Equal (1, inside.Width);
  282. Assert.Equal (0, inside.Height);
  283. t = new (0, 0, 0, 0);
  284. r = new (0, 0, 0, 1);
  285. inside = t.GetInside (r);
  286. Assert.Equal (0, inside.X);
  287. Assert.Equal (0, inside.Y);
  288. Assert.Equal (0, inside.Width);
  289. Assert.Equal (1, inside.Height);
  290. t = new (0, 0, 0, 0);
  291. r = new (-1, -1, 0, 1);
  292. inside = t.GetInside (r);
  293. Assert.Equal (-1, inside.X);
  294. Assert.Equal (-1, inside.Y);
  295. Assert.Equal (0, inside.Width);
  296. Assert.Equal (1, inside.Height);
  297. }
  298. [Fact]
  299. public void Horizontal_get ()
  300. {
  301. var t = new Thickness (1, 2, 3, 4);
  302. Assert.Equal (4, t.Horizontal);
  303. t = new (0);
  304. Assert.Equal (0, t.Horizontal);
  305. }
  306. [Fact]
  307. public void Horizontal_set ()
  308. {
  309. var t = new Thickness ();
  310. t.Horizontal = 10;
  311. Assert.Equal (10, t.Horizontal);
  312. Assert.Equal (5, t.Left);
  313. Assert.Equal (0, t.Top);
  314. Assert.Equal (5, t.Right);
  315. Assert.Equal (0, t.Bottom);
  316. Assert.Equal (0, t.Vertical);
  317. t.Horizontal = 11;
  318. Assert.Equal (10, t.Horizontal);
  319. Assert.Equal (5, t.Left);
  320. Assert.Equal (0, t.Top);
  321. Assert.Equal (5, t.Right);
  322. Assert.Equal (0, t.Bottom);
  323. Assert.Equal (0, t.Vertical);
  324. t.Horizontal = 1;
  325. Assert.Equal (0, t.Horizontal);
  326. Assert.Equal (0, t.Left);
  327. Assert.Equal (0, t.Top);
  328. Assert.Equal (0, t.Right);
  329. Assert.Equal (0, t.Bottom);
  330. Assert.Equal (0, t.Vertical);
  331. }
  332. [Theory]
  333. [InlineData (0, 0, 10, 10, 3, 3, false)] // Inside the inner rectangle
  334. [InlineData (0, 0, 10, 10, 0, 0, true)] // On corner, in thickness
  335. [InlineData (0, 0, 10, 10, 9, 9, true)] // On opposite corner, in thickness
  336. [InlineData (0, 0, 10, 10, 5, 5, false)] // Inside the inner rectangle
  337. [InlineData (0, 0, 10, 10, -1, -1, false)] // Outside the outer rectangle
  338. [InlineData (0, 0, 0, 0, 3, 3, false)] // Inside the inner rectangle
  339. [InlineData (0, 0, 0, 0, 0, 0, false)] // On corner, in thickness
  340. [InlineData (0, 0, 0, 0, 9, 9, false)] // On opposite corner, in thickness
  341. [InlineData (0, 0, 0, 0, 5, 5, false)] // Inside the inner rectangle
  342. [InlineData (0, 0, 0, 0, -1, -1, false)] // Outside the outer rectangle
  343. [InlineData (1, 1, 10, 10, 1, 1, true)] // On corner, in thickness
  344. [InlineData (1, 1, 10, 10, 10, 10, true)] // On opposite corner, in thickness
  345. [InlineData (1, 1, 10, 10, 6, 6, false)] // Inside the inner rectangle
  346. [InlineData (1, 1, 10, 10, 0, 0, false)] // Outside the outer rectangle
  347. [InlineData (-1, -1, 10, 10, -1, -1, true)] // On corner, in thickness
  348. [InlineData (-1, -1, 10, 10, 8, 8, true)] // On opposite corner, in thickness
  349. [InlineData (-1, -1, 10, 10, 4, 4, false)] // Inside the inner rectangle
  350. [InlineData (-1, -1, 10, 10, -2, -2, false)] // Outside the outer rectangle
  351. public void TestContains_Uniform1 (int x, int y, int width, int height, int pointX, int pointY, bool expected)
  352. {
  353. var rect = new Rectangle (x, y, width, height);
  354. var thickness = new Thickness (1, 1, 1, 1); // Uniform thickness for simplicity
  355. bool result = thickness.Contains (rect, new (pointX, pointY));
  356. Assert.Equal (expected, result);
  357. }
  358. [Theory]
  359. [InlineData (0, 0, 10, 10, 3, 3, false)] // Inside the inner rectangle
  360. [InlineData (0, 0, 10, 10, 0, 0, true)] // On corner, in thickness
  361. [InlineData (0, 0, 10, 10, 1, 1, true)] // On corner, in thickness
  362. [InlineData (0, 0, 10, 10, 9, 9, true)] // On opposite corner, in thickness
  363. [InlineData (0, 0, 10, 10, 5, 5, false)] // Inside the inner rectangle
  364. [InlineData (0, 0, 10, 10, 8, 8, true)] // On opposite corner, in thickness
  365. [InlineData (0, 0, 10, 10, -1, -1, false)] // Outside the outer rectangle
  366. // Test with a rectangle that is same size as the thickness (inner is empty)
  367. [InlineData (0, 0, 4, 4, 0, 0, true)] // in thickness
  368. [InlineData (0, 0, 4, 4, 1, 1, true)] // in thickness
  369. [InlineData (0, 0, 4, 4, 2, 2, true)] // in thickness
  370. [InlineData (0, 0, 4, 4, 3, 3, true)] // in thickness
  371. [InlineData (0, 0, 4, 4, 5, 5, false)] // outside outer rect
  372. [InlineData (0, 0, 4, 4, 4, 4, false)] // outside outer rect
  373. [InlineData (1, 1, 10, 10, 4, 4, false)] // Inside the inner rectangle
  374. [InlineData (1, 1, 10, 10, 1, 1, true)] // On corner, in thickness
  375. [InlineData (1, 1, 10, 10, 2, 2, true)] // On corner, in thickness
  376. [InlineData (1, 1, 10, 10, 10, 10, true)] // On opposite corner, in thickness
  377. [InlineData (1, 1, 10, 10, 6, 6, false)] // Inside the inner rectangle
  378. [InlineData (1, 1, 10, 10, 9, 9, true)] // On opposite corner, in thickness
  379. [InlineData (1, 1, 10, 10, 0, 0, false)] // Outside the outer rectangle
  380. // Test with a rectangle that is same size as the thickness (inner is empty)
  381. [InlineData (-1, -1, 4, 4, -1, -1, true)] // in thickness
  382. [InlineData (-1, -1, 4, 4, 0, 0, true)] // in thickness
  383. [InlineData (-1, -1, 4, 4, 1, 1, true)] // in thickness
  384. [InlineData (-1, -1, 4, 4, 2, 2, true)] // in thickness
  385. [InlineData (-1, -1, 4, 4, 4, 4, false)] // outside outer rect
  386. [InlineData (-1, -1, 4, 4, 3, 3, false)] // outside outer rect
  387. public void TestContains_Uniform2 (int x, int y, int width, int height, int pointX, int pointY, bool expected)
  388. {
  389. var rect = new Rectangle (x, y, width, height);
  390. var thickness = new Thickness (2, 2, 2, 2); // Uniform thickness for simplicity
  391. bool result = thickness.Contains (rect, new (pointX, pointY));
  392. Assert.Equal (expected, result);
  393. }
  394. [Theory]
  395. [InlineData (0, 0, 10, 10, 3, 3, false)] // Inside the inner rectangle
  396. [InlineData (0, 0, 10, 10, 0, 0, false)] // On corner, in thickness
  397. [InlineData (0, 0, 10, 10, 9, 9, false)] // On opposite corner, in thickness
  398. [InlineData (0, 0, 10, 10, 5, 5, false)] // Inside the inner rectangle
  399. [InlineData (0, 0, 10, 10, -1, -1, false)] // Outside the outer rectangle
  400. [InlineData (0, 0, 0, 0, 3, 3, false)] // Inside the inner rectangle
  401. [InlineData (0, 0, 0, 0, 0, 0, false)] // On corner, in thickness
  402. [InlineData (0, 0, 0, 0, 9, 9, false)] // On opposite corner, in thickness
  403. [InlineData (0, 0, 0, 0, 5, 5, false)] // Inside the inner rectangle
  404. [InlineData (0, 0, 0, 0, -1, -1, false)] // Outside the outer rectangle
  405. [InlineData (1, 1, 10, 10, 1, 1, false)] // On corner, in thickness
  406. [InlineData (1, 1, 10, 10, 10, 10, false)] // On opposite corner, in thickness
  407. [InlineData (1, 1, 10, 10, 6, 6, false)] // Inside the inner rectangle
  408. [InlineData (1, 1, 10, 10, 0, 0, false)] // Outside the outer rectangle
  409. [InlineData (-1, -1, 10, 10, -1, -1, false)] // On corner, in thickness
  410. [InlineData (-1, -1, 10, 10, 8, 8, false)] // On opposite corner, in thickness
  411. [InlineData (-1, -1, 10, 10, 4, 4, false)] // Inside the inner rectangle
  412. [InlineData (-1, -1, 10, 10, -2, -2, false)] // Outside the outer rectangle
  413. public void TestContains_ZeroThickness (
  414. int x,
  415. int y,
  416. int width,
  417. int height,
  418. int pointX,
  419. int pointY,
  420. bool expected
  421. )
  422. {
  423. var rect = new Rectangle (x, y, width, height);
  424. var thickness = new Thickness (0, 0, 0, 0); // Uniform thickness for simplicity
  425. bool result = thickness.Contains (rect, new (pointX, pointY));
  426. Assert.Equal (expected, result);
  427. }
  428. [Theory]
  429. [InlineData (0, 0, 0, 0, 0, 0, false)]
  430. [InlineData (0, 0, 0, 1, 0, 0, false)]
  431. [InlineData (0, 0, 1, 0, 0, 0, false)]
  432. [InlineData (0, 0, 1, 1, 0, 0, true)]
  433. [InlineData (1, 1, 0, 0, 0, 0, false)]
  434. [InlineData (1, 1, 0, 1, 0, 0, false)]
  435. [InlineData (1, 1, 1, 0, 0, 0, false)]
  436. [InlineData (1, 1, 1, 0, 0, 1, false)]
  437. [InlineData (1, 1, 1, 1, 1, 0, false)]
  438. [InlineData (1, 1, 1, 1, 1, 1, true)]
  439. public void TestContains_Left_Only (int x, int y, int width, int height, int pointX, int pointY, bool expected)
  440. {
  441. var outside = new Rectangle (x, y, width, height);
  442. var thickness = new Thickness (1, 0, 0, 0);
  443. bool result = thickness.Contains (outside, new (pointX, pointY));
  444. Assert.Equal (expected, result);
  445. }
  446. [Fact]
  447. public void ToStringTest ()
  448. {
  449. var t = new Thickness (1, 2, 3, 4);
  450. Assert.Equal ("(Left=1,Top=2,Right=3,Bottom=4)", t.ToString ());
  451. }
  452. [Fact]
  453. public void Vertical_get ()
  454. {
  455. var t = new Thickness (1, 2, 3, 4);
  456. Assert.Equal (6, t.Vertical);
  457. t = new (0);
  458. Assert.Equal (0, t.Vertical);
  459. }
  460. [Fact]
  461. public void Vertical_set ()
  462. {
  463. var t = new Thickness ();
  464. t.Vertical = 10;
  465. Assert.Equal (10, t.Vertical);
  466. Assert.Equal (0, t.Left);
  467. Assert.Equal (5, t.Top);
  468. Assert.Equal (0, t.Right);
  469. Assert.Equal (5, t.Bottom);
  470. Assert.Equal (0, t.Horizontal);
  471. t.Vertical = 11;
  472. Assert.Equal (10, t.Vertical);
  473. Assert.Equal (0, t.Left);
  474. Assert.Equal (5, t.Top);
  475. Assert.Equal (0, t.Right);
  476. Assert.Equal (5, t.Bottom);
  477. Assert.Equal (0, t.Horizontal);
  478. t.Vertical = 1;
  479. Assert.Equal (0, t.Vertical);
  480. Assert.Equal (0, t.Left);
  481. Assert.Equal (0, t.Top);
  482. Assert.Equal (0, t.Right);
  483. Assert.Equal (0, t.Bottom);
  484. Assert.Equal (0, t.Horizontal);
  485. }
  486. // Test Thickness.Add
  487. [Theory]
  488. [InlineData (
  489. 1,
  490. 2,
  491. 3,
  492. 4,
  493. 1,
  494. 2,
  495. 3,
  496. 4,
  497. 2,
  498. 4,
  499. 6,
  500. 8)]
  501. [InlineData (
  502. 1,
  503. 2,
  504. 3,
  505. 4,
  506. 0,
  507. 0,
  508. 0,
  509. 0,
  510. 1,
  511. 2,
  512. 3,
  513. 4)]
  514. [InlineData (
  515. 1,
  516. 2,
  517. 3,
  518. 4,
  519. -1,
  520. -2,
  521. -3,
  522. -4,
  523. 0,
  524. 0,
  525. 0,
  526. 0)]
  527. [InlineData (
  528. 1,
  529. 2,
  530. 3,
  531. 4,
  532. 1,
  533. 1,
  534. 1,
  535. 1,
  536. 2,
  537. 3,
  538. 4,
  539. 5)]
  540. public void AddTest (
  541. int left,
  542. int top,
  543. int right,
  544. int bottom,
  545. int left2,
  546. int top2,
  547. int right2,
  548. int bottom2,
  549. int expectedLeft,
  550. int expectedTop,
  551. int expectedRight,
  552. int expectedBottom
  553. )
  554. {
  555. var t = new Thickness (left, top, right, bottom);
  556. var t2 = new Thickness (left2, top2, right2, bottom2);
  557. Thickness result = t.Add (t2);
  558. Assert.Equal (expectedLeft, result.Left);
  559. Assert.Equal (expectedTop, result.Top);
  560. Assert.Equal (expectedRight, result.Right);
  561. Assert.Equal (expectedBottom, result.Bottom);
  562. }
  563. }