* Makefile.am: Build `docs` after `runtime`, so that it can depend
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ListViewEventTest.cs
index 9294bc2a1689344800d2d512f7a103aa24474875..1af2b3a58c2180cc7e2fe6b6667473536e9de5b9 100644 (file)
@@ -15,9 +15,10 @@ using System.Collections;
 
 namespace MonoTests.System.Windows.Forms
 {
-       [TestFixture, Ignore ("Needs Manual Intervention")]
-       public class ListViewEvent
-       {       
+       [TestFixture]
+       [Ignore ("Needs Manual Intervention")]
+       public class LabelEditEvent
+       {
                static bool eventhandled = false;
                public void LabelEdit_EventHandler (object sender,LabelEditEventArgs e)
                {
@@ -28,6 +29,7 @@ namespace MonoTests.System.Windows.Forms
                public void AfterLabelEditTest ()
                {
                        Form myform = new Form ();
+                       myform.ShowInTaskbar = false;
                        ListView mylistview = new ListView ();
                        mylistview.LabelEdit = true ;
                        mylistview.AfterLabelEdit += new LabelEditEventHandler (LabelEdit_EventHandler);
@@ -40,12 +42,15 @@ namespace MonoTests.System.Windows.Forms
                        myform.Controls.Add (mylistview);
                        myform.ShowDialog ();
                        Assert.AreEqual (true, eventhandled, "#A1");
+
+                       myform.Dispose ();
                }
 
                [Test]
                public void BeforeLabelEditTest ()
                {
                        Form myform = new Form ();
+                       myform.ShowInTaskbar = false;
                        ListView mylistview = new ListView ();
                        mylistview.LabelEdit = true ;
                        mylistview.BeforeLabelEdit += new LabelEditEventHandler (LabelEdit_EventHandler);
@@ -59,13 +64,14 @@ namespace MonoTests.System.Windows.Forms
                        myform.Controls.Add (mylistview);
                        myform.ShowDialog ();
                        Assert.AreEqual (true, eventhandled, "#A2");
+                       myform.Dispose ();
                }
        }
 
-       [TestFixture, Ignore ("Needs Manual Intervention")]
-
+       [TestFixture]
+       [Ignore ("Needs Manual Intervention")]
        public class ColumnClickEvent
-       {       
+       {
                static bool eventhandled = false;
                public void ColumnClickEventHandler (object sender, ColumnClickEventArgs e)
                {
@@ -76,6 +82,7 @@ namespace MonoTests.System.Windows.Forms
                public void ColumnClickTest ()
                {
                        Form myform = new Form ();
+                       myform.ShowInTaskbar = false;
                        ListView mylistview = new ListView ();
 
                        mylistview.LabelEdit = true ;
@@ -90,13 +97,14 @@ namespace MonoTests.System.Windows.Forms
                        myform.ShowDialog ();
                        mylistview.Sort ();
                        Assert.AreEqual (true, eventhandled, "#A3");
+                       myform.Dispose ();
                }
        }
 
-       [TestFixture, Ignore ("Needs Manual Intervention")]
-
+       [TestFixture]
+       [Ignore ("Needs Manual Intervention")]
        public class  MyEvent
-       {       
+       {
                static bool eventhandled = false;
                public void New_EventHandler (object sender, EventArgs e)
                {
@@ -107,6 +115,7 @@ namespace MonoTests.System.Windows.Forms
                public void ItemActivateTest ()
                {
                        Form myform = new Form ();
+                       myform.ShowInTaskbar = false;
                        ListView mylistview = new ListView ();
                        mylistview.Activation = ItemActivation.OneClick;
                        mylistview.LabelEdit = true ;
@@ -120,12 +129,14 @@ namespace MonoTests.System.Windows.Forms
                        myform.Controls.Add (mylistview);
                        myform.ShowDialog ();
                        Assert.AreEqual (true, eventhandled, "#A4");
+                       myform.Dispose ();
                }
 
                [Test]
                public void SelectedIndexChangedTest ()
                {
                        Form myform = new Form ();
+                       myform.ShowInTaskbar = false;
                        ListView mylistview = new ListView ();
                        mylistview.LabelEdit = true ;
                        mylistview.SelectedIndexChanged += new EventHandler (New_EventHandler);         
@@ -139,13 +150,14 @@ namespace MonoTests.System.Windows.Forms
                        myform.Controls.Add (mylistview);
                        myform.ShowDialog ();
                        Assert.AreEqual (true, eventhandled, "#A5");
+                       myform.Dispose ();
                }
        }
 
-       [TestFixture, Ignore ("Needs Manual Intervention")]
-
+       [TestFixture]
+       [Ignore ("Needs Manual Intervention")]
        public class ItemCheckEvent
-       {       
+       {
                static bool eventhandled = false;
                public void ItemCheckEventHandler (object sender, ItemCheckEventArgs e)
 
@@ -157,6 +169,7 @@ namespace MonoTests.System.Windows.Forms
                public void ItemCheckTest ()
                {
                        Form myform = new Form ();
+                       myform.ShowInTaskbar = false;
                        ListView mylistview = new ListView ();
                        mylistview.CheckBoxes = true;
                        mylistview.LabelEdit = true ;
@@ -171,14 +184,14 @@ namespace MonoTests.System.Windows.Forms
                        myform.ShowDialog ();
                        mylistview.Visible = true;
                        Assert.AreEqual (true, eventhandled, "#A6");
+                       myform.Dispose ();
                }
        }
 
-
-       [TestFixture, Ignore ("Needs Manual Intervention")]
-
+       [TestFixture]
+       [Ignore ("Needs Manual Intervention")]
        public class ItemDragEvent
-       {       
+       {
                static bool eventhandled = false;
                public void ItemDragEventHandler (object sender, ItemDragEventArgs e)
 
@@ -190,6 +203,7 @@ namespace MonoTests.System.Windows.Forms
                public void ItemDragTest ()
                {
                        Form myform = new Form ();
+                       myform.ShowInTaskbar = false;
                        ListView mylistview = new ListView ();
                        mylistview.ItemDrag += new ItemDragEventHandler (ItemDragEventHandler);
                        mylistview.View = View.Details;
@@ -203,6 +217,113 @@ namespace MonoTests.System.Windows.Forms
                        mylistview.Visible = true;
                        mylistview.DoDragDrop (mylistview.SelectedItems, DragDropEffects.Link);
                        Assert.AreEqual (true, eventhandled, "#A7");
+                       myform.Dispose ();
+               }
+       }
+
+       [TestFixture]
+       public class ListViewSelectedIndexChangedEvent
+       {
+               int selectedIndexChanged;
+
+               public void ListView_SelectedIndexChanged (object sender, EventArgs e)
+               {
+                       selectedIndexChanged++;
+               }
+
+               [SetUp]
+               public void SetUp ()
+               {
+                       selectedIndexChanged = 0;
+               }
+
+               [Test] // bug #79849
+               public void SelectBeforeCreationOfHandle ()
+               {
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+
+                       ListView lvw = new ListView ();
+                       lvw.SelectedIndexChanged += new EventHandler (ListView_SelectedIndexChanged);
+                       lvw.View = View.Details;
+                       ListViewItem itemA = new ListViewItem ("A");
+                       lvw.Items.Add (itemA);
+                       Assert.AreEqual (0, selectedIndexChanged, "#A1");
+                       itemA.Selected = true;
+                       Assert.AreEqual (0, selectedIndexChanged, "A2");
+
+                       ListViewItem itemB = new ListViewItem ("B");
+                       lvw.Items.Add (itemB);
+                       Assert.AreEqual (0, selectedIndexChanged, "#B1");
+                       itemB.Selected = true;
+                       Assert.AreEqual (0, selectedIndexChanged, "B2");
+
+                       form.Controls.Add (lvw);
+                       Assert.AreEqual (0, selectedIndexChanged, "#C1");
+                       form.Show ();
+                       Assert.AreEqual (2, selectedIndexChanged, "#C2");
+                       form.Dispose ();
+               }
+
+               [Test]
+               public void RemoveSelectedItem ()
+               {
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+
+                       ListView lvw = new ListView ();
+                       lvw.SelectedIndexChanged += new EventHandler (ListView_SelectedIndexChanged);
+                       lvw.View = View.Details;
+                       ListViewItem itemA = new ListViewItem ("A");
+                       lvw.Items.Add (itemA);
+                       Assert.AreEqual (0, selectedIndexChanged, "#A1");
+                       itemA.Selected = true;
+                       Assert.AreEqual (0, selectedIndexChanged, "A2");
+
+                       ListViewItem itemB = new ListViewItem ("B");
+                       lvw.Items.Add (itemB);
+                       Assert.AreEqual (0, selectedIndexChanged, "#B1");
+                       itemB.Selected = true;
+                       Assert.AreEqual (0, selectedIndexChanged, "B2");
+                       lvw.Items.Remove (itemB);
+                       Assert.IsTrue (itemB.Selected, "#B3");
+
+                       form.Controls.Add (lvw);
+                       Assert.AreEqual (0, selectedIndexChanged, "#C1");
+                       form.Show ();
+                       Assert.AreEqual (1, selectedIndexChanged, "#C2");
+                       lvw.Items.Remove (itemA);
+                       Assert.AreEqual (2, selectedIndexChanged, "#C3");
+                       Assert.IsTrue (itemA.Selected, "#C4");
+                       
+                       form.Close ();
+               }
+
+               [Test]
+               public void AddAndSelectItem ()
+               {
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+
+                       ListView lvw = new ListView ();
+                       lvw.SelectedIndexChanged += new EventHandler (ListView_SelectedIndexChanged);
+                       lvw.View = View.Details;
+                       form.Controls.Add (lvw);
+                       form.Show ();
+
+                       ListViewItem itemA = new ListViewItem ();
+                       lvw.Items.Add (itemA);
+                       Assert.AreEqual (0, selectedIndexChanged, "#A1");
+                       itemA.Selected = true;
+                       Assert.AreEqual (1, selectedIndexChanged, "#A2");
+
+                       ListViewItem itemB = new ListViewItem ();
+                       lvw.Items.Add (itemB);
+                       Assert.AreEqual (1, selectedIndexChanged, "#B1");
+                       itemB.Selected = true;
+                       Assert.AreEqual (2, selectedIndexChanged, "#B2");
+                       
+                       form.Close ();
                }
        }
 }