2 // LinkLabelTest.cs: MWF LinkLabel unit tests.
\r
5 // Everaldo Canuto (ecanuto@novell.com)
\r
7 // (C) 2007 Novell, Inc. (http://www.novell.com)
\r
11 using NUnit.Framework;
\r
12 using System.Windows.Forms;
\r
13 using System.Drawing;
\r
15 namespace MonoTests.System.Windows.Forms
\r
18 public class LinkLabelTest : TestHelper
\r
21 public void LinkLabelAccessibility ()
\r
23 LinkLabel l = new LinkLabel ();
\r
24 Assert.IsNotNull (l.AccessibilityObject, "#1");
\r
28 public void TestTabStop ()
\r
30 LinkLabel l = new LinkLabel();
\r
32 Assert.IsFalse (l.TabStop, "#1");
\r
34 Assert.IsTrue (l.TabStop, "#2");
\r
36 Assert.IsFalse (l.TabStop, "#3");
\r
40 public void TestLinkArea ()
\r
42 LinkLabel l = new LinkLabel();
\r
44 Assert.AreEqual (0, l.LinkArea.Start, "#1");
\r
45 Assert.AreEqual (0, l.LinkArea.Length, "#2");
\r
47 Assert.AreEqual (0, l.LinkArea.Start, "#3");
\r
48 Assert.AreEqual (5, l.LinkArea.Length, "#4");
\r
50 Assert.AreEqual (0, l.LinkArea.Start, "#5");
\r
51 Assert.AreEqual (0, l.LinkArea.Length, "#6");
\r
54 [Test] // bug #344012
\r
55 public void InvalidateManualLinks ()
\r
57 Form form = new Form ();
\r
58 form.ShowInTaskbar = false;
\r
60 LinkLabel l = new LinkLabel ();
\r
61 l.Text = "linkLabel1";
\r
62 form.Controls.Add (l);
\r
65 LinkLabel.Link link = new LinkLabel.Link (2, 5);
\r
75 [Test] // bug 410709
\r
76 public void LinkAreaSetter ()
\r
78 // Basically this test is to show that setting LinkArea erased
\r
79 // any previous links
\r
80 LinkLabel l = new LinkLabel ();
\r
82 l.Text = "Really long text";
\r
84 Assert.AreEqual (1, l.Links.Count, "A1");
\r
90 Assert.AreEqual (2, l.Links.Count, "A2");
\r
92 l.LinkArea = new LinkArea (1, 7);
\r
94 Assert.AreEqual (1, l.Links.Count, "A3");
\r
95 Assert.AreEqual (1, l.LinkArea.Start, "A4");
\r
96 Assert.AreEqual (7, l.LinkArea.Length, "A5");
\r
103 public class LinkTest : TestHelper
\r
106 public void Constructor ()
\r
108 LinkLabel.Link l = new LinkLabel.Link ();
\r
110 Assert.AreEqual (null, l.Description, "A1");
\r
111 Assert.AreEqual (true, l.Enabled, "A2");
\r
112 Assert.AreEqual (0, l.Length, "A3");
\r
113 Assert.AreEqual (null, l.LinkData, "A4");
\r
114 Assert.AreEqual (string.Empty, l.Name, "A5");
\r
115 Assert.AreEqual (0, l.Start, "A6");
\r
116 Assert.AreEqual (null, l.Tag, "A7");
\r
117 Assert.AreEqual (false, l.Visited, "A8");
\r
119 l = new LinkLabel.Link (5, 20);
\r
121 Assert.AreEqual (null, l.Description, "A9");
\r
122 Assert.AreEqual (true, l.Enabled, "A10");
\r
123 Assert.AreEqual (20, l.Length, "A11");
\r
124 Assert.AreEqual (null, l.LinkData, "A12");
\r
125 Assert.AreEqual (string.Empty, l.Name, "A13");
\r
126 Assert.AreEqual (5, l.Start, "A14");
\r
127 Assert.AreEqual (null, l.Tag, "A15");
\r
128 Assert.AreEqual (false, l.Visited, "A16");
\r
130 l = new LinkLabel.Link (3, 7, "test");
\r
132 Assert.AreEqual (null, l.Description, "A17");
\r
133 Assert.AreEqual (true, l.Enabled, "A18");
\r
134 Assert.AreEqual (7, l.Length, "A19");
\r
135 Assert.AreEqual ("test", l.LinkData, "A20");
\r
136 Assert.AreEqual (string.Empty, l.Name, "A21");
\r
137 Assert.AreEqual (3, l.Start, "A22");
\r
138 Assert.AreEqual (null, l.Tag, "A23");
\r
139 Assert.AreEqual (false, l.Visited, "A24");
\r
145 public class LinkCollectionTest : TestHelper
\r
147 [Test] // ctor (LinkLabel)
\r
148 public void Constructor1 ()
\r
150 LinkLabel l = new LinkLabel ();
\r
151 l.Text = "Managed Windows Forms";
\r
153 LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
\r
155 LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
\r
158 Assert.AreEqual (1, links1.Count, "#A1");
\r
159 Assert.IsFalse (links1.IsReadOnly, "#A2");
\r
161 Assert.IsFalse (links1.LinksAdded, "#A3");
\r
164 LinkLabel.Link link = links1 [0];
\r
166 Assert.IsNull (link.Description, "#B1");
\r
168 Assert.IsTrue (link.Enabled, "#B2");
\r
169 Assert.AreEqual (21, link.Length, "#B3");
\r
170 Assert.IsNull (link.LinkData, "#B4");
\r
172 Assert.IsNotNull (link.Name, "#B5");
\r
173 Assert.AreEqual (string.Empty, link.Name, "#B6");
\r
175 Assert.AreEqual (0, link.Start, "#B7");
\r
177 Assert.IsNull (link.Tag, "#B8");
\r
179 Assert.IsFalse (link.Visited, "#B9");
\r
181 Assert.AreEqual (1, links2.Count, "#C1");
\r
182 Assert.IsFalse (links2.IsReadOnly, "#C2");
\r
184 Assert.IsFalse (links2.LinksAdded, "#C3");
\r
186 Assert.AreSame (link, links2 [0], "#C4");
\r
189 [Test] // ctor (LinkLabel)
\r
190 public void Constructor1_Owner_Null ()
\r
193 new LinkLabel.LinkCollection ((LinkLabel) null);
\r
194 Assert.Fail ("#1");
\r
195 } catch (ArgumentNullException ex) {
\r
196 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
197 Assert.IsNull (ex.InnerException, "#3");
\r
198 Assert.IsNotNull (ex.Message, "#4");
\r
199 Assert.IsNotNull (ex.ParamName, "#5");
\r
200 Assert.AreEqual ("owner", ex.ParamName, "#6");
\r
205 [Test] // Add (LinkLabel.Link)
\r
206 public void Add1 ()
\r
208 LinkLabel l = new LinkLabel ();
\r
209 l.Text = "Managed Windows Forms";
\r
211 LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
\r
213 LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
\r
216 LinkLabel.Link linkA = new LinkLabel.Link (0, 7);
\r
217 Assert.AreEqual (0, links1.Add (linkA), "#A1");
\r
218 Assert.AreEqual (1, links1.Count, "#A2");
\r
219 Assert.AreEqual (1, links2.Count, "#A3");
\r
220 Assert.IsTrue (links1.LinksAdded, "#A4");
\r
221 Assert.IsFalse (links2.LinksAdded, "#A5");
\r
222 Assert.AreSame (linkA, links1 [0], "#A6");
\r
223 Assert.AreSame (linkA, links2 [0], "#A7");
\r
225 LinkLabel.Link linkB = new LinkLabel.Link (8, 7);
\r
226 Assert.AreEqual (1, links1.Add (linkB), "#B1");
\r
227 Assert.AreEqual (2, links1.Count, "#B2");
\r
228 Assert.AreEqual (2, links2.Count, "#B3");
\r
229 Assert.IsTrue (links1.LinksAdded, "#B4");
\r
230 Assert.IsFalse (links2.LinksAdded, "#B5");
\r
231 Assert.AreSame (linkA, links1 [0], "#B6");
\r
232 Assert.AreSame (linkA, links2 [0], "#B7");
\r
233 Assert.AreSame (linkB, links1 [1], "#B8");
\r
234 Assert.AreSame (linkB, links2 [1], "#B9");
\r
236 LinkLabel.LinkCollection links3 = new LinkLabel.LinkCollection (
\r
238 Assert.AreEqual (2, links3.Count, "#C1");
\r
239 Assert.IsFalse (links3.LinksAdded, "#C2");
\r
240 Assert.AreSame (linkA, links3 [0], "#C3");
\r
241 Assert.AreSame (linkB, links3 [1], "#C4");
\r
244 [Test] // Add (LinkLabel.Link)
\r
245 public void Add1_Overlap ()
\r
247 LinkLabel l = new LinkLabel ();
\r
248 l.Text = "Managed Windows Forms";
\r
250 LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
\r
253 LinkLabel.Link linkA = new LinkLabel.Link (0, 7);
\r
255 Assert.AreEqual (1, links.Count, "#A1");
\r
256 Assert.IsTrue (links.LinksAdded, "#A2");
\r
257 Assert.AreSame (linkA, links [0], "#A3");
\r
259 LinkLabel.Link linkB = new LinkLabel.Link (5, 4);
\r
262 Assert.Fail ("#B1");
\r
263 } catch (InvalidOperationException ex) {
\r
264 // Overlapping link regions
\r
265 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
\r
266 Assert.IsNull (ex.InnerException, "#B3");
\r
267 Assert.IsNotNull (ex.Message, "#B4");
\r
270 Assert.AreEqual (2, links.Count, "#B5");
\r
271 Assert.IsTrue (links.LinksAdded, "#B6");
\r
272 Assert.AreSame (linkA, links [0], "#B7");
\r
273 Assert.AreSame (linkB, links [1], "#B8");
\r
274 Assert.AreEqual (0, linkA.Start, "#B9");
\r
275 Assert.AreEqual (7, linkA.Length, "#B10");
\r
276 Assert.AreEqual (5, linkB.Start, "#B11");
\r
277 Assert.AreEqual (4, linkB.Length, "#B12");
\r
279 LinkLabel.Link linkC = new LinkLabel.Link (14, 3);
\r
282 Assert.Fail ("#C1");
\r
283 } catch (InvalidOperationException ex) {
\r
284 // Overlapping link regions
\r
285 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
\r
286 Assert.IsNull (ex.InnerException, "#C3");
\r
287 Assert.IsNotNull (ex.Message, "#C4");
\r
290 Assert.AreEqual (3, links.Count, "#C5");
\r
291 Assert.IsTrue (links.LinksAdded, "#C6");
\r
292 Assert.AreSame (linkA, links [0], "#C7");
\r
293 Assert.AreSame (linkB, links [1], "#C8");
\r
294 Assert.AreSame (linkC, links [2], "#C9");
\r
295 Assert.AreEqual (0, linkA.Start, "#C10");
\r
296 Assert.AreEqual (7, linkA.Length, "#C11");
\r
297 Assert.AreEqual (5, linkB.Start, "#C12");
\r
298 Assert.AreEqual (4, linkB.Length, "#C13");
\r
299 Assert.AreEqual (14, linkC.Start, "#C14");
\r
300 Assert.AreEqual (3, linkC.Length, "#C15");
\r
303 [Test] // Add (LinkLabel.Link)
\r
304 public void Add1_Value_Null ()
\r
306 LinkLabel l = new LinkLabel ();
\r
307 l.Text = "Managed Windows Forms";
\r
309 LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
\r
312 links.Add ((LinkLabel.Link) null);
\r
313 Assert.Fail ("#1");
\r
314 } catch (NullReferenceException) {
\r
319 [Test] // Add (int, int)
\r
320 public void Add2 ()
\r
322 LinkLabel l = new LinkLabel ();
\r
323 l.Text = "Managed Windows Forms";
\r
325 LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
\r
327 LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
\r
330 LinkLabel.Link linkA = links1.Add (0, 7);
\r
331 Assert.AreEqual (1, links1.Count, "#A1");
\r
332 Assert.AreEqual (1, links2.Count, "#A2");
\r
334 Assert.IsTrue (links1.LinksAdded, "#A3");
\r
335 Assert.IsFalse (links2.LinksAdded, "#A4");
\r
337 Assert.AreSame (linkA, links1 [0], "#A5");
\r
338 Assert.AreSame (linkA, links2 [0], "#A6");
\r
340 LinkLabel.Link linkB = links1.Add (8, 7);
\r
341 Assert.AreEqual (2, links1.Count, "#B1");
\r
342 Assert.AreEqual (2, links2.Count, "#B2");
\r
344 Assert.IsTrue (links1.LinksAdded, "#B3");
\r
345 Assert.IsFalse (links2.LinksAdded, "#B4");
\r
347 Assert.AreSame (linkA, links1 [0], "#B5");
\r
348 Assert.AreSame (linkA, links2 [0], "#B6");
\r
349 Assert.AreSame (linkB, links1 [1], "#B7");
\r
350 Assert.AreSame (linkB, links2 [1], "#B8");
\r
352 LinkLabel.LinkCollection links3 = new LinkLabel.LinkCollection (
\r
354 Assert.AreEqual (2, links3.Count, "#C1");
\r
356 Assert.IsFalse (links3.LinksAdded, "#C2");
\r
358 Assert.AreSame (linkA, links3 [0], "#C3");
\r
359 Assert.AreSame (linkB, links3 [1], "#C4");
\r
362 [Test] // Add (int, int)
\r
363 public void Add2_Overlap ()
\r
365 LinkLabel l = new LinkLabel ();
\r
366 l.Text = "Managed Windows Forms";
\r
368 LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
\r
371 LinkLabel.Link linkA = links.Add (0, 7);
\r
372 Assert.AreEqual (1, links.Count, "#A1");
\r
374 Assert.IsTrue (links.LinksAdded, "#A2");
\r
376 Assert.AreSame (linkA, links [0], "#A3");
\r
380 Assert.Fail ("#B1");
\r
381 } catch (InvalidOperationException ex) {
\r
382 // Overlapping link regions
\r
383 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
\r
384 Assert.IsNull (ex.InnerException, "#B3");
\r
385 Assert.IsNotNull (ex.Message, "#B4");
\r
388 Assert.AreEqual (2, links.Count, "#B5");
\r
390 Assert.IsTrue (links.LinksAdded, "#B6");
\r
392 Assert.AreSame (linkA, links [0], "#B7");
\r
393 Assert.IsNotNull (links [1], "#B8");
\r
394 Assert.AreEqual (0, linkA.Start, "#B9");
\r
395 Assert.AreEqual (7, linkA.Length, "#B10");
\r
396 Assert.AreEqual (5, links [1].Start, "#B11");
\r
397 Assert.AreEqual (4, links [1].Length, "#B12");
\r
401 Assert.Fail ("#C1");
\r
402 } catch (InvalidOperationException ex) {
\r
403 // Overlapping link regions
\r
404 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
\r
405 Assert.IsNull (ex.InnerException, "#C3");
\r
406 Assert.IsNotNull (ex.Message, "#C4");
\r
409 Assert.AreEqual (3, links.Count, "#C5");
\r
411 Assert.IsTrue (links.LinksAdded, "#C6");
\r
413 Assert.AreSame (linkA, links [0], "#C7");
\r
414 Assert.IsNotNull (links [1], "#C8");
\r
415 Assert.IsNotNull (links [2], "#C9");
\r
416 Assert.AreEqual (0, linkA.Start, "#C10");
\r
417 Assert.AreEqual (7, linkA.Length, "#C11");
\r
418 Assert.AreEqual (5, links [1].Start, "#C12");
\r
419 Assert.AreEqual (4, links [1].Length, "#C13");
\r
420 Assert.AreEqual (14, links [2].Start, "#C14");
\r
421 Assert.AreEqual (3, links [2].Length, "#C15");
\r