BorderTests.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. // Copyright (c) The Avalonia Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System.Threading.Tasks;
  4. using Avalonia.Controls;
  5. using Avalonia.Layout;
  6. using Avalonia.Media;
  7. using Xunit;
  8. #if AVALONIA_SKIA
  9. namespace Avalonia.Skia.RenderTests
  10. #else
  11. namespace Avalonia.Direct2D1.RenderTests.Controls
  12. #endif
  13. {
  14. public class BorderTests : TestBase
  15. {
  16. public BorderTests()
  17. : base(@"Controls\Border")
  18. {
  19. }
  20. [Fact]
  21. public async Task Border_1px_Border()
  22. {
  23. Decorator target = new Decorator
  24. {
  25. Padding = new Thickness(8),
  26. Width = 200,
  27. Height = 200,
  28. Child = new Border
  29. {
  30. BorderBrush = Brushes.Black,
  31. BorderThickness = 1,
  32. }
  33. };
  34. await RenderToFile(target);
  35. CompareImages();
  36. }
  37. [Fact]
  38. public async Task Border_2px_Border()
  39. {
  40. Decorator target = new Decorator
  41. {
  42. Padding = new Thickness(8),
  43. Width = 200,
  44. Height = 200,
  45. Child = new Border
  46. {
  47. BorderBrush = Brushes.Black,
  48. BorderThickness = 2,
  49. }
  50. };
  51. await RenderToFile(target);
  52. CompareImages();
  53. }
  54. [Fact]
  55. public async Task Border_Fill()
  56. {
  57. Decorator target = new Decorator
  58. {
  59. Padding = new Thickness(8),
  60. Width = 200,
  61. Height = 200,
  62. Child = new Border
  63. {
  64. Background = Brushes.Red,
  65. }
  66. };
  67. await RenderToFile(target);
  68. CompareImages();
  69. }
  70. [Fact]
  71. public async Task Border_Brush_Offsets_Content()
  72. {
  73. Decorator target = new Decorator
  74. {
  75. Padding = new Thickness(8),
  76. Width = 200,
  77. Height = 200,
  78. Child = new Border
  79. {
  80. BorderBrush = Brushes.Black,
  81. BorderThickness = 2,
  82. Child = new Border
  83. {
  84. Background = Brushes.Red,
  85. }
  86. }
  87. };
  88. await RenderToFile(target);
  89. CompareImages();
  90. }
  91. [Fact]
  92. public async Task Border_Padding_Offsets_Content()
  93. {
  94. Decorator target = new Decorator
  95. {
  96. Padding = new Thickness(8),
  97. Width = 200,
  98. Height = 200,
  99. Child = new Border
  100. {
  101. BorderBrush = Brushes.Black,
  102. BorderThickness = 2,
  103. Padding = new Thickness(2),
  104. Child = new Border
  105. {
  106. Background = Brushes.Red,
  107. }
  108. }
  109. };
  110. await RenderToFile(target);
  111. CompareImages();
  112. }
  113. [Fact]
  114. public async Task Border_Margin_Offsets_Content()
  115. {
  116. Decorator target = new Decorator
  117. {
  118. Padding = new Thickness(8),
  119. Width = 200,
  120. Height = 200,
  121. Child = new Border
  122. {
  123. BorderBrush = Brushes.Black,
  124. BorderThickness = 2,
  125. Child = new Border
  126. {
  127. Background = Brushes.Red,
  128. Margin = new Thickness(2),
  129. }
  130. }
  131. };
  132. await RenderToFile(target);
  133. CompareImages();
  134. }
  135. [Fact]
  136. public async Task Border_Centers_Content_Horizontally()
  137. {
  138. Decorator target = new Decorator
  139. {
  140. Padding = new Thickness(8),
  141. Width = 200,
  142. Height = 200,
  143. Child = new Border
  144. {
  145. BorderBrush = Brushes.Black,
  146. BorderThickness = 2,
  147. Child = new TextBlock
  148. {
  149. Text = "Foo",
  150. Background = Brushes.Red,
  151. FontFamily = "Segoe UI",
  152. FontSize = 12,
  153. HorizontalAlignment = HorizontalAlignment.Center,
  154. }
  155. }
  156. };
  157. await RenderToFile(target);
  158. CompareImages();
  159. }
  160. [Fact]
  161. public async Task Border_Centers_Content_Vertically()
  162. {
  163. Decorator target = new Decorator
  164. {
  165. Padding = new Thickness(8),
  166. Width = 200,
  167. Height = 200,
  168. Child = new Border
  169. {
  170. BorderBrush = Brushes.Black,
  171. BorderThickness = 2,
  172. Child = new TextBlock
  173. {
  174. Text = "Foo",
  175. Background = Brushes.Red,
  176. FontFamily = "Segoe UI",
  177. FontSize = 12,
  178. VerticalAlignment = VerticalAlignment.Center,
  179. }
  180. }
  181. };
  182. await RenderToFile(target);
  183. CompareImages();
  184. }
  185. [Fact]
  186. public async Task Border_Stretches_Content_Horizontally()
  187. {
  188. Decorator target = new Decorator
  189. {
  190. Padding = new Thickness(8),
  191. Width = 200,
  192. Height = 200,
  193. Child = new Border
  194. {
  195. BorderBrush = Brushes.Black,
  196. BorderThickness = 2,
  197. Child = new TextBlock
  198. {
  199. Text = "Foo",
  200. Background = Brushes.Red,
  201. FontFamily = "Segoe UI",
  202. FontSize = 12,
  203. HorizontalAlignment = HorizontalAlignment.Stretch,
  204. }
  205. }
  206. };
  207. await RenderToFile(target);
  208. CompareImages();
  209. }
  210. [Fact]
  211. public async Task Border_Stretches_Content_Vertically()
  212. {
  213. Decorator target = new Decorator
  214. {
  215. Padding = new Thickness(8),
  216. Width = 200,
  217. Height = 200,
  218. Child = new Border
  219. {
  220. BorderBrush = Brushes.Black,
  221. BorderThickness = 2,
  222. Child = new TextBlock
  223. {
  224. Text = "Foo",
  225. Background = Brushes.Red,
  226. FontFamily = "Segoe UI",
  227. FontSize = 12,
  228. VerticalAlignment = VerticalAlignment.Stretch,
  229. }
  230. }
  231. };
  232. await RenderToFile(target);
  233. CompareImages();
  234. }
  235. [Fact]
  236. public async Task Border_Left_Aligns_Content()
  237. {
  238. Decorator target = new Decorator
  239. {
  240. Padding = new Thickness(8),
  241. Width = 200,
  242. Height = 200,
  243. Child = new Border
  244. {
  245. BorderBrush = Brushes.Black,
  246. BorderThickness = 2,
  247. Child = new TextBlock
  248. {
  249. Text = "Foo",
  250. Background = Brushes.Red,
  251. FontFamily = "Segoe UI",
  252. FontSize = 12,
  253. HorizontalAlignment = HorizontalAlignment.Left,
  254. }
  255. }
  256. };
  257. await RenderToFile(target);
  258. CompareImages();
  259. }
  260. [Fact]
  261. public async Task Border_Right_Aligns_Content()
  262. {
  263. Decorator target = new Decorator
  264. {
  265. Padding = new Thickness(8),
  266. Width = 200,
  267. Height = 200,
  268. Child = new Border
  269. {
  270. BorderBrush = Brushes.Black,
  271. BorderThickness = 2,
  272. Child = new TextBlock
  273. {
  274. Text = "Foo",
  275. Background = Brushes.Red,
  276. FontFamily = "Segoe UI",
  277. FontSize = 12,
  278. HorizontalAlignment = HorizontalAlignment.Right,
  279. }
  280. }
  281. };
  282. await RenderToFile(target);
  283. CompareImages();
  284. }
  285. [Fact]
  286. public async Task Border_Top_Aligns_Content()
  287. {
  288. Decorator target = new Decorator
  289. {
  290. Padding = new Thickness(8),
  291. Width = 200,
  292. Height = 200,
  293. Child = new Border
  294. {
  295. BorderBrush = Brushes.Black,
  296. BorderThickness = 2,
  297. Child = new TextBlock
  298. {
  299. Text = "Foo",
  300. Background = Brushes.Red,
  301. FontFamily = "Segoe UI",
  302. FontSize = 12,
  303. VerticalAlignment = VerticalAlignment.Top,
  304. }
  305. }
  306. };
  307. await RenderToFile(target);
  308. CompareImages();
  309. }
  310. [Fact]
  311. public async Task Border_Bottom_Aligns_Content()
  312. {
  313. Decorator target = new Decorator
  314. {
  315. Padding = new Thickness(8),
  316. Width = 200,
  317. Height = 200,
  318. Child = new Border
  319. {
  320. BorderBrush = Brushes.Black,
  321. BorderThickness = 2,
  322. Child = new TextBlock
  323. {
  324. Text = "Foo",
  325. Background = Brushes.Red,
  326. FontFamily = "Segoe UI",
  327. FontSize = 12,
  328. VerticalAlignment = VerticalAlignment.Bottom,
  329. }
  330. }
  331. };
  332. await RenderToFile(target);
  333. CompareImages();
  334. }
  335. [Fact]
  336. public async Task Border_Nested_Rotate()
  337. {
  338. Decorator target = new Decorator
  339. {
  340. Padding = new Thickness(8),
  341. Width = 200,
  342. Height = 200,
  343. Child = new Border
  344. {
  345. Background = Brushes.Coral,
  346. Width = 100,
  347. Height = 100,
  348. HorizontalAlignment = HorizontalAlignment.Center,
  349. VerticalAlignment = VerticalAlignment.Center,
  350. Child = new Border
  351. {
  352. Margin = new Thickness(25),
  353. Background = Brushes.Chocolate,
  354. },
  355. RenderTransform = new RotateTransform(45),
  356. }
  357. };
  358. await RenderToFile(target);
  359. CompareImages();
  360. }
  361. }
  362. }