BorderTests.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809
  1. using Xunit.Abstractions;
  2. namespace Terminal.Gui.ViewTests;
  3. public class BorderTests
  4. {
  5. private readonly ITestOutputHelper _output;
  6. public BorderTests (ITestOutputHelper output) { _output = output; }
  7. [Fact]
  8. [SetupFakeDriver]
  9. public void Border_Parent_HasFocus_Title_Uses_FocusAttribute ()
  10. {
  11. var view = new View { Title = "A", Height = 2, Width = 5 };
  12. view.Border.Thickness = new Thickness (0, 1, 0, 0);
  13. view.Border.LineStyle = LineStyle.Single;
  14. view.ColorScheme = new ColorScheme
  15. {
  16. Normal = new Attribute (Color.Red, Color.Green),
  17. Focus = new Attribute (Color.Green, Color.Red)
  18. };
  19. Assert.NotEqual (view.ColorScheme.Normal.Foreground, view.ColorScheme.Focus.Foreground);
  20. Assert.Equal (ColorName.Red, view.Border.GetNormalColor ().Foreground.GetClosestNamedColor ());
  21. Assert.Equal (ColorName.Green, view.Border.GetFocusColor ().Foreground.GetClosestNamedColor ());
  22. Assert.Equal (view.GetFocusColor (), view.Border.GetFocusColor ());
  23. view.BeginInit ();
  24. view.EndInit ();
  25. view.Draw ();
  26. var expected = @"─┤A├─";
  27. TestHelpers.AssertDriverContentsAre (expected, _output);
  28. TestHelpers.AssertDriverAttributesAre ("00000", null, view.ColorScheme.Normal);
  29. view.CanFocus = true;
  30. view.SetFocus ();
  31. view.Draw ();
  32. Assert.Equal (view.GetFocusColor (), view.Border.GetFocusColor ());
  33. Assert.Equal (view.ColorScheme.Focus.Foreground, view.Border.GetFocusColor ().Foreground);
  34. Assert.Equal (view.ColorScheme.Normal.Foreground, view.Border.GetNormalColor ().Foreground);
  35. TestHelpers.AssertDriverAttributesAre ("00100", null, view.ColorScheme.Normal, view.GetFocusColor ());
  36. }
  37. [Fact]
  38. [SetupFakeDriver]
  39. public void Border_Uses_Parent_ColorScheme ()
  40. {
  41. var view = new View { Title = "A", Height = 2, Width = 5 };
  42. view.Border.Thickness = new Thickness (0, 1, 0, 0);
  43. view.Border.LineStyle = LineStyle.Single;
  44. view.ColorScheme = new ColorScheme
  45. {
  46. Normal = new Attribute (Color.Red, Color.Green), Focus = new Attribute (Color.Green, Color.Red)
  47. };
  48. Assert.Equal (ColorName.Red, view.Border.GetNormalColor ().Foreground.GetClosestNamedColor ());
  49. Assert.Equal (ColorName.Green, view.Border.GetFocusColor ().Foreground.GetClosestNamedColor ());
  50. Assert.Equal (view.GetNormalColor (), view.Border.GetNormalColor ());
  51. Assert.Equal (view.GetFocusColor (), view.Border.GetFocusColor ());
  52. view.BeginInit ();
  53. view.EndInit ();
  54. view.Draw ();
  55. var expected = @"─┤A├─";
  56. TestHelpers.AssertDriverContentsAre (expected, _output);
  57. TestHelpers.AssertDriverAttributesAre ("00000", null, view.ColorScheme.Normal);
  58. }
  59. [Theory]
  60. [AutoInitShutdown]
  61. [InlineData (0)]
  62. [InlineData (1)]
  63. [InlineData (2)]
  64. [InlineData (3)]
  65. [InlineData (4)]
  66. [InlineData (5)]
  67. [InlineData (6)]
  68. [InlineData (7)]
  69. [InlineData (8)]
  70. [InlineData (9)]
  71. [InlineData (10)]
  72. public void Border_With_Title_Border_Double_Thickness_Top_Four_Size_Width (int width)
  73. {
  74. var win = new Window
  75. {
  76. Title = "1234", Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.Double
  77. };
  78. win.Border.Thickness.Top = 4;
  79. RunState rs = Application.Begin (win);
  80. var firstIteration = false;
  81. ((FakeDriver)Application.Driver).SetBufferSize (width, 5);
  82. Application.RunIteration (ref rs, ref firstIteration);
  83. var expected = string.Empty;
  84. switch (width)
  85. {
  86. case 1:
  87. Assert.Equal (new Rectangle (0, 0, 1, 5), win.Frame);
  88. expected = @"
  89. ║";
  90. break;
  91. case 2:
  92. Assert.Equal (new Rectangle (0, 0, 2, 5), win.Frame);
  93. expected = @"
  94. ╔╗
  95. ║║
  96. ╚╝";
  97. break;
  98. case 3:
  99. Assert.Equal (new Rectangle (0, 0, 3, 5), win.Frame);
  100. expected = @"
  101. ╔═╗
  102. ║ ║
  103. ╚═╝";
  104. break;
  105. case 4:
  106. Assert.Equal (new Rectangle (0, 0, 4, 5), win.Frame);
  107. expected = @"
  108. ╒╕
  109. ╔╡╞╗
  110. ║╘╛║
  111. ╚══╝";
  112. break;
  113. case 5:
  114. Assert.Equal (new Rectangle (0, 0, 5, 5), win.Frame);
  115. expected = @"
  116. ╒═╕
  117. ╔╡1╞╗
  118. ║╘═╛║
  119. ╚═══╝";
  120. break;
  121. case 6:
  122. Assert.Equal (new Rectangle (0, 0, 6, 5), win.Frame);
  123. expected = @"
  124. ╒══╕
  125. ╔╡12╞╗
  126. ║╘══╛║
  127. ╚════╝";
  128. break;
  129. case 7:
  130. Assert.Equal (new Rectangle (0, 0, 7, 5), win.Frame);
  131. expected = @"
  132. ╒═══╕
  133. ╔╡123╞╗
  134. ║╘═══╛║
  135. ╚═════╝";
  136. break;
  137. case 8:
  138. Assert.Equal (new Rectangle (0, 0, 8, 5), win.Frame);
  139. expected = @"
  140. ╒════╕
  141. ╔╡1234╞╗
  142. ║╘════╛║
  143. ╚══════╝";
  144. break;
  145. case 9:
  146. Assert.Equal (new Rectangle (0, 0, 9, 5), win.Frame);
  147. expected = @"
  148. ╒════╕
  149. ╔╡1234╞═╗
  150. ║╘════╛ ║
  151. ╚═══════╝";
  152. break;
  153. case 10:
  154. Assert.Equal (new Rectangle (0, 0, 10, 5), win.Frame);
  155. expected = @"
  156. ╒════╕
  157. ╔╡1234╞══╗
  158. ║╘════╛ ║
  159. ╚════════╝";
  160. break;
  161. }
  162. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  163. Application.End (rs);
  164. }
  165. [Theory]
  166. [AutoInitShutdown]
  167. [InlineData (0)]
  168. [InlineData (1)]
  169. [InlineData (2)]
  170. [InlineData (3)]
  171. [InlineData (4)]
  172. [InlineData (5)]
  173. [InlineData (6)]
  174. [InlineData (7)]
  175. [InlineData (8)]
  176. [InlineData (9)]
  177. [InlineData (10)]
  178. public void Border_With_Title_Border_Double_Thickness_Top_Three_Size_Width (int width)
  179. {
  180. var win = new Window
  181. {
  182. Title = "1234", Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.Double
  183. };
  184. win.Border.Thickness.Top = 3;
  185. RunState rs = Application.Begin (win);
  186. var firstIteration = false;
  187. ((FakeDriver)Application.Driver).SetBufferSize (width, 4);
  188. Application.RunIteration (ref rs, ref firstIteration);
  189. var expected = string.Empty;
  190. switch (width)
  191. {
  192. case 1:
  193. Assert.Equal (new Rectangle (0, 0, 1, 4), win.Frame);
  194. expected = @"
  195. ║";
  196. break;
  197. case 2:
  198. Assert.Equal (new Rectangle (0, 0, 2, 4), win.Frame);
  199. expected = @"
  200. ╔╗
  201. ║║
  202. ╚╝";
  203. break;
  204. case 3:
  205. Assert.Equal (new Rectangle (0, 0, 3, 4), win.Frame);
  206. expected = @"
  207. ╔═╗
  208. ║ ║
  209. ╚═╝";
  210. break;
  211. case 4:
  212. Assert.Equal (new Rectangle (0, 0, 4, 4), win.Frame);
  213. expected = @"
  214. ╒╕
  215. ╔╡╞╗
  216. ║╘╛║
  217. ╚══╝";
  218. break;
  219. case 5:
  220. Assert.Equal (new Rectangle (0, 0, 5, 4), win.Frame);
  221. expected = @"
  222. ╒═╕
  223. ╔╡1╞╗
  224. ║╘═╛║
  225. ╚═══╝";
  226. break;
  227. case 6:
  228. Assert.Equal (new Rectangle (0, 0, 6, 4), win.Frame);
  229. expected = @"
  230. ╒══╕
  231. ╔╡12╞╗
  232. ║╘══╛║
  233. ╚════╝";
  234. break;
  235. case 7:
  236. Assert.Equal (new Rectangle (0, 0, 7, 4), win.Frame);
  237. expected = @"
  238. ╒═══╕
  239. ╔╡123╞╗
  240. ║╘═══╛║
  241. ╚═════╝";
  242. break;
  243. case 8:
  244. Assert.Equal (new Rectangle (0, 0, 8, 4), win.Frame);
  245. expected = @"
  246. ╒════╕
  247. ╔╡1234╞╗
  248. ║╘════╛║
  249. ╚══════╝";
  250. break;
  251. case 9:
  252. Assert.Equal (new Rectangle (0, 0, 9, 4), win.Frame);
  253. expected = @"
  254. ╒════╕
  255. ╔╡1234╞═╗
  256. ║╘════╛ ║
  257. ╚═══════╝";
  258. break;
  259. case 10:
  260. Assert.Equal (new Rectangle (0, 0, 10, 4), win.Frame);
  261. expected = @"
  262. ╒════╕
  263. ╔╡1234╞══╗
  264. ║╘════╛ ║
  265. ╚════════╝";
  266. break;
  267. }
  268. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  269. Application.End (rs);
  270. }
  271. [Theory]
  272. [AutoInitShutdown]
  273. [InlineData (0)]
  274. [InlineData (1)]
  275. [InlineData (2)]
  276. [InlineData (3)]
  277. [InlineData (4)]
  278. [InlineData (5)]
  279. [InlineData (6)]
  280. [InlineData (7)]
  281. [InlineData (8)]
  282. [InlineData (9)]
  283. [InlineData (10)]
  284. public void Border_With_Title_Border_Double_Thickness_Top_Two_Size_Width (int width)
  285. {
  286. var win = new Window
  287. {
  288. Title = "1234", Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.Double
  289. };
  290. win.Border.Thickness.Top = 2;
  291. RunState rs = Application.Begin (win);
  292. var firstIteration = false;
  293. ((FakeDriver)Application.Driver).SetBufferSize (width, 4);
  294. Application.RunIteration (ref rs, ref firstIteration);
  295. var expected = string.Empty;
  296. switch (width)
  297. {
  298. case 1:
  299. Assert.Equal (new Rectangle (0, 0, 1, 4), win.Frame);
  300. expected = @"
  301. ║";
  302. break;
  303. case 2:
  304. Assert.Equal (new Rectangle (0, 0, 2, 4), win.Frame);
  305. expected = @"
  306. ╔╗
  307. ║║
  308. ╚╝";
  309. break;
  310. case 3:
  311. Assert.Equal (new Rectangle (0, 0, 3, 4), win.Frame);
  312. expected = @"
  313. ╔═╗
  314. ║ ║
  315. ╚═╝";
  316. break;
  317. case 4:
  318. Assert.Equal (new Rectangle (0, 0, 4, 4), win.Frame);
  319. expected = @"
  320. ╒╕
  321. ╔╛╘╗
  322. ║ ║
  323. ╚══╝";
  324. break;
  325. case 5:
  326. Assert.Equal (new Rectangle (0, 0, 5, 4), win.Frame);
  327. expected = @"
  328. ╒═╕
  329. ╔╛1╘╗
  330. ║ ║
  331. ╚═══╝";
  332. break;
  333. case 6:
  334. Assert.Equal (new Rectangle (0, 0, 6, 4), win.Frame);
  335. expected = @"
  336. ╒══╕
  337. ╔╛12╘╗
  338. ║ ║
  339. ╚════╝";
  340. break;
  341. case 7:
  342. Assert.Equal (new Rectangle (0, 0, 7, 4), win.Frame);
  343. expected = @"
  344. ╒═══╕
  345. ╔╛123╘╗
  346. ║ ║
  347. ╚═════╝";
  348. break;
  349. case 8:
  350. Assert.Equal (new Rectangle (0, 0, 8, 4), win.Frame);
  351. expected = @"
  352. ╒════╕
  353. ╔╛1234╘╗
  354. ║ ║
  355. ╚══════╝";
  356. break;
  357. case 9:
  358. Assert.Equal (new Rectangle (0, 0, 9, 4), win.Frame);
  359. expected = @"
  360. ╒════╕
  361. ╔╛1234╘═╗
  362. ║ ║
  363. ╚═══════╝";
  364. break;
  365. case 10:
  366. Assert.Equal (new Rectangle (0, 0, 10, 4), win.Frame);
  367. expected = @"
  368. ╒════╕
  369. ╔╛1234╘══╗
  370. ║ ║
  371. ╚════════╝";
  372. break;
  373. }
  374. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  375. Application.End (rs);
  376. }
  377. [Theory]
  378. [AutoInitShutdown]
  379. [InlineData (0)]
  380. [InlineData (1)]
  381. [InlineData (2)]
  382. [InlineData (3)]
  383. public void Border_With_Title_Size_Height (int height)
  384. {
  385. var win = new Window { Title = "1234", Width = Dim.Fill (), Height = Dim.Fill () };
  386. RunState rs = Application.Begin (win);
  387. var firstIteration = false;
  388. ((FakeDriver)Application.Driver).SetBufferSize (20, height);
  389. Application.RunIteration (ref rs, ref firstIteration);
  390. var expected = string.Empty;
  391. switch (height)
  392. {
  393. case 0:
  394. //Assert.Equal (new (0, 0, 17, 0), subview.Frame);
  395. expected = @"
  396. ";
  397. break;
  398. case 1:
  399. //Assert.Equal (new (0, 0, 17, 0), subview.Frame);
  400. expected = @"
  401. ────────────────────";
  402. break;
  403. case 2:
  404. //Assert.Equal (new (0, 0, 17, 1), subview.Frame);
  405. expected = @"
  406. ┌┤1234├────────────┐
  407. └──────────────────┘
  408. ";
  409. break;
  410. case 3:
  411. //Assert.Equal (new (0, 0, 17, 2), subview.Frame);
  412. expected = @"
  413. ┌┤1234├────────────┐
  414. │ │
  415. └──────────────────┘
  416. ";
  417. break;
  418. }
  419. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  420. Application.End (rs);
  421. }
  422. [Theory]
  423. [AutoInitShutdown]
  424. [InlineData (0)]
  425. [InlineData (1)]
  426. [InlineData (2)]
  427. [InlineData (3)]
  428. [InlineData (4)]
  429. [InlineData (5)]
  430. [InlineData (6)]
  431. [InlineData (7)]
  432. [InlineData (8)]
  433. [InlineData (9)]
  434. [InlineData (10)]
  435. public void Border_With_Title_Size_Width (int width)
  436. {
  437. var win = new Window { Title = "1234", Width = Dim.Fill (), Height = Dim.Fill () };
  438. RunState rs = Application.Begin (win);
  439. var firstIteration = false;
  440. ((FakeDriver)Application.Driver).SetBufferSize (width, 3);
  441. Application.RunIteration (ref rs, ref firstIteration);
  442. var expected = string.Empty;
  443. switch (width)
  444. {
  445. case 1:
  446. //Assert.Equal (new (0, 0, 17, 0), subview.Frame);
  447. expected = @"
  448. │";
  449. break;
  450. case 2:
  451. //Assert.Equal (new (0, 0, 17, 1), subview.Frame);
  452. expected = @"
  453. ┌┐
  454. ││
  455. └┘";
  456. break;
  457. case 3:
  458. //Assert.Equal (new (0, 0, 17, 2), subview.Frame);
  459. expected = @"
  460. ┌─┐
  461. │ │
  462. └─┘
  463. ";
  464. break;
  465. case 4:
  466. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  467. expected = @"
  468. ┌┤├┐
  469. │ │
  470. └──┘";
  471. break;
  472. case 5:
  473. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  474. expected = @"
  475. ┌┤1├┐
  476. │ │
  477. └───┘";
  478. break;
  479. case 6:
  480. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  481. expected = @"
  482. ┌┤12├┐
  483. │ │
  484. └────┘";
  485. break;
  486. case 7:
  487. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  488. expected = @"
  489. ┌┤123├┐
  490. │ │
  491. └─────┘";
  492. break;
  493. case 8:
  494. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  495. expected = @"
  496. ┌┤1234├┐
  497. │ │
  498. └──────┘";
  499. break;
  500. case 9:
  501. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  502. expected = @"
  503. ┌┤1234├─┐
  504. │ │
  505. └───────┘";
  506. break;
  507. case 10:
  508. //Assert.Equal (new (0, 0, 17, 3), subview.Frame);
  509. expected = @"
  510. ┌┤1234├──┐
  511. │ │
  512. └────────┘";
  513. break;
  514. }
  515. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  516. }
  517. [Theory]
  518. [InlineData (0, 0, 0, 2, 2)]
  519. [InlineData (1, 0, 0, 4, 4)]
  520. [InlineData (2, 0, 0, 6, 6)]
  521. [InlineData (1, 1, 0, 5, 4)]
  522. [InlineData (1, 0, 1, 4, 5)]
  523. [InlineData (1, 1, 1, 5, 5)]
  524. [InlineData (1, 10, 10, 14, 14)]
  525. public void FrameToScreen_NestedSuperView_WithBorder (
  526. int superOffset,
  527. int frameX,
  528. int frameY,
  529. int expectedScreenX,
  530. int expectedScreenY
  531. )
  532. {
  533. var superSuper = new View
  534. {
  535. X = superOffset,
  536. Y = superOffset,
  537. Width = 30,
  538. Height = 30,
  539. BorderStyle = LineStyle.Single
  540. };
  541. var super = new View
  542. {
  543. X = superOffset,
  544. Y = superOffset,
  545. Width = 20,
  546. Height = 20,
  547. BorderStyle = LineStyle.Single
  548. };
  549. superSuper.Add (super);
  550. var view = new View { X = frameX, Y = frameY, Width = 10, Height = 10 };
  551. super.Add (view);
  552. var expected = new Rectangle (expectedScreenX, expectedScreenY, 10, 10);
  553. Rectangle actual = view.FrameToScreen ();
  554. Assert.Equal (expected, actual);
  555. }
  556. [Theory]
  557. [InlineData (0, 0, 0, 1, 1)]
  558. [InlineData (1, 0, 0, 2, 2)]
  559. [InlineData (2, 0, 0, 3, 3)]
  560. [InlineData (1, 1, 0, 3, 2)]
  561. [InlineData (1, 0, 1, 2, 3)]
  562. [InlineData (1, 1, 1, 3, 3)]
  563. [InlineData (1, 10, 10, 12, 12)]
  564. public void FrameToScreen_SuperView_WithBorder (
  565. int superOffset,
  566. int frameX,
  567. int frameY,
  568. int expectedScreenX,
  569. int expectedScreenY
  570. )
  571. {
  572. var super = new View
  573. {
  574. X = superOffset,
  575. Y = superOffset,
  576. Width = 20,
  577. Height = 20,
  578. BorderStyle = LineStyle.Single
  579. };
  580. var view = new View { X = frameX, Y = frameY, Width = 10, Height = 10 };
  581. super.Add (view);
  582. var expected = new Rectangle (expectedScreenX, expectedScreenY, 10, 10);
  583. Rectangle actual = view.FrameToScreen ();
  584. Assert.Equal (expected, actual);
  585. }
  586. [Fact]
  587. [AutoInitShutdown]
  588. public void HasSuperView ()
  589. {
  590. var top = new Toplevel ();
  591. top.BorderStyle = LineStyle.Double;
  592. var frame = new FrameView { Width = Dim.Fill (), Height = Dim.Fill () };
  593. top.Add (frame);
  594. RunState rs = Application.Begin (top);
  595. var firstIteration = false;
  596. ((FakeDriver)Application.Driver).SetBufferSize (5, 5);
  597. Application.RunIteration (ref rs, ref firstIteration);
  598. var expected = @"
  599. ╔═══╗
  600. ║┌─┐║
  601. ║│ │║
  602. ║└─┘║
  603. ╚═══╝";
  604. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  605. Application.End (rs);
  606. }
  607. [Fact]
  608. [AutoInitShutdown]
  609. public void HasSuperView_Title ()
  610. {
  611. var top = new Toplevel ();
  612. top.BorderStyle = LineStyle.Double;
  613. var frame = new FrameView { Title = "1234", Width = Dim.Fill (), Height = Dim.Fill () };
  614. top.Add (frame);
  615. RunState rs = Application.Begin (top);
  616. var firstIteration = false;
  617. ((FakeDriver)Application.Driver).SetBufferSize (10, 4);
  618. Application.RunIteration (ref rs, ref firstIteration);
  619. var expected = @"
  620. ╔════════╗
  621. ║┌┤1234├┐║
  622. ║└──────┘║
  623. ╚════════╝";
  624. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  625. Application.End (rs);
  626. }
  627. [Fact]
  628. [AutoInitShutdown]
  629. public void NoSuperView ()
  630. {
  631. var win = new Window { Width = Dim.Fill (), Height = Dim.Fill () };
  632. RunState rs = Application.Begin (win);
  633. var firstIteration = false;
  634. ((FakeDriver)Application.Driver).SetBufferSize (3, 3);
  635. Application.RunIteration (ref rs, ref firstIteration);
  636. var expected = @"
  637. ┌─┐
  638. │ │
  639. └─┘";
  640. _ = TestHelpers.AssertDriverContentsWithFrameAre (expected, _output);
  641. }
  642. [Fact]
  643. public void View_BorderStyle_Defaults ()
  644. {
  645. var view = new View ();
  646. Assert.Equal (LineStyle.None, view.BorderStyle);
  647. Assert.Equal (Thickness.Empty, view.Border.Thickness);
  648. view.Dispose ();
  649. }
  650. [Fact]
  651. public void View_SetBorderStyle ()
  652. {
  653. var view = new View ();
  654. view.BorderStyle = LineStyle.Single;
  655. Assert.Equal (LineStyle.Single, view.BorderStyle);
  656. Assert.Equal (new Thickness (1), view.Border.Thickness);
  657. view.BorderStyle = LineStyle.Double;
  658. Assert.Equal (LineStyle.Double, view.BorderStyle);
  659. Assert.Equal (new Thickness (1), view.Border.Thickness);
  660. view.BorderStyle = LineStyle.None;
  661. Assert.Equal (LineStyle.None, view.BorderStyle);
  662. Assert.Equal (Thickness.Empty, view.Border.Thickness);
  663. view.Dispose ();
  664. }
  665. }