BorderTests.cs 13 KB

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