Fix problems with overlong directory names: phase #1
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ListViewEventTest.cs
1 //
2 // ListViewEventTest.cs: Test cases for ListView events.
3 //
4 // Author:
5 //   Ritvik Mayank (mritvik@novell.com)
6 //
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
8 //
9
10 using System;
11 using NUnit.Framework;
12 using System.Windows.Forms;
13 using System.Drawing;
14 using System.Collections;
15
16 namespace MonoTests.System.Windows.Forms
17 {
18         [TestFixture]
19         [Ignore ("Needs Manual Intervention")]
20         public class LabelEditEvent
21         {
22                 static bool eventhandled = false;
23                 public void LabelEdit_EventHandler (object sender,LabelEditEventArgs e)
24                 {
25                         eventhandled = true;
26                 }
27
28                 [Test]
29                 public void AfterLabelEditTest ()
30                 {
31                         Form myform = new Form ();
32                         myform.ShowInTaskbar = false;
33                         ListView mylistview = new ListView ();
34                         mylistview.LabelEdit = true ;
35                         mylistview.AfterLabelEdit += new LabelEditEventHandler (LabelEdit_EventHandler);
36                         mylistview.View = View.Details;
37                         mylistview.SetBounds (10, 10, 200, 200, BoundsSpecified.All);
38                         mylistview.Columns.Add ("A", -2, HorizontalAlignment.Center);
39                         mylistview.Columns.Add ("B", -2, HorizontalAlignment.Center);
40                         ListViewItem item1 = new ListViewItem ("A", -1);
41                         mylistview.Items.Add (item1);
42                         myform.Controls.Add (mylistview);
43                         myform.ShowDialog ();
44                         Assert.AreEqual (true, eventhandled, "#A1");
45
46                         myform.Dispose ();
47                 }
48
49                 [Test]
50                 public void BeforeLabelEditTest ()
51                 {
52                         Form myform = new Form ();
53                         myform.ShowInTaskbar = false;
54                         ListView mylistview = new ListView ();
55                         mylistview.LabelEdit = true ;
56                         mylistview.BeforeLabelEdit += new LabelEditEventHandler (LabelEdit_EventHandler);
57                         eventhandled = false;
58                         mylistview.View = View.Details;
59                         mylistview.SetBounds (10, 10, 200, 200, BoundsSpecified.All);
60                         mylistview.Columns.Add ("A", -2, HorizontalAlignment.Center);
61                         mylistview.Columns.Add ("B", -2, HorizontalAlignment.Center);
62                         ListViewItem item1 = new ListViewItem ("A", -1);
63                         mylistview.Items.Add (item1);
64                         myform.Controls.Add (mylistview);
65                         myform.ShowDialog ();
66                         Assert.AreEqual (true, eventhandled, "#A2");
67                         myform.Dispose ();
68                 }
69         }
70
71         [TestFixture]
72         [Ignore ("Needs Manual Intervention")]
73         public class ColumnClickEvent
74         {
75                 static bool eventhandled = false;
76                 public void ColumnClickEventHandler (object sender, ColumnClickEventArgs e)
77                 {
78                         eventhandled = true;
79                 }
80
81                 [Test]
82                 public void ColumnClickTest ()
83                 {
84                         Form myform = new Form ();
85                         myform.ShowInTaskbar = false;
86                         ListView mylistview = new ListView ();
87
88                         mylistview.LabelEdit = true ;
89                         mylistview.ColumnClick += new ColumnClickEventHandler (ColumnClickEventHandler);                
90                         mylistview.View = View.Details;
91                         mylistview.SetBounds (10, 10, 200, 200, BoundsSpecified.All);
92                         mylistview.Columns.Add ("A", -2, HorizontalAlignment.Center);
93                         mylistview.Columns.Add ("B", -2, HorizontalAlignment.Center);
94                         ListViewItem item1 = new ListViewItem ("A", -1);
95                         mylistview.Items.Add (item1);
96                         myform.Controls.Add (mylistview);
97                         myform.ShowDialog ();
98                         mylistview.Sort ();
99                         Assert.AreEqual (true, eventhandled, "#A3");
100                         myform.Dispose ();
101                 }
102         }
103
104         [TestFixture]
105         [Ignore ("Needs Manual Intervention")]
106         public class  MyEvent
107         {
108                 static bool eventhandled = false;
109                 public void New_EventHandler (object sender, EventArgs e)
110                 {
111                         eventhandled = true;
112                 }
113
114                 [Test]
115                 public void ItemActivateTest ()
116                 {
117                         Form myform = new Form ();
118                         myform.ShowInTaskbar = false;
119                         ListView mylistview = new ListView ();
120                         mylistview.Activation = ItemActivation.OneClick;
121                         mylistview.LabelEdit = true ;
122                         mylistview.ItemActivate += new EventHandler (New_EventHandler);         
123                         mylistview.View = View.Details;
124                         mylistview.SetBounds (10, 10, 200, 200, BoundsSpecified.All);
125                         mylistview.Columns.Add ("A", -2, HorizontalAlignment.Center);
126                         mylistview.Columns.Add ("B", -2, HorizontalAlignment.Center);
127                         ListViewItem item1 = new ListViewItem ("A", -1);
128                         mylistview.Items.Add (item1);
129                         myform.Controls.Add (mylistview);
130                         myform.ShowDialog ();
131                         Assert.AreEqual (true, eventhandled, "#A4");
132                         myform.Dispose ();
133                 }
134
135                 [Test]
136                 public void SelectedIndexChangedTest ()
137                 {
138                         Form myform = new Form ();
139                         myform.ShowInTaskbar = false;
140                         ListView mylistview = new ListView ();
141                         mylistview.LabelEdit = true ;
142                         mylistview.SelectedIndexChanged += new EventHandler (New_EventHandler);         
143                         eventhandled = false;
144                         mylistview.View = View.Details;
145                         mylistview.SetBounds (10, 10, 200, 200, BoundsSpecified.All);
146                         mylistview.Columns.Add ("A", -2, HorizontalAlignment.Center);
147                         mylistview.Columns.Add ("B", -2, HorizontalAlignment.Center);
148                         ListViewItem item1 = new ListViewItem ("A", -1);
149                         mylistview.Items.Add (item1);
150                         myform.Controls.Add (mylistview);
151                         myform.ShowDialog ();
152                         Assert.AreEqual (true, eventhandled, "#A5");
153                         myform.Dispose ();
154                 }
155         }
156
157         [TestFixture]
158         [Ignore ("Needs Manual Intervention")]
159         public class ItemCheckEvent
160         {
161                 static bool eventhandled = false;
162                 public void ItemCheckEventHandler (object sender, ItemCheckEventArgs e)
163
164                 {
165                         eventhandled = true;
166                 }
167
168                 [Test]
169                 public void ItemCheckTest ()
170                 {
171                         Form myform = new Form ();
172                         myform.ShowInTaskbar = false;
173                         ListView mylistview = new ListView ();
174                         mylistview.CheckBoxes = true;
175                         mylistview.LabelEdit = true ;
176                         mylistview.ItemCheck += new ItemCheckEventHandler (ItemCheckEventHandler);              
177                         mylistview.View = View.Details;
178                         mylistview.SetBounds (10, 10, 200, 200, BoundsSpecified.All);
179                         mylistview.Columns.Add ("A", -2, HorizontalAlignment.Center);
180                         mylistview.Columns.Add ("B", -2, HorizontalAlignment.Center);
181                         ListViewItem item1 = new ListViewItem ("A", -1);
182                         mylistview.Items.Add (item1);
183                         myform.Controls.Add (mylistview);
184                         myform.ShowDialog ();
185                         mylistview.Visible = true;
186                         Assert.AreEqual (true, eventhandled, "#A6");
187                         myform.Dispose ();
188                 }
189         }
190
191         [TestFixture]
192         [Ignore ("Needs Manual Intervention")]
193         public class ItemDragEvent
194         {
195                 static bool eventhandled = false;
196                 public void ItemDragEventHandler (object sender, ItemDragEventArgs e)
197
198                 {
199                         eventhandled = true;
200                 }
201
202                 [Test]
203                 public void ItemDragTest ()
204                 {
205                         Form myform = new Form ();
206                         myform.ShowInTaskbar = false;
207                         ListView mylistview = new ListView ();
208                         mylistview.ItemDrag += new ItemDragEventHandler (ItemDragEventHandler);
209                         mylistview.View = View.Details;
210                         mylistview.SetBounds (10, 10, 200, 200, BoundsSpecified.All);
211                         mylistview.Columns.Add ("A", -2, HorizontalAlignment.Center);
212                         mylistview.Columns.Add ("B", -2, HorizontalAlignment.Center);
213                         ListViewItem item1 = new ListViewItem ("A", -1);
214                         mylistview.Items.Add (item1);
215                         myform.Controls.Add (mylistview);
216                         myform.ShowDialog ();
217                         mylistview.Visible = true;
218                         mylistview.DoDragDrop (mylistview.SelectedItems, DragDropEffects.Link);
219                         Assert.AreEqual (true, eventhandled, "#A7");
220                         myform.Dispose ();
221                 }
222         }
223
224         [TestFixture]
225         public class ListViewSelectedIndexChangedEvent
226         {
227                 int selectedIndexChanged;
228
229                 public void ListView_SelectedIndexChanged (object sender, EventArgs e)
230                 {
231                         selectedIndexChanged++;
232                 }
233
234                 [SetUp]
235                 public void SetUp ()
236                 {
237                         selectedIndexChanged = 0;
238                 }
239
240                 [Test] // bug #79849
241                 public void SelectBeforeCreationOfHandle ()
242                 {
243                         Form form = new Form ();
244                         form.ShowInTaskbar = false;
245
246                         ListView lvw = new ListView ();
247                         lvw.SelectedIndexChanged += new EventHandler (ListView_SelectedIndexChanged);
248                         lvw.View = View.Details;
249                         ListViewItem itemA = new ListViewItem ("A");
250                         lvw.Items.Add (itemA);
251                         Assert.AreEqual (0, selectedIndexChanged, "#A1");
252                         itemA.Selected = true;
253                         Assert.AreEqual (0, selectedIndexChanged, "A2");
254
255                         ListViewItem itemB = new ListViewItem ("B");
256                         lvw.Items.Add (itemB);
257                         Assert.AreEqual (0, selectedIndexChanged, "#B1");
258                         itemB.Selected = true;
259                         Assert.AreEqual (0, selectedIndexChanged, "B2");
260
261                         form.Controls.Add (lvw);
262                         Assert.AreEqual (0, selectedIndexChanged, "#C1");
263                         form.Show ();
264                         Assert.AreEqual (2, selectedIndexChanged, "#C2");
265                         form.Dispose ();
266                 }
267
268                 [Test]
269                 public void RemoveSelectedItem ()
270                 {
271                         Form form = new Form ();
272                         form.ShowInTaskbar = false;
273
274                         ListView lvw = new ListView ();
275                         lvw.SelectedIndexChanged += new EventHandler (ListView_SelectedIndexChanged);
276                         lvw.View = View.Details;
277                         ListViewItem itemA = new ListViewItem ("A");
278                         lvw.Items.Add (itemA);
279                         Assert.AreEqual (0, selectedIndexChanged, "#A1");
280                         itemA.Selected = true;
281                         Assert.AreEqual (0, selectedIndexChanged, "A2");
282
283                         ListViewItem itemB = new ListViewItem ("B");
284                         lvw.Items.Add (itemB);
285                         Assert.AreEqual (0, selectedIndexChanged, "#B1");
286                         itemB.Selected = true;
287                         Assert.AreEqual (0, selectedIndexChanged, "B2");
288                         lvw.Items.Remove (itemB);
289                         Assert.IsTrue (itemB.Selected, "#B3");
290
291                         form.Controls.Add (lvw);
292                         Assert.AreEqual (0, selectedIndexChanged, "#C1");
293                         form.Show ();
294                         Assert.AreEqual (1, selectedIndexChanged, "#C2");
295                         lvw.Items.Remove (itemA);
296                         Assert.AreEqual (2, selectedIndexChanged, "#C3");
297                         Assert.IsTrue (itemA.Selected, "#C4");
298                 }
299
300                 [Test]
301                 public void AddAndSelectItem ()
302                 {
303                         Form form = new Form ();
304                         form.ShowInTaskbar = false;
305
306                         ListView lvw = new ListView ();
307                         lvw.SelectedIndexChanged += new EventHandler (ListView_SelectedIndexChanged);
308                         lvw.View = View.Details;
309                         form.Controls.Add (lvw);
310                         form.Show ();
311
312                         ListViewItem itemA = new ListViewItem ();
313                         lvw.Items.Add (itemA);
314                         Assert.AreEqual (0, selectedIndexChanged, "#A1");
315                         itemA.Selected = true;
316                         Assert.AreEqual (1, selectedIndexChanged, "#A2");
317
318                         ListViewItem itemB = new ListViewItem ();
319                         lvw.Items.Add (itemB);
320                         Assert.AreEqual (1, selectedIndexChanged, "#B1");
321                         itemB.Selected = true;
322                         Assert.AreEqual (2, selectedIndexChanged, "#B2");
323                 }
324         }
325 }