[bcl] Remove more NET_2_0 checks from class libs
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ToolStripLabelTest.cs
1 //
2 // ToolStripLabelTests.cs
3 //
4 // Permission is hereby granted, free of charge, to any person obtaining
5 // a copy of this software and associated documentation files (the
6 // "Software"), to deal in the Software without restriction, including
7 // without limitation the rights to use, copy, modify, merge, publish,
8 // distribute, sublicense, and/or sell copies of the Software, and to
9 // permit persons to whom the Software is furnished to do so, subject to
10 // the following conditions:
11 // 
12 // The above copyright notice and this permission notice shall be
13 // included in all copies or substantial portions of the Software.
14 // 
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 //
23 // Copyright (c) 2006 Jonathan Pobst
24 //
25 // Authors:
26 //      Jonathan Pobst (monkey@jpobst.com)
27 //
28 using System;
29 using System.Collections.Generic;
30 using System.Text;
31 using NUnit.Framework;
32 using System.Drawing;
33 using System.Windows.Forms;
34
35 namespace MonoTests.System.Windows.Forms
36 {
37         [TestFixture]
38         public class ToolStripLabelTests : TestHelper
39         {
40                 [Test]
41                 public void Constructor ()
42                 {
43                         ToolStripLabel tsi = new ToolStripLabel ();
44
45                         Assert.AreEqual (Color.Red, tsi.ActiveLinkColor, "A1");
46                         Assert.AreEqual (false, tsi.CanSelect, "A2");
47                         Assert.AreEqual (false, tsi.IsLink, "A3");
48                         Assert.AreEqual (LinkBehavior.SystemDefault, tsi.LinkBehavior, "A4");
49                         Assert.AreEqual (Color.FromArgb (0,0,255), tsi.LinkColor, "A5");
50                         Assert.AreEqual (false, tsi.LinkVisited, "A6");
51                         Assert.AreEqual (Color.FromArgb (128, 0, 128), tsi.VisitedLinkColor, "A7");
52
53                         int count = 0;
54                         EventHandler oc = new EventHandler (delegate (object sender, EventArgs e) { count++; });
55                         Image i = new Bitmap (1,1);
56
57                         tsi = new ToolStripLabel (i);
58                         tsi.PerformClick();
59                         Assert.AreEqual (null, tsi.Text, "A8");
60                         Assert.AreSame (i, tsi.Image, "A9");
61                         Assert.AreEqual (false, tsi.IsLink, "A10");
62                         Assert.AreEqual (0, count, "A11");
63                         Assert.AreEqual (string.Empty, tsi.Name, "A12");
64
65                         tsi = new ToolStripLabel ("Text");
66                         tsi.PerformClick ();
67                         Assert.AreEqual ("Text", tsi.Text, "A13");
68                         Assert.AreSame (null, tsi.Image, "A14");
69                         Assert.AreEqual (false, tsi.IsLink, "A15");
70                         Assert.AreEqual (0, count, "A16");
71                         Assert.AreEqual (string.Empty, tsi.Name, "A17");
72
73                         tsi = new ToolStripLabel ("Text", i);
74                         tsi.PerformClick ();
75                         Assert.AreEqual ("Text", tsi.Text, "A18");
76                         Assert.AreSame (i, tsi.Image, "A19");
77                         Assert.AreEqual (false, tsi.IsLink, "A20");
78                         Assert.AreEqual (0, count, "A21");
79                         Assert.AreEqual (string.Empty, tsi.Name, "A22");
80
81                         tsi = new ToolStripLabel ("Text", i, true);
82                         tsi.PerformClick ();
83                         Assert.AreEqual ("Text", tsi.Text, "A23");
84                         Assert.AreSame (i, tsi.Image, "A24");
85                         Assert.AreEqual (true, tsi.IsLink, "A25");
86                         Assert.AreEqual (0, count, "A26");
87                         Assert.AreEqual (string.Empty, tsi.Name, "A27");
88
89                         tsi = new ToolStripLabel ("Text", i, true, oc);
90                         tsi.PerformClick ();
91                         Assert.AreEqual ("Text", tsi.Text, "A28");
92                         Assert.AreSame (i, tsi.Image, "A29");
93                         Assert.AreEqual (true, tsi.IsLink, "A30");
94                         Assert.AreEqual (1, count, "A31");
95                         Assert.AreEqual (string.Empty, tsi.Name, "A32");
96
97                         tsi = new ToolStripLabel ("Text", i, true, oc, "Name");
98                         tsi.PerformClick ();
99                         Assert.AreEqual ("Text", tsi.Text, "A33");
100                         Assert.AreSame (i, tsi.Image, "A34");
101                         Assert.AreEqual (true, tsi.IsLink, "A35");
102                         Assert.AreEqual (2, count, "A36");
103                         Assert.AreEqual ("Name", tsi.Name, "A37");
104                 }
105
106                 [Test]
107                 public void PropertyActiveLinkColor ()
108                 {
109                         ToolStripLabel tsi = new ToolStripLabel ();
110
111                         tsi.ActiveLinkColor = Color.Green;
112                         Assert.AreEqual (Color.Green, tsi.ActiveLinkColor, "B1");
113                 }
114
115                 [Test]
116                 public void PropertyIsLink ()
117                 {
118                         ToolStripLabel tsi = new ToolStripLabel ();
119
120                         tsi.IsLink = true;
121                         Assert.AreEqual (true, tsi.IsLink, "B1");
122                 }
123
124                 [Test]
125                 public void PropertyLinkBehavior ()
126                 {
127                         ToolStripLabel tsi = new ToolStripLabel ();
128
129                         tsi.LinkBehavior = LinkBehavior.NeverUnderline;
130                         Assert.AreEqual (LinkBehavior.NeverUnderline, tsi.LinkBehavior, "B1");
131                 }
132
133                 [Test]
134                 public void PropertyLinkColor ()
135                 {
136                         ToolStripLabel tsi = new ToolStripLabel ();
137
138                         tsi.LinkColor = Color.Green;
139                         Assert.AreEqual (Color.Green, tsi.LinkColor, "B1");
140                 }
141
142                 [Test]
143                 public void PropertyLinkVisited ()
144                 {
145                         ToolStripLabel tsi = new ToolStripLabel ();
146
147                         tsi.LinkVisited = true;
148                         Assert.AreEqual (true, tsi.LinkVisited, "B1");
149                 }
150
151                 [Test]
152                 public void PropertyVisitedLinkColor ()
153                 {
154                         ToolStripLabel tsi = new ToolStripLabel ();
155
156                         tsi.VisitedLinkColor = Color.Green;
157                         Assert.AreEqual (Color.Green, tsi.VisitedLinkColor, "B1");
158                 }
159
160
161                 //[Test]
162                 //public void PropertyAnchorAndDocking ()
163                 //{
164                 //        ToolStripItem ts = new NullToolStripItem ();
165
166                 //        ts.Anchor = AnchorStyles.Top | AnchorStyles.Bottom;
167
168                 //        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Bottom, ts.Anchor, "A1");
169                 //        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
170
171                 //        ts.Anchor = AnchorStyles.Left | AnchorStyles.Right;
172
173                 //        Assert.AreEqual (AnchorStyles.Left | AnchorStyles.Right, ts.Anchor, "A1");
174                 //        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
175
176                 //        ts.Dock = DockStyle.Left;
177
178                 //        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
179                 //        Assert.AreEqual (DockStyle.Left, ts.Dock, "A2");
180
181                 //        ts.Dock = DockStyle.None;
182
183                 //        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
184                 //        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
185
186                 //        ts.Dock = DockStyle.Top;
187
188                 //        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
189                 //        Assert.AreEqual (DockStyle.Top, ts.Dock, "A2");
190                 //}
191                 
192                 [Test]
193                 [Ignore ("Accessibility still needs some work")]
194                 public void Accessibility ()
195                 {
196                         ToolStripLabel tsi = new ToolStripLabel ();
197                         AccessibleObject ao = tsi.AccessibilityObject;
198
199                         Assert.AreEqual ("ToolStripItemAccessibleObject: Owner = " + tsi.ToString (), ao.ToString (), "L");
200                         Assert.AreEqual (Rectangle.Empty, ao.Bounds, "L1");
201                         Assert.AreEqual (string.Empty, ao.DefaultAction, "L2");
202                         Assert.AreEqual (null, ao.Description, "L3");
203                         Assert.AreEqual (null, ao.Help, "L4");
204                         Assert.AreEqual (string.Empty, ao.KeyboardShortcut, "L5");
205                         Assert.AreEqual (string.Empty, ao.Name, "L6");
206                         Assert.AreEqual (null, ao.Parent, "L7");
207                         Assert.AreEqual (AccessibleRole.StaticText, ao.Role, "L8");
208                         Assert.AreEqual (AccessibleStates.ReadOnly, ao.State, "L9");
209                         Assert.AreEqual (string.Empty, ao.Value, "L10");
210
211                         tsi.Name = "Label1";
212                         tsi.Text = "Test Label";
213                         tsi.AccessibleDescription = "Label Desc";
214
215                         Assert.AreEqual (Rectangle.Empty, ao.Bounds, "L11");
216                         Assert.AreEqual (string.Empty, ao.DefaultAction, "L12");
217                         Assert.AreEqual ("Label Desc", ao.Description, "L13");
218                         Assert.AreEqual (null, ao.Help, "L14");
219                         Assert.AreEqual (string.Empty, ao.KeyboardShortcut, "L15");
220                         Assert.AreEqual ("Test Label", ao.Name, "L16");
221                         Assert.AreEqual (null, ao.Parent, "L17");
222                         Assert.AreEqual (AccessibleRole.StaticText, ao.Role, "L18");
223                         Assert.AreEqual (AccessibleStates.ReadOnly, ao.State, "L19");
224                         Assert.AreEqual (string.Empty, ao.Value, "L20");
225
226                         tsi.AccessibleName = "Access Label";
227                         Assert.AreEqual ("Access Label", ao.Name, "L21");
228
229                         tsi.Text = "Test Label";
230                         Assert.AreEqual ("Access Label", ao.Name, "L22");
231
232                         tsi.AccessibleDefaultActionDescription = "AAA";
233                         Assert.AreEqual ("AAA", tsi.AccessibleDefaultActionDescription, "L23");
234                 }
235
236                 [Test]
237                 [NUnit.Framework.Category ("NotWorking")]       // Font dependent, values are for win32
238                 public void BehaviorAutoSize ()
239                 {
240                         // Lots of things depend on this, it needs to be 100% correct...
241                         ToolStripItem tsi = new ToolStripLabel ();
242
243                         string string1 = "ABCDEFG";
244                         string string2 = "qwertyuiop--123456";
245                         Font f1 = tsi.Font;
246                         Font f2 = new Font ("Arial", 14);
247                         Size string1size = TextRenderer.MeasureText (string1, f1);
248                         Size string2size = TextRenderer.MeasureText (string2, f1);
249                         Size string1size2 = TextRenderer.MeasureText (string1, f2);
250                         Size string2size2 = TextRenderer.MeasureText (string2, f2);
251                         Image i = new Bitmap (16, 16);
252                         Image i2 = new Bitmap (22, 22);
253
254                         Assert.AreEqual (new Size (0, 0), tsi.GetPreferredSize (Size.Empty), "K1");
255
256                         // Text only
257                         tsi.Text = string1;
258                         Assert.AreEqual (new Size (string1size.Width, string1size.Height), tsi.GetPreferredSize (Size.Empty), "K2");
259
260                         tsi.Text = string2;
261                         Assert.AreEqual (new Size (string2size.Width, string1size.Height), tsi.GetPreferredSize (Size.Empty), "K3");
262
263                         tsi.Font = f2;
264                         tsi.Text = string1;
265                         Assert.AreEqual (new Size (string1size2.Width, string1size2.Height), tsi.GetPreferredSize (Size.Empty), "K4");
266
267                         tsi.Text = string2;
268                         Assert.AreEqual (new Size (string2size2.Width, string1size2.Height), tsi.GetPreferredSize (Size.Empty), "K5");
269
270                         // Text and image
271                         tsi.Image = i;
272                         tsi.Font = f1;
273                         tsi.Text = string1;
274                         Assert.AreEqual (new Size (string1size.Width + 16, string1size.Height + 3), tsi.GetPreferredSize (Size.Empty), "K6");
275
276                         tsi.Text = string2;
277                         Assert.AreEqual (new Size (string2size.Width + 16, string2size.Height + 3), tsi.GetPreferredSize (Size.Empty), "K7");
278
279                         tsi.Image = i2;
280                         tsi.Font = f2;
281                         tsi.Text = string1;
282                         Assert.AreEqual (new Size (string1size2.Width + 22, Math.Max (string1size2.Height, 22)), tsi.GetPreferredSize (Size.Empty), "K8");
283
284                         tsi.Text = string2;
285                         Assert.AreEqual (new Size (string2size2.Width + 22, Math.Max (string1size2.Height, 22)), tsi.GetPreferredSize (Size.Empty), "K9");
286
287                         // Image only
288                         tsi.Image = i;
289                         tsi.Text = string.Empty;
290
291                         Assert.AreEqual (new Size (16, 16), tsi.GetPreferredSize (Size.Empty), "K10");
292
293                         tsi.Image = i2;
294                         Assert.AreEqual (new Size (22, 22), tsi.GetPreferredSize (Size.Empty), "K11");
295
296                         // DisplayStyle = text
297                         tsi.Image = null;
298                         tsi.Text = string1;
299                         tsi.Font = f1;
300                         tsi.DisplayStyle = ToolStripItemDisplayStyle.Text;
301
302                         Assert.AreEqual (new Size (string1size.Width, string1size.Height), tsi.GetPreferredSize (Size.Empty), "K12");
303
304                         tsi.Text = string2;
305                         Assert.AreEqual (new Size (string2size.Width, string1size.Height), tsi.GetPreferredSize (Size.Empty), "K13");
306
307                         tsi.Font = f2;
308                         tsi.Text = string1;
309                         Assert.AreEqual (new Size (string1size2.Width, string1size2.Height), tsi.GetPreferredSize (Size.Empty), "K14");
310
311                         tsi.Text = string2;
312                         Assert.AreEqual (new Size (string2size2.Width, string1size2.Height), tsi.GetPreferredSize (Size.Empty), "K15");
313
314                         // DisplayStyle = image
315                         tsi.Image = i;
316                         tsi.Text = string.Empty;
317                         tsi.DisplayStyle = ToolStripItemDisplayStyle.Image;
318
319                         Assert.AreEqual (new Size (16, 16), tsi.GetPreferredSize (Size.Empty), "K16");
320
321                         tsi.Image = i2;
322                         Assert.AreEqual (new Size (22, 22), tsi.GetPreferredSize (Size.Empty), "K17");
323
324                         // DisplayStyle = textandimage, imagebeforetext
325                         tsi.Image = i;
326                         tsi.Font = f1;
327                         tsi.Text = string1;
328                         tsi.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
329                         Assert.AreEqual (new Size (string1size.Width + 16, 16), tsi.GetPreferredSize (Size.Empty), "K18");
330
331                         tsi.Text = string2;
332                         Assert.AreEqual (new Size (string2size.Width + 16, 16), tsi.GetPreferredSize (Size.Empty), "K19");
333
334                         tsi.Image = i2;
335                         tsi.Font = f2;
336                         tsi.Text = string1;
337                         Assert.AreEqual (new Size (string1size2.Width + 22, Math.Max (string1size2.Height, 22)), tsi.GetPreferredSize (Size.Empty), "K20");
338
339                         tsi.Text = string2;
340                         Assert.AreEqual (new Size (string2size2.Width + 22, Math.Max (string1size2.Height, 22)), tsi.GetPreferredSize (Size.Empty), "K21");
341
342                         // DisplayStyle = textandimage, TextBeforeImage
343                         tsi.Image = i;
344                         tsi.Font = f1;
345                         tsi.Text = string1;
346                         tsi.TextImageRelation = TextImageRelation.TextBeforeImage;
347                         Assert.AreEqual (new Size (string1size.Width + 16, 16), tsi.GetPreferredSize (Size.Empty), "K22");
348
349                         tsi.Text = string2;
350                         Assert.AreEqual (new Size (string2size.Width + 16, 16), tsi.GetPreferredSize (Size.Empty), "K23");
351
352                         tsi.Image = i2;
353                         tsi.Font = f2;
354                         tsi.Text = string1;
355                         Assert.AreEqual (new Size (string1size2.Width + 22, Math.Max (string1size2.Height, 22)), tsi.GetPreferredSize (Size.Empty), "K24");
356
357                         tsi.Text = string2;
358                         Assert.AreEqual (new Size (string2size2.Width + 22, Math.Max (string1size2.Height, 22)), tsi.GetPreferredSize (Size.Empty), "K25");
359
360                         // DisplayStyle = textandimage, overlay
361                         tsi.Image = i;
362                         tsi.Font = f1;
363                         tsi.Text = string1;
364                         tsi.TextImageRelation = TextImageRelation.Overlay;
365                         Assert.AreEqual (new Size (string1size.Width, 16), tsi.GetPreferredSize (Size.Empty), "K26");
366
367                         tsi.Text = string2;
368                         Assert.AreEqual (new Size (string2size.Width, 16), tsi.GetPreferredSize (Size.Empty), "K27");
369
370                         tsi.Image = i2;
371                         tsi.Font = f2;
372                         tsi.Text = string1;
373                         Assert.AreEqual (new Size (string1size2.Width, Math.Max (string1size2.Height, 22)), tsi.GetPreferredSize (Size.Empty), "K28");
374
375                         tsi.Text = string2;
376                         Assert.AreEqual (new Size (string2size2.Width, Math.Max (string1size2.Height, 22)), tsi.GetPreferredSize (Size.Empty), "K29");
377
378                         // DisplayStyle = textandimage, TextAboveImage
379                         tsi.Image = i;
380                         tsi.Font = f1;
381                         tsi.Text = string1;
382                         tsi.TextImageRelation = TextImageRelation.TextAboveImage;
383                         Assert.AreEqual (new Size (string1size.Width, string1size.Height + tsi.Image.Height), tsi.GetPreferredSize (Size.Empty), "K30");
384
385                         tsi.Text = string2;
386                         Assert.AreEqual (new Size (string2size.Width, string2size.Height + tsi.Image.Height), tsi.GetPreferredSize (Size.Empty), "K31");
387
388                         tsi.Image = i2;
389                         tsi.Font = f2;
390                         tsi.Text = string1;
391                         Assert.AreEqual (new Size (string1size2.Width, string1size2.Height + tsi.Image.Height), tsi.GetPreferredSize (Size.Empty), "K32");
392
393                         tsi.Text = string2;
394                         Assert.AreEqual (new Size (string2size2.Width, string2size2.Height + tsi.Image.Height), tsi.GetPreferredSize (Size.Empty), "K33");
395
396                         // DisplayStyle = textandimage, ImageAboveText
397                         tsi.Image = i;
398                         tsi.Font = f1;
399                         tsi.Text = string1;
400                         tsi.TextImageRelation = TextImageRelation.ImageAboveText;
401                         Assert.AreEqual (new Size (string1size.Width, string1size.Height + tsi.Image.Height), tsi.GetPreferredSize (Size.Empty), "K34");
402
403                         tsi.Text = string2;
404                         Assert.AreEqual (new Size (string2size.Width, string2size.Height + tsi.Image.Height), tsi.GetPreferredSize (Size.Empty), "K35");
405
406                         tsi.Image = i2;
407                         tsi.Font = f2;
408                         tsi.Text = string1;
409                         Assert.AreEqual (new Size (string1size2.Width, string1size2.Height + tsi.Image.Height), tsi.GetPreferredSize (Size.Empty), "K36");
410
411                         tsi.Text = string2;
412                         Assert.AreEqual (new Size (string2size2.Width, string2size2.Height + tsi.Image.Height), tsi.GetPreferredSize (Size.Empty), "K37");
413                 }
414         }
415 }