SplitContainerTests.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. #if NET_2_0
  2. using System;
  3. using NUnit.Framework;
  4. using System.Windows.Forms;
  5. using System.Drawing;
  6. namespace MonoTests.System.Windows.Forms
  7. {
  8. [TestFixture]
  9. public class SplitContainerTests : TestHelper
  10. {
  11. [Test]
  12. public void TestSplitContainerConstruction ()
  13. {
  14. SplitContainer sc = new SplitContainer ();
  15. Assert.AreEqual (new Size (150, 100), sc.Size, "A1");
  16. Assert.AreEqual (FixedPanel.None, sc.FixedPanel, "A2");
  17. Assert.AreEqual (false, sc.IsSplitterFixed, "A3");
  18. Assert.AreEqual (Orientation.Vertical, sc.Orientation, "A4");
  19. Assert.AreEqual (false, sc.Panel1Collapsed, "A6");
  20. Assert.AreEqual (25, sc.Panel1MinSize, "A7");
  21. Assert.AreEqual (false, sc.Panel2Collapsed, "A9");
  22. Assert.AreEqual (25, sc.Panel2MinSize, "A10");
  23. Assert.AreEqual (50, sc.SplitterDistance, "A11");
  24. Assert.AreEqual (1, sc.SplitterIncrement, "A12");
  25. Assert.AreEqual (new Rectangle(50, 0, 4, 100), sc.SplitterRectangle, "A13");
  26. Assert.AreEqual (4, sc.SplitterWidth, "A14");
  27. Assert.AreEqual (BorderStyle.None, sc.BorderStyle, "A14");
  28. Assert.AreEqual (DockStyle.None, sc.Dock, "A15");
  29. }
  30. [Test]
  31. public void TestProperties ()
  32. {
  33. SplitContainer sc = new SplitContainer ();
  34. sc.BorderStyle = BorderStyle.FixedSingle;
  35. Assert.AreEqual (BorderStyle.FixedSingle, sc.BorderStyle, "C1");
  36. sc.Dock = DockStyle.Fill;
  37. Assert.AreEqual (DockStyle.Fill, sc.Dock, "C2");
  38. sc.FixedPanel = FixedPanel.Panel1;
  39. Assert.AreEqual (FixedPanel.Panel1, sc.FixedPanel, "C3");
  40. sc.IsSplitterFixed = true;
  41. Assert.AreEqual (true, sc.IsSplitterFixed, "C4");
  42. sc.Orientation = Orientation.Horizontal;
  43. Assert.AreEqual (Orientation.Horizontal, sc.Orientation, "C5");
  44. sc.Panel1Collapsed = true;
  45. Assert.AreEqual (true, sc.Panel1Collapsed, "C6");
  46. sc.Panel1MinSize = 10;
  47. Assert.AreEqual (10, sc.Panel1MinSize, "C7");
  48. sc.Panel2Collapsed = true;
  49. Assert.AreEqual (true, sc.Panel2Collapsed, "C8");
  50. sc.Panel2MinSize = 10;
  51. Assert.AreEqual (10, sc.Panel2MinSize, "C9");
  52. sc.SplitterDistance = 77;
  53. Assert.AreEqual (77, sc.SplitterDistance, "C10");
  54. sc.SplitterIncrement = 5;
  55. Assert.AreEqual (5, sc.SplitterIncrement, "C11");
  56. sc.SplitterWidth = 10;
  57. Assert.AreEqual (10, sc.SplitterWidth, "C12");
  58. }
  59. [Test]
  60. public void TestPanelProperties ()
  61. {
  62. SplitContainer sc = new SplitContainer ();
  63. SplitterPanel p = sc.Panel1;
  64. Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "D1");
  65. p.Anchor = AnchorStyles.None;
  66. Assert.AreEqual (AnchorStyles.None, p.Anchor, "D1-2");
  67. Assert.AreEqual (false, p.AutoSize, "D2");
  68. p.AutoSize = true;
  69. Assert.AreEqual (true, p.AutoSize, "D2-2");
  70. Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "D3");
  71. p.AutoSizeMode = AutoSizeMode.GrowAndShrink;
  72. Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "D3-2");
  73. Assert.AreEqual (BorderStyle.None, p.BorderStyle, "D4");
  74. p.BorderStyle = BorderStyle.FixedSingle;
  75. Assert.AreEqual (BorderStyle.FixedSingle, p.BorderStyle, "D4-2");
  76. Assert.AreEqual (DockStyle.None, p.Dock, "D5");
  77. p.Dock = DockStyle.Left;
  78. Assert.AreEqual (DockStyle.Left, p.Dock, "D5-2");
  79. Assert.AreEqual (new Point (0, 0), p.Location, "D7");
  80. p.Location = new Point (10, 10);
  81. Assert.AreEqual (new Point (0, 0), p.Location, "D7-2");
  82. Assert.AreEqual (new Size (0, 0), p.MaximumSize, "D8");
  83. p.MaximumSize = new Size (10, 10);
  84. Assert.AreEqual (new Size (10, 10), p.MaximumSize, "D8-2");
  85. Assert.AreEqual (new Size (0, 0), p.MinimumSize, "D9");
  86. p.MinimumSize = new Size (10, 10);
  87. Assert.AreEqual (new Size (10, 10), p.MinimumSize, "D9-2");
  88. Assert.AreEqual (String.Empty, p.Name, "D10");
  89. p.Name = "MyPanel";
  90. Assert.AreEqual ("MyPanel", p.Name, "D10-2");
  91. // We set a new max/min size above, so let's start over with new controls
  92. sc = new SplitContainer();
  93. p = sc.Panel1;
  94. Assert.AreEqual (new Size (50, 100), p.Size, "D12");
  95. p.Size = new Size (10, 10);
  96. Assert.AreEqual (new Size (50, 100), p.Size, "D12-2");
  97. //Assert.AreEqual (0, p.TabIndex, "D13");
  98. p.TabIndex = 4;
  99. Assert.AreEqual (4, p.TabIndex, "D13-2");
  100. Assert.AreEqual (false, p.TabStop, "D14");
  101. p.TabStop = true;
  102. Assert.AreEqual (true, p.TabStop, "D14-2");
  103. Assert.AreEqual (true, p.Visible, "D15");
  104. p.Visible = false;
  105. Assert.AreEqual (false, p.Visible, "D15-2");
  106. }
  107. [Test]
  108. [ExpectedException (typeof (NotSupportedException))]
  109. public void TestPanelHeightProperty ()
  110. {
  111. SplitContainer sc = new SplitContainer ();
  112. SplitterPanel p = sc.Panel1;
  113. Assert.AreEqual (100, p.Height, "E1");
  114. p.Height = 200;
  115. }
  116. [Test]
  117. [ExpectedException (typeof (NotSupportedException))]
  118. public void TestPanelWidthProperty ()
  119. {
  120. SplitContainer sc = new SplitContainer ();
  121. SplitterPanel p = sc.Panel1;
  122. Assert.AreEqual (50, p.Width, "F1");
  123. p.Width = 200;
  124. }
  125. [Test]
  126. [ExpectedException (typeof (NotSupportedException))]
  127. public void TestPanelParentProperty ()
  128. {
  129. SplitContainer sc = new SplitContainer ();
  130. SplitContainer sc2 = new SplitContainer ();
  131. SplitterPanel p = sc.Panel1;
  132. Assert.AreEqual (sc, p.Parent, "G1");
  133. p.Parent = sc2;
  134. }
  135. [Test]
  136. public void TestSplitterPosition ()
  137. {
  138. SplitContainer sc = new SplitContainer ();
  139. Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "H1");
  140. sc.Orientation = Orientation.Horizontal;
  141. Assert.AreEqual (new Rectangle (0, 50, 150, 4), sc.SplitterRectangle, "H2");
  142. }
  143. [Test]
  144. public void TestFixedPanelNone ()
  145. {
  146. SplitContainer sc = new SplitContainer ();
  147. Assert.AreEqual (50, sc.SplitterDistance, "I1");
  148. sc.Width = 300;
  149. Assert.AreEqual (100, sc.SplitterDistance, "I2");
  150. }
  151. [Test]
  152. public void TestFixedPanel1 ()
  153. {
  154. SplitContainer sc = new SplitContainer ();
  155. sc.FixedPanel = FixedPanel.Panel1;
  156. Assert.AreEqual (50, sc.SplitterDistance, "J1");
  157. sc.Width = 300;
  158. Assert.AreEqual (50, sc.SplitterDistance, "J2");
  159. }
  160. [Test]
  161. public void TestFixedPanel2 ()
  162. {
  163. SplitContainer sc = new SplitContainer ();
  164. sc.FixedPanel = FixedPanel.Panel2;
  165. Assert.AreEqual (50, sc.SplitterDistance, "K1");
  166. sc.Width = 300;
  167. Assert.AreEqual (200, sc.SplitterDistance, "K2");
  168. }
  169. [Test]
  170. public void TestSplitterDistance ()
  171. {
  172. SplitContainer sc = new SplitContainer ();
  173. Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "L1");
  174. sc.SplitterDistance = 100;
  175. Assert.AreEqual (new Rectangle (100, 0, 4, 100), sc.SplitterRectangle, "L2");
  176. }
  177. [Test]
  178. public void TestSplitterWidth ()
  179. {
  180. SplitContainer sc = new SplitContainer ();
  181. Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "M1");
  182. sc.SplitterWidth = 10;
  183. Assert.AreEqual (new Rectangle (50, 0, 10, 100), sc.SplitterRectangle, "M2");
  184. }
  185. [Test]
  186. public void MethodScaleControl ()
  187. {
  188. Form f = new Form ();
  189. PublicSplitContainer gb = new PublicSplitContainer ();
  190. gb.Location = new Point (5, 10);
  191. f.Controls.Add (gb);
  192. Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A1");
  193. gb.PublicScaleControl (new SizeF (2.0f, 2.0f), BoundsSpecified.All);
  194. Assert.AreEqual (new Rectangle (10, 20, 300, 200), gb.Bounds, "A2");
  195. gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Location);
  196. Assert.AreEqual (new Rectangle (5, 10, 300, 200), gb.Bounds, "A3");
  197. gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Size);
  198. Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A4");
  199. gb.PublicScaleControl (new SizeF (3.5f, 3.5f), BoundsSpecified.Size);
  200. Assert.AreEqual (new Rectangle (5, 10, 525, 350), gb.Bounds, "A5");
  201. gb.PublicScaleControl (new SizeF (2.5f, 2.5f), BoundsSpecified.Size);
  202. Assert.AreEqual (new Rectangle (5, 10, 1312, 875), gb.Bounds, "A6");
  203. gb.PublicScaleControl (new SizeF (.2f, .2f), BoundsSpecified.Size);
  204. Assert.AreEqual (new Rectangle (5, 10, 262, 175), gb.Bounds, "A7");
  205. f.Dispose ();
  206. }
  207. [Test]
  208. public void ControlStyle ()
  209. {
  210. PublicSplitContainer epp = new PublicSplitContainer ();
  211. ControlStyles cs = ControlStyles.ContainerControl;
  212. cs |= ControlStyles.UserPaint;
  213. cs |= ControlStyles.StandardClick;
  214. cs |= ControlStyles.SupportsTransparentBackColor;
  215. cs |= ControlStyles.StandardDoubleClick;
  216. cs |= ControlStyles.Selectable;
  217. cs |= ControlStyles.OptimizedDoubleBuffer;
  218. cs |= ControlStyles.UseTextForAccessibility;
  219. Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");
  220. }
  221. private class PublicSplitContainer : SplitContainer
  222. {
  223. public void PublicScaleControl (SizeF factor, BoundsSpecified specified)
  224. {
  225. base.ScaleControl (factor, specified);
  226. }
  227. public ControlStyles GetControlStyles ()
  228. {
  229. ControlStyles retval = (ControlStyles)0;
  230. foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))
  231. if (this.GetStyle (cs) == true)
  232. retval |= cs;
  233. return retval;
  234. }
  235. }
  236. }
  237. }
  238. #endif