DefaultLayoutTest.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. using NUnit.Framework;
  5. namespace MonoTests.System.Windows.Forms
  6. {
  7. [TestFixture]
  8. public class DefaultLayoutTest
  9. {
  10. int event_count;
  11. LayoutEventArgs most_recent_args;
  12. void p_Layout (object sender, LayoutEventArgs e)
  13. {
  14. event_count ++;
  15. most_recent_args = e;
  16. }
  17. [Test]
  18. public void AnchorLayoutEvents ()
  19. {
  20. Panel p;
  21. Button b;
  22. p = new Panel ();
  23. b = new Button ();
  24. p.Controls.Add (b);
  25. p.Layout += new LayoutEventHandler (p_Layout);
  26. /* set the button's anchor to something different */
  27. b.Anchor = AnchorStyles.Bottom;
  28. Assert.AreEqual (1, event_count, "1");
  29. Assert.AreEqual ("Anchor", most_recent_args.AffectedProperty, "2");
  30. /* reset it to something new with the panel's layout suspended */
  31. event_count = 0;
  32. p.SuspendLayout ();
  33. b.Anchor = AnchorStyles.Top;
  34. Assert.AreEqual (0, event_count, "3");
  35. p.ResumeLayout ();
  36. Assert.AreEqual (1, event_count, "4");
  37. Assert.AreEqual (null, most_recent_args.AffectedProperty, "5");
  38. /* with the anchor style set to something, resize the parent */
  39. event_count = 0;
  40. p.Size = new Size (500, 500);
  41. Assert.AreEqual (1, event_count, "6");
  42. Assert.AreEqual ("Bounds", most_recent_args.AffectedProperty, "7");
  43. /* now try it with layout suspended */
  44. event_count = 0;
  45. p.SuspendLayout ();
  46. p.Size = new Size (400, 400);
  47. Assert.AreEqual (0, event_count, "8");
  48. p.ResumeLayout ();
  49. Assert.AreEqual (1, event_count, "9");
  50. Assert.AreEqual (null, most_recent_args.AffectedProperty, "10");
  51. /* with the anchor style set to something, resize the child */
  52. event_count = 0;
  53. b.Size = new Size (100, 100);
  54. Assert.AreEqual (1, event_count, "11");
  55. Assert.AreEqual ("Bounds", most_recent_args.AffectedProperty, "12");
  56. /* and again with layout suspended */
  57. event_count = 0;
  58. p.SuspendLayout ();
  59. b.Size = new Size (200, 200);
  60. Assert.AreEqual (0, event_count, "13");
  61. p.ResumeLayout ();
  62. Assert.AreEqual (1, event_count, "14");
  63. Assert.AreEqual (null, most_recent_args.AffectedProperty, "15");
  64. }
  65. [Test]
  66. public void AnchorTopLeftTest ()
  67. {
  68. Form f = new Form ();
  69. f.ShowInTaskbar = false;
  70. f.Size = new Size (200, 200);
  71. Button b = new Button ();
  72. b.Size = new Size (100, 100);
  73. b.Anchor = AnchorStyles.Top | AnchorStyles.Left;
  74. f.Controls.Add (b);
  75. Assert.AreEqual (0, b.Left, "1");
  76. Assert.AreEqual (0, b.Top, "2");
  77. f.Size = new Size (300, 300);
  78. Assert.AreEqual (0, b.Left, "3");
  79. Assert.AreEqual (0, b.Top, "4");
  80. f.Dispose ();
  81. }
  82. [Test]
  83. public void AnchorTopRightTest ()
  84. {
  85. Form f = new Form ();
  86. f.ShowInTaskbar = false;
  87. f.Size = new Size (200, 200);
  88. Button b = new Button ();
  89. b.Size = new Size (100, 100);
  90. b.Anchor = AnchorStyles.Top | AnchorStyles.Right;
  91. f.Controls.Add (b);
  92. Assert.AreEqual (0, b.Left, "1");
  93. Assert.AreEqual (0, b.Top, "2");
  94. f.Size = new Size (300, 300);
  95. Assert.AreEqual (100, b.Left, "3");
  96. Assert.AreEqual (0, b.Top, "4");
  97. f.Dispose ();
  98. }
  99. [Test]
  100. public void AnchorLeftRightTest ()
  101. {
  102. Form f = new Form ();
  103. f.ShowInTaskbar = false;
  104. f.Size = new Size (200, 200);
  105. Button b = new Button ();
  106. b.Size = new Size (100, 100);
  107. b.Anchor = AnchorStyles.Left | AnchorStyles.Right;
  108. f.Controls.Add (b);
  109. Assert.AreEqual (0, b.Left, "1");
  110. Assert.AreEqual (100, b.Right, "2");
  111. f.Size = new Size (300, 300);
  112. Assert.AreEqual (0, b.Left, "3");
  113. Assert.AreEqual (200, b.Right, "4");
  114. f.Dispose ();
  115. }
  116. [Test]
  117. public void AnchorBottomLeftTest ()
  118. {
  119. Form f = new Form ();
  120. f.ShowInTaskbar = false;
  121. f.Size = new Size (200, 200);
  122. Button b = new Button ();
  123. b.Size = new Size (100, 100);
  124. b.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;
  125. f.Controls.Add (b);
  126. Assert.AreEqual (0, b.Left, "1");
  127. Assert.AreEqual (0, b.Top, "2");
  128. f.Size = new Size (300, 300);
  129. Assert.AreEqual (0, b.Left, "3");
  130. Assert.AreEqual (100, b.Top, "4");
  131. f.Dispose ();
  132. }
  133. [Test]
  134. public void AnchorBottomRightTest ()
  135. {
  136. Form f = new Form ();
  137. f.ShowInTaskbar = false;
  138. f.Size = new Size (200, 200);
  139. Button b = new Button ();
  140. b.Size = new Size (100, 100);
  141. b.Anchor = AnchorStyles.Right | AnchorStyles.Bottom;
  142. f.Controls.Add (b);
  143. Assert.AreEqual (0, b.Left, "1");
  144. Assert.AreEqual (0, b.Top, "2");
  145. f.Size = new Size (300, 300);
  146. Assert.AreEqual (100, b.Left, "3");
  147. Assert.AreEqual (100, b.Top, "4");
  148. f.Dispose ();
  149. }
  150. [Test]
  151. public void AnchorTopBottomTest ()
  152. {
  153. Form f = new Form ();
  154. f.ShowInTaskbar = false;
  155. f.Size = new Size (200, 200);
  156. Button b = new Button ();
  157. b.Size = new Size (100, 100);
  158. b.Anchor = AnchorStyles.Top | AnchorStyles.Bottom;
  159. f.Controls.Add (b);
  160. Assert.AreEqual (0, b.Top, "1");
  161. Assert.AreEqual (100, b.Bottom, "2");
  162. f.Size = new Size (300, 300);
  163. Assert.AreEqual (0, b.Top, "3");
  164. Assert.AreEqual (200, b.Bottom, "4");
  165. f.Dispose ();
  166. }
  167. // Unit test version of the test case in bug #80336
  168. [Test]
  169. public void AnchorSuspendLayoutTest ()
  170. {
  171. Form f = new Form ();
  172. f.ShowInTaskbar = false;
  173. f.SuspendLayout ();
  174. Button b = new Button ();
  175. b.Size = new Size (100, 100);
  176. f.Controls.Add (b);
  177. f.Size = new Size (200, 200);
  178. b.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
  179. Assert.AreEqual (0, b.Top, "1");
  180. Assert.AreEqual (0, b.Left, "2");
  181. f.Size = new Size (300, 300);
  182. Assert.AreEqual (0, b.Top, "3");
  183. Assert.AreEqual (0, b.Left, "4");
  184. f.ResumeLayout();
  185. Assert.AreEqual (100, b.Top, "5");
  186. Assert.AreEqual (100, b.Left, "6");
  187. f.Dispose ();
  188. }
  189. // another variant of AnchorSuspendLayoutTest1, with
  190. // the SuspendLayout moved after the Anchor
  191. // assignment.
  192. [Test]
  193. public void AnchorSuspendLayoutTest2 ()
  194. {
  195. Form f = new Form ();
  196. f.ShowInTaskbar = false;
  197. Button b = new Button ();
  198. b.Size = new Size (100, 100);
  199. f.Controls.Add (b);
  200. f.Size = new Size (200, 200);
  201. b.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
  202. Assert.AreEqual (0, b.Top, "1");
  203. Assert.AreEqual (0, b.Left, "2");
  204. f.SuspendLayout ();
  205. f.Size = new Size (300, 300);
  206. Assert.AreEqual (0, b.Top, "3");
  207. Assert.AreEqual (0, b.Left, "4");
  208. f.ResumeLayout();
  209. Assert.AreEqual (100, b.Top, "5");
  210. Assert.AreEqual (100, b.Left, "6");
  211. f.Dispose ();
  212. }
  213. // yet another variant, this time with no Suspend/Resume.
  214. [Test]
  215. public void AnchorSuspendLayoutTest3 ()
  216. {
  217. Form f = new Form ();
  218. f.ShowInTaskbar = false;
  219. Button b = new Button ();
  220. b.Size = new Size (100, 100);
  221. f.Controls.Add (b);
  222. f.Size = new Size (200, 200);
  223. b.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
  224. Assert.AreEqual (0, b.Top, "1");
  225. Assert.AreEqual (0, b.Left, "2");
  226. f.Size = new Size (300, 300);
  227. Assert.AreEqual (100, b.Top, "5");
  228. Assert.AreEqual (100, b.Left, "6");
  229. f.Dispose ();
  230. }
  231. private string event_raised = string.Empty;
  232. [Test]
  233. public void TestAnchorDockInteraction ()
  234. {
  235. Panel p = new Panel ();
  236. p.DockChanged += new EventHandler (DockChanged_Handler);
  237. Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A1");
  238. Assert.AreEqual (DockStyle.None, p.Dock, "A2");
  239. p.Dock = DockStyle.Right;
  240. Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A3");
  241. Assert.AreEqual (DockStyle.Right, p.Dock, "A4");
  242. Assert.AreEqual ("DockStyleChanged", event_raised, "A5");
  243. event_raised = string.Empty;
  244. p.Anchor = AnchorStyles.Bottom;
  245. Assert.AreEqual (AnchorStyles.Bottom, p.Anchor, "A6");
  246. Assert.AreEqual (DockStyle.None, p.Dock, "A7");
  247. Assert.AreEqual (string.Empty, event_raised, "A8");
  248. p.Dock = DockStyle.Fill;
  249. Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A9");
  250. Assert.AreEqual (DockStyle.Fill, p.Dock, "A10");
  251. Assert.AreEqual ("DockStyleChanged", event_raised, "A11");
  252. event_raised = string.Empty;
  253. p.Anchor = AnchorStyles.Top | AnchorStyles.Left;
  254. Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A12");
  255. Assert.AreEqual (DockStyle.Fill, p.Dock, "A13");
  256. Assert.AreEqual (string.Empty, event_raised, "A14");
  257. p.Dock = DockStyle.None;
  258. Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A15");
  259. Assert.AreEqual (DockStyle.None, p.Dock, "A16");
  260. Assert.AreEqual ("DockStyleChanged", event_raised, "A17");
  261. event_raised = string.Empty;
  262. p.Anchor = AnchorStyles.Bottom;
  263. p.Dock = DockStyle.None;
  264. Assert.AreEqual (AnchorStyles.Bottom, p.Anchor, "A18");
  265. Assert.AreEqual (DockStyle.None, p.Dock, "A19");
  266. Assert.AreEqual (string.Empty, event_raised, "A20");
  267. }
  268. public void DockChanged_Handler (object sender, EventArgs e)
  269. {
  270. event_raised += "DockStyleChanged";
  271. }
  272. [Test] // bug #80917
  273. [Category ("NotWorking")]
  274. public void BehaviorOverriddenDisplayRectangle ()
  275. {
  276. Control c = new Control ();
  277. c.Anchor |= AnchorStyles.Bottom;
  278. c.Size = new Size (100, 100);
  279. Form f = new DisplayRectangleForm ();
  280. f.Controls.Add (c);
  281. f.ShowInTaskbar = false;
  282. f.Show ();
  283. Assert.AreEqual (new Size (100, 100), c.Size, "A1");
  284. f.Dispose ();
  285. }
  286. private class DisplayRectangleForm : Form
  287. {
  288. public override Rectangle DisplayRectangle
  289. {
  290. get { return Rectangle.Empty; }
  291. }
  292. }
  293. [Test] // bug 80912
  294. public void AnchoredControlWithZeroWidthAndHeight ()
  295. {
  296. Form f = new Form ();
  297. f.ShowInTaskbar = false;
  298. Control c = new Control ();
  299. c.Anchor = AnchorStyles.Left | AnchorStyles.Right;
  300. f.Controls.Add (c);
  301. Assert.AreEqual (new Rectangle (0, 0, 0, 0), c.Bounds, "N1");
  302. }
  303. [Test] // bug 81694
  304. public void TestNestedControls ()
  305. {
  306. MainForm f = new MainForm ();
  307. f.ShowInTaskbar = false;
  308. f.Show ();
  309. Assert.AreEqual (new Rectangle (210, 212, 75, 23), f._userControl._button2.Bounds, "K1");
  310. f.Dispose ();
  311. }
  312. [Test] // bug 81695
  313. public void TestNestedControls2 ()
  314. {
  315. MainForm f = new MainForm ();
  316. f.ShowInTaskbar = false;
  317. f.Show ();
  318. Size s = f.Size;
  319. f.Size = new Size (10, 10);
  320. f.Size = s;
  321. Assert.AreEqual (new Rectangle (210, 212, 75, 23), f._userControl._button2.Bounds, "K1");
  322. f.Dispose ();
  323. }
  324. private class MainForm : Form
  325. {
  326. public UserControl1 _userControl;
  327. public MainForm ()
  328. {
  329. SuspendLayout ();
  330. //
  331. // _userControl
  332. //
  333. _userControl = new UserControl1 ();
  334. _userControl.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right);
  335. _userControl.BackColor = Color.White;
  336. _userControl.Location = new Point (8, 8);
  337. _userControl.Size = new Size (288, 238);
  338. _userControl.TabIndex = 0;
  339. Controls.Add (_userControl);
  340. //
  341. // MainForm
  342. //
  343. ClientSize = new Size (304, 280);
  344. Location = new Point (250, 100);
  345. StartPosition = FormStartPosition.Manual;
  346. Text = "bug #81694";
  347. ResumeLayout (false);
  348. }
  349. }
  350. private class UserControl1 : UserControl
  351. {
  352. private Button _button1;
  353. public Button _button2;
  354. public UserControl1 ()
  355. {
  356. SuspendLayout ();
  357. //
  358. // _button1
  359. //
  360. _button1 = new Button ();
  361. _button1.Location = new Point (4, 4);
  362. _button1.Size = new Size (75, 23);
  363. _button1.TabIndex = 0;
  364. _button1.Text = "Button1";
  365. Controls.Add (_button1);
  366. //
  367. // _button2
  368. //
  369. _button2 = new Button ();
  370. _button2.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
  371. _button2.Location = new Point (210, 212);
  372. _button2.Size = new Size (75, 23);
  373. _button2.TabIndex = 1;
  374. _button2.Text = "Button2";
  375. Controls.Add (_button2);
  376. //
  377. // UserControl1
  378. //
  379. BackColor = Color.White;
  380. ClientSize = new Size (288, 238);
  381. ResumeLayout (false);
  382. }
  383. }
  384. #if NET_2_0
  385. [Test]
  386. public void TestDockFillWithPadding ()
  387. {
  388. Form f = new Form ();
  389. f.ShowInTaskbar = false;
  390. f.Padding = new Padding (15, 15, 15, 15);
  391. Control c = new Control ();
  392. c.Dock = DockStyle.Fill;
  393. f.Controls.Add (c);
  394. f.Show ();
  395. Assert.AreEqual (new Size (f.ClientSize.Width - 30, f.ClientSize.Height - 30), c.Size, "K1");
  396. f.Dispose ();
  397. }
  398. #endif
  399. }
  400. [TestFixture]
  401. public class DockingTests
  402. {
  403. Form form;
  404. Panel panel;
  405. int event_count;
  406. [SetUp]
  407. public void Init ()
  408. {
  409. form = new Form ();
  410. form.ShowInTaskbar = false;
  411. form.Size = new Size (400, 400);
  412. panel = new Panel ();
  413. form.Controls.Add (panel);
  414. event_count = 0;
  415. }
  416. [TearDown]
  417. public void Cleanup ()
  418. {
  419. form.Dispose ();
  420. }
  421. void IncrementEventCount (object o, EventArgs args)
  422. {
  423. event_count++;
  424. }
  425. [Test]
  426. public void TestDockSizeChangedEvent ()
  427. {
  428. panel.SizeChanged += new EventHandler (IncrementEventCount);
  429. panel.Dock = DockStyle.Bottom;
  430. Assert.AreEqual (1, event_count);
  431. }
  432. [Test]
  433. public void TestDockLocationChangedEvent ()
  434. {
  435. panel.LocationChanged += new EventHandler (IncrementEventCount);
  436. panel.Dock = DockStyle.Bottom;
  437. Assert.AreEqual (1, event_count);
  438. }
  439. [Test]
  440. public void TestDockFillFirst ()
  441. {
  442. Form f = new Form ();
  443. f.ShowInTaskbar = false;
  444. Panel b1 = new Panel ();
  445. Panel b2 = new Panel ();
  446. b1.Dock = DockStyle.Fill;
  447. b2.Dock = DockStyle.Left;
  448. f.Controls.Add (b1);
  449. f.Controls.Add (b2);
  450. f.Show ();
  451. Assert.AreEqual (new Rectangle (b2.Width, 0, f.ClientRectangle.Width - b2.Width, f.ClientRectangle.Height), b1.Bounds, "A1");
  452. Assert.AreEqual (new Rectangle (0, 0, 200, f.ClientRectangle.Height), b2.Bounds, "A2");
  453. f.Dispose ();
  454. }
  455. [Test]
  456. public void TestDockFillLast ()
  457. {
  458. Form f = new Form ();
  459. f.ShowInTaskbar = false;
  460. Panel b1 = new Panel ();
  461. Panel b2 = new Panel ();
  462. b1.Dock = DockStyle.Fill;
  463. b2.Dock = DockStyle.Left;
  464. f.Controls.Add (b2);
  465. f.Controls.Add (b1);
  466. f.Show ();
  467. Assert.AreEqual (new Rectangle (0, 0, f.ClientRectangle.Width, f.ClientRectangle.Height), b1.Bounds, "B1");
  468. Assert.AreEqual (new Rectangle (0, 0, 200, f.ClientRectangle.Height), b2.Bounds, "B2");
  469. f.Dispose ();
  470. }
  471. [Test] // bug #81397
  472. public void TestDockingWithCustomDisplayRectangle ()
  473. {
  474. MyControl mc = new MyControl ();
  475. mc.Size = new Size (200, 200);
  476. Control c = new Control ();
  477. c.Dock = DockStyle.Fill;
  478. mc.Controls.Add (c);
  479. Form f = new Form ();
  480. f.ShowInTaskbar = false;
  481. f.Controls.Add (mc);
  482. f.Show ();
  483. Assert.AreEqual (new Point (20, 20), c.Location, "A1");
  484. Assert.AreEqual (new Size (160, 160), c.Size, "A2");
  485. f.Dispose ();
  486. }
  487. private class MyControl : Control
  488. {
  489. public override Rectangle DisplayRectangle {
  490. get { return new Rectangle (20, 20, this.Width - 40, this.Height - 40); }
  491. }
  492. }
  493. }
  494. [TestFixture]
  495. public class UndockingTests
  496. {
  497. class TestPanel : Panel {
  498. public void InvokeSetBoundsCore ()
  499. {
  500. SetBoundsCore (37, 37, 37, 37, BoundsSpecified.All);
  501. }
  502. public void InvokeUpdateBounds ()
  503. {
  504. UpdateBounds (37, 37, 37, 37);
  505. }
  506. }
  507. Form form;
  508. TestPanel panel;
  509. [SetUp]
  510. public void Init ()
  511. {
  512. form = new Form ();
  513. form.ShowInTaskbar = false;
  514. form.Size = new Size (400, 400);
  515. panel = new TestPanel ();
  516. form.Controls.Add (panel);
  517. }
  518. [TearDown]
  519. public void Cleanup ()
  520. {
  521. form.Dispose ();
  522. }
  523. [Test]
  524. public void TestUndockDefaultLocation ()
  525. {
  526. Point loc = panel.Location;
  527. panel.Dock = DockStyle.Bottom;
  528. panel.Dock = DockStyle.None;
  529. Assert.AreEqual (loc, panel.Location);
  530. }
  531. [Test]
  532. public void TestUndockDefaultLocationVisible ()
  533. {
  534. form.Show ();
  535. Point loc = panel.Location;
  536. panel.Dock = DockStyle.Bottom;
  537. panel.Dock = DockStyle.None;
  538. Assert.AreEqual (loc, panel.Location);
  539. }
  540. [Test]
  541. public void TestUndockExplicitLeft ()
  542. {
  543. panel.Left = 150;
  544. panel.Dock = DockStyle.Top;
  545. panel.Dock = DockStyle.None;
  546. Assert.AreEqual (150, panel.Left);
  547. }
  548. [Test]
  549. public void TestUndockExplicitTop ()
  550. {
  551. panel.Top = 150;
  552. panel.Dock = DockStyle.Top;
  553. panel.Dock = DockStyle.None;
  554. Assert.AreEqual (150, panel.Top);
  555. }
  556. [Test]
  557. public void TestUndockExplicitLocation ()
  558. {
  559. panel.Location = new Point (50, 50);
  560. Point loc = panel.Location;
  561. panel.Dock = DockStyle.Bottom;
  562. panel.Dock = DockStyle.None;
  563. Assert.AreEqual (loc, panel.Location);
  564. }
  565. [Test]
  566. public void TestUndockExplicitLeftVisible ()
  567. {
  568. form.Show ();
  569. panel.Left = 150;
  570. panel.Dock = DockStyle.Top;
  571. panel.Dock = DockStyle.None;
  572. Assert.AreEqual (150, panel.Left);
  573. }
  574. [Test]
  575. public void TestUndockExplicitTopVisible ()
  576. {
  577. form.Show ();
  578. panel.Top = 150;
  579. panel.Dock = DockStyle.Top;
  580. panel.Dock = DockStyle.None;
  581. Assert.AreEqual (150, panel.Top);
  582. }
  583. [Test]
  584. public void TestUndockExplicitLocationVisible ()
  585. {
  586. form.Show ();
  587. panel.Location = new Point (50, 50);
  588. Point loc = panel.Location;
  589. panel.Dock = DockStyle.Bottom;
  590. panel.Dock = DockStyle.None;
  591. Assert.AreEqual (loc, panel.Location);
  592. }
  593. [Test]
  594. public void TestUndockDefaultSize ()
  595. {
  596. Size sz = panel.Size;
  597. panel.Dock = DockStyle.Fill;
  598. panel.Dock = DockStyle.None;
  599. Assert.AreEqual (sz, panel.Size);
  600. }
  601. [Test]
  602. public void TestUndockExplicitHeight ()
  603. {
  604. panel.Height = 50;
  605. panel.Dock = DockStyle.Left;
  606. panel.Dock = DockStyle.None;
  607. Assert.AreEqual (50, panel.Height);
  608. }
  609. [Test]
  610. public void TestUndockExplicitSize ()
  611. {
  612. panel.Size = new Size (50, 50);
  613. Size sz = panel.Size;
  614. panel.Dock = DockStyle.Fill;
  615. panel.Dock = DockStyle.None;
  616. Assert.AreEqual (sz, panel.Size);
  617. }
  618. [Test]
  619. public void TestUndockExplicitWidth ()
  620. {
  621. panel.Width = 50;
  622. panel.Dock = DockStyle.Top;
  623. panel.Dock = DockStyle.None;
  624. Assert.AreEqual (50, panel.Width);
  625. }
  626. [Test]
  627. public void TestUndockExplicitHeightVisible ()
  628. {
  629. form.Show ();
  630. panel.Height = 50;
  631. panel.Dock = DockStyle.Left;
  632. panel.Dock = DockStyle.None;
  633. Assert.AreEqual (50, panel.Height);
  634. }
  635. [Test]
  636. public void TestUndockExplicitSizeVisible ()
  637. {
  638. form.Show ();
  639. panel.Size = new Size (50, 50);
  640. Size sz = panel.Size;
  641. panel.Dock = DockStyle.Fill;
  642. panel.Dock = DockStyle.None;
  643. Assert.AreEqual (sz, panel.Size);
  644. }
  645. [Test]
  646. public void TestUndockExplicitWidthVisible ()
  647. {
  648. form.Show ();
  649. panel.Width = 50;
  650. panel.Dock = DockStyle.Top;
  651. panel.Dock = DockStyle.None;
  652. Assert.AreEqual (50, panel.Width);
  653. }
  654. [Test]
  655. public void TestUndockSetBounds ()
  656. {
  657. panel.SetBounds (50, 50, 50, 50, BoundsSpecified.All);
  658. panel.Dock = DockStyle.Top;
  659. panel.Dock = DockStyle.None;
  660. Assert.AreEqual (50, panel.Height, "Height");
  661. Assert.AreEqual (50, panel.Left, "Left");
  662. Assert.AreEqual (50, panel.Top, "Top");
  663. Assert.AreEqual (50, panel.Width, "Width");
  664. }
  665. [Test]
  666. public void TestUndockSetBoundsVisible ()
  667. {
  668. form.Show ();
  669. panel.SetBounds (50, 50, 50, 50, BoundsSpecified.All);
  670. panel.Dock = DockStyle.Top;
  671. panel.Dock = DockStyle.None;
  672. Assert.AreEqual (50, panel.Height, "Height");
  673. Assert.AreEqual (50, panel.Left, "Left");
  674. Assert.AreEqual (50, panel.Top, "Top");
  675. Assert.AreEqual (50, panel.Width, "Width");
  676. }
  677. [Test]
  678. public void TestUndockSetBoundsCore ()
  679. {
  680. panel.InvokeSetBoundsCore ();
  681. panel.Dock = DockStyle.Top;
  682. panel.Dock = DockStyle.None;
  683. Assert.AreEqual (37, panel.Height, "Height");
  684. Assert.AreEqual (37, panel.Left, "Left");
  685. Assert.AreEqual (37, panel.Top, "Top");
  686. Assert.AreEqual (37, panel.Width, "Width");
  687. }
  688. [Test]
  689. public void TestUndockSetBoundsCoreVisible ()
  690. {
  691. form.Show ();
  692. panel.InvokeSetBoundsCore ();
  693. panel.Dock = DockStyle.Top;
  694. panel.Dock = DockStyle.None;
  695. Assert.AreEqual (37, panel.Height, "Height");
  696. Assert.AreEqual (37, panel.Left, "Left");
  697. Assert.AreEqual (37, panel.Top, "Top");
  698. Assert.AreEqual (37, panel.Width, "Width");
  699. }
  700. [Test]
  701. public void TestUndockUpdateBounds ()
  702. {
  703. panel.InvokeUpdateBounds ();
  704. panel.Dock = DockStyle.Top;
  705. panel.Dock = DockStyle.None;
  706. Assert.AreEqual (37, panel.Height, "Height");
  707. Assert.AreEqual (37, panel.Left, "Left");
  708. Assert.AreEqual (37, panel.Top, "Top");
  709. Assert.AreEqual (37, panel.Width, "Width");
  710. }
  711. [Test]
  712. public void TestUndockUpdateBoundsVisible ()
  713. {
  714. form.Show ();
  715. panel.InvokeUpdateBounds ();
  716. panel.Dock = DockStyle.Top;
  717. panel.Dock = DockStyle.None;
  718. Assert.AreEqual (37, panel.Height, "Height");
  719. Assert.AreEqual (37, panel.Left, "Left");
  720. Assert.AreEqual (37, panel.Top, "Top");
  721. Assert.AreEqual (37, panel.Width, "Width");
  722. }
  723. }
  724. }