* CheckedListBox.cs: Fixed SelectionMode to match MS.
authorGert Driesen <drieseng@users.sourceforge.net>
Tue, 2 Jan 2007 14:37:40 +0000 (14:37 -0000)
committerGert Driesen <drieseng@users.sourceforge.net>
Tue, 2 Jan 2007 14:37:40 +0000 (14:37 -0000)
* ListControl.cs: Implemented AllowSelection property. Removed extra
tabs.
* ListBox.cs: Implemented AllowSelection property.
* ListControlTest.cs: Added test for AllowSelection.
* UpDownTest.cs: MockItem is now nested class.
* ListBoxTest.cs: Added test for AllowSelection.
* CheckedListBoxTest.cs: Added tests for DisplayMember, GetItemText,
SelectionMode, Text and ValueMember.

svn path=/trunk/mcs/; revision=70364

mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListControl.cs
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/CheckedListBoxTest.cs
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ListBoxTest.cs
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ListControlTest.cs
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/UpDownTest.cs

index a246d12913187a73245f0c2c9182d9a968e3a4d4..89f536406e6633e659549c399e4f7773965da50a 100644 (file)
@@ -1,3 +1,10 @@
+2007-01-02  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * CheckedListBox.cs: Fixed SelectionMode to match MS.
+       * ListControl.cs: Implemented AllowSelection property. Removed extra
+       tabs.
+       * ListBox.cs: Implemented AllowSelection property.
+
 2007-01-02  Everaldo Canuto  <everaldo@simios.org>
 
        * MenuItem.cs: In MdiWindowClickHandler uses sender instead of
index b95d10139d1992561bc596352ff51f9c48e336a0..246b539264bc1e9f4b7f751bd4c09de7c06590e7 100644 (file)
@@ -167,8 +167,11 @@ namespace System.Windows.Forms
                public override SelectionMode SelectionMode {
                        get { return base.SelectionMode; }
                        set {
+                               if (!Enum.IsDefined (typeof (SelectionMode), value))
+                                       throw new InvalidEnumArgumentException ("value", (int) value, typeof (SelectionMode));
+
                                if (value == SelectionMode.MultiSimple || value == SelectionMode.MultiExtended)
-                                       throw new InvalidEnumArgumentException ("Multi selection modes not supported");
+                                       throw new ArgumentException ("Multi selection not supported on CheckedListBox");
 
                                base.SelectionMode = value;
                        }
index 9b9a9b1b2e6bd7ed04ce79e55d1b15ca1ab49143..8c052356af206b804a48000303676211cc11fee0 100644 (file)
@@ -596,6 +596,14 @@ namespace System.Windows.Forms
                        }
                }
 
+#if NET_2_0
+               protected override bool AllowSelection {
+                       get {
+                               return SelectionMode != SelectionMode.None;
+                       }
+               }
+#endif
+
                #endregion Public Properties
 
                #region Private Properties
index 27958e0387df569412d32f62466a3e5729bb1246..41fa99c5449d2dcb37f4ad4ec9b2ce7573306d2e 100644 (file)
@@ -132,7 +132,7 @@ namespace System.Windows.Forms
                [TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter, " + Consts.AssemblySystem_Design)]
                public string DisplayMember {
                        get { 
-                               return display_member;                          
+                               return display_member;
                        }
                        set {
                                if (value == null)
@@ -143,7 +143,7 @@ namespace System.Windows.Forms
                                }
 
                                display_member = value;
-                               ConnectToDataSource ();                         
+                               ConnectToDataSource ();
                                OnDisplayMemberChanged (EventArgs.Empty);
                        }
                }
@@ -207,7 +207,7 @@ namespace System.Windows.Forms
                                value_member = new_value;
                                
                                if (display_member == string.Empty) {
-                                       DisplayMember = value_member.BindingMember;                                     
+                                       DisplayMember = value_member.BindingMember;
                                }
                                
                                ConnectToDataSource ();
@@ -215,6 +215,13 @@ namespace System.Windows.Forms
                        }
                }
 
+#if NET_2_0
+               protected virtual
+#endif
+               bool AllowSelection {
+                       get { return true; }
+               }
+
                #endregion Public Properties
 
                #region Public Methods
@@ -236,7 +243,7 @@ namespace System.Windows.Forms
 
                        if (data_manager != null) {
                                PropertyDescriptorCollection col = data_manager.GetItemProperties ();
-                               prop = col.Find (field, true);                          
+                               prop = col.Find (field, true);
                        }
                        
                        if (prop == null)
@@ -254,7 +261,7 @@ namespace System.Windows.Forms
                                }
                        }
                                                                
-                       return item.ToString ();                        
+                       return item.ToString ();
                }
 
                protected CurrencyManager DataManager {
@@ -290,7 +297,8 @@ namespace System.Windows.Forms
 
                        if (DataManager != null) {
                                SetItemsCore (DataManager.List);
-                               SelectedIndex = DataManager.Position;
+                               if (AllowSelection)
+                                       SelectedIndex = DataManager.Position;
                        }
                }
 
@@ -377,11 +385,12 @@ namespace System.Windows.Forms
                }
 
                private void OnPositionChanged (object sender, EventArgs e)
-               {                       
-                       SelectedIndex = data_manager.Position;
+               {
+                       if (AllowSelection)
+                               SelectedIndex = data_manager.Position;
                }
 
-               #endregion Private Methods      
+               #endregion Private Methods
        }
 
 }
index 1a302011acf36a8cc59f5d8e0f4969129a16193c..851e094fab2c4cc8e019ae5ae427c68d9d79cd75 100644 (file)
@@ -1,3 +1,11 @@
+2007-01-02  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * ListControlTest.cs: Added test for AllowSelection.
+       * UpDownTest.cs: MockItem is now nested class.
+       * ListBoxTest.cs: Added test for AllowSelection.
+       * CheckedListBoxTest.cs: Added tests for DisplayMember, GetItemText,
+       SelectionMode, Text and ValueMember.
+
 2007-01-01  Gert Driesen  <drieseng@users.sourceforge.net>
 
        * ToolBarTest.cs: Enabled test for bug #80416.
index 3e519ed74f64affcd4a832b62b0118c1b6581213..6225ac4d186e8cd7a31be9deb1587f9c54b8ef50 100644 (file)
@@ -3,13 +3,16 @@
 //
 // Authors:
 //             Ritvik Mayank (mritvik@novell.com)
+//             Gert Driesen (drieseng@users.sourceforge.net)
 //
 
 using System;
 using System.Collections;
-using System.Windows.Forms;
+using System.ComponentModel;
 using System.Drawing;
 using System.Reflection;
+using System.Windows.Forms;
+
 using NUnit.Framework;
 
 namespace MonoTests.System.Windows.Forms
@@ -56,6 +59,114 @@ namespace MonoTests.System.Windows.Forms
                        myform.Dispose ();
                }
 
+               [Test]
+               [NUnit.Framework.Category ("NotWorking")]
+               public void DisplayMember_HandleCreated ()
+               {
+                       MockItem itemA = new MockItem ("A1", 1);
+                       MockItem itemB = new MockItem ("B2", 2);
+                       MockItem itemC = new MockItem ("C3", 3);
+                       MockItem itemD = new MockItem ("D4", 4);
+                       MockItem itemE = new MockItem ("E5", 5);
+                       MockItem itemF = new MockItem ("F6", 6);
+
+                       CheckedListBox clb = new CheckedListBox ();
+                       clb.Items.Add (itemA, true);
+                       clb.Items.Add (itemC, false);
+                       clb.Items.Add (itemB, true);
+
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+                       form.Controls.Add (clb);
+                       form.Show ();
+
+                       Assert.AreEqual (string.Empty, clb.Text, "#A1");
+                       clb.SelectedIndex = 1;
+                       Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#A2");
+                       clb.DisplayMember = "Text";
+                       Assert.AreEqual ("C3", clb.Text, "#A3");
+                       clb.SelectedIndex = 2;
+                       Assert.AreEqual ("B2", clb.Text, "#A4");
+
+                       clb.Text = "C3";
+                       Assert.AreEqual (1, clb.SelectedIndex, "#B1");
+                       Assert.AreEqual ("C3", clb.Text, "#B2");
+                       clb.Text = "B";
+                       Assert.AreEqual (1, clb.SelectedIndex, "#B3");
+                       Assert.AreEqual ("C3", clb.Text, "#B4");
+
+                       ArrayList itemList = new ArrayList ();
+                       itemList.Add (itemD);
+                       itemList.Add (itemE);
+                       itemList.Add (itemF);
+
+                       clb.DataSource = itemList;
+                       clb.DisplayMember = string.Empty;
+                       clb.SelectedIndex = 1;
+
+                       Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#C1");
+                       clb.DisplayMember = "Text";
+                       Assert.AreEqual ("E5", clb.Text, "#C2");
+                       clb.SelectedIndex = 2;
+                       Assert.AreEqual ("F6", clb.Text, "#C3");
+
+                       clb.Text = "E5";
+                       Assert.AreEqual (1, clb.SelectedIndex, "#D1");
+                       Assert.AreEqual ("E5", clb.Text, "#D2");
+                       clb.Text = "D";
+                       Assert.AreEqual (1, clb.SelectedIndex, "#D3");
+                       Assert.AreEqual ("E5", clb.Text, "#D4");
+
+                       form.Dispose ();
+               }
+
+               [Test]
+               [NUnit.Framework.Category ("NotWorking")]
+               public void DisplayMember_HandleNotCreated ()
+               {
+                       MockItem itemA = new MockItem ("A1", 1);
+                       MockItem itemB = new MockItem ("B2", 2);
+                       MockItem itemC = new MockItem ("C3", 3);
+                       MockItem itemD = new MockItem ("D4", 4);
+                       MockItem itemE = new MockItem ("E5", 5);
+                       MockItem itemF = new MockItem ("F6", 6);
+
+                       CheckedListBox clb = new CheckedListBox ();
+                       clb.Items.Add (itemA, true);
+                       clb.Items.Add (itemC, false);
+                       clb.Items.Add (itemB, true);
+
+                       Assert.AreEqual (string.Empty, clb.Text, "#A1");
+                       clb.SelectedIndex = 1;
+                       Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#A2");
+                       clb.DisplayMember = "Text";
+                       Assert.AreEqual ("C3", clb.Text, "#A3");
+                       clb.SelectedIndex = 2;
+                       Assert.AreEqual ("B2", clb.Text, "#A4");
+
+                       clb.Text = "C3";
+                       Assert.AreEqual (1, clb.SelectedIndex, "#B1");
+                       Assert.AreEqual ("C3", clb.Text, "#B2");
+                       clb.Text = "C";
+                       Assert.AreEqual (1, clb.SelectedIndex, "#B3");
+                       Assert.AreEqual ("C3", clb.Text, "#B4");
+
+                       ArrayList itemList = new ArrayList ();
+                       itemList.Add (itemD);
+                       itemList.Add (itemE);
+                       itemList.Add (itemF);
+
+                       clb.DataSource = itemList;
+                       clb.DisplayMember = string.Empty;
+                       clb.SelectedIndex = 1;
+
+                       Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#C1");
+                       clb.DisplayMember = "Text";
+                       Assert.AreEqual ("C3", clb.Text, "#C2");
+                       clb.SelectedIndex = 2;
+                       Assert.AreEqual ("B2", clb.Text, "#C3");
+               }
+
                [Test]
                public void GetItemCheckedTest ()
                {
@@ -99,7 +210,66 @@ namespace MonoTests.System.Windows.Forms
                        Assert.AreEqual (CheckState.Indeterminate, mychklistbox.GetItemCheckState (1), "#15");
                        Assert.AreEqual (CheckState.Unchecked, mychklistbox.GetItemCheckState (2), "#16");
                        f.Dispose ();
-               }       
+               }
+
+               [Test]
+               [NUnit.Framework.Category ("NotWorking")]
+               public void GetItemText ()
+               {
+                       MockItem itemA = new MockItem ("A", 1);
+                       MockItem itemB = new MockItem ("B", 2);
+
+                       CheckedListBox clb = new CheckedListBox ();
+                       clb.DisplayMember = "Text";
+                       clb.Items.Add (itemA, true);
+
+                       Assert.AreEqual ("A", clb.GetItemText (itemA), "#A1");
+                       Assert.AreEqual ("B", clb.GetItemText (itemB), "#A2");
+
+                       clb.DisplayMember = string.Empty;
+
+                       Assert.AreEqual (itemA.GetType ().FullName, clb.GetItemText (itemA), "#B1");
+                       Assert.AreEqual (itemB.GetType ().FullName, clb.GetItemText (itemB), "#B2");
+               }
+
+               [Test]
+               public void SelectionMode_Invalid ()
+               {
+                       CheckedListBox clb = new CheckedListBox ();
+
+                       try {
+                               clb.SelectionMode = SelectionMode.MultiSimple;
+                               Assert.Fail ("#A1");
+                       } catch (ArgumentException ex) {
+                               // Multi selection not supported on CheckedListBox
+                               Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+                               Assert.IsNotNull (ex.Message, "#A3");
+                               Assert.IsNull (ex.ParamName, "#A4");
+                               Assert.IsNull (ex.InnerException, "#A5");
+                       }
+
+                       try {
+                               clb.SelectionMode = SelectionMode.MultiExtended;
+                               Assert.Fail ("#B1");
+                       } catch (ArgumentException ex) {
+                               // Multi selection not supported on CheckedListBox
+                               Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+                               Assert.IsNotNull (ex.Message, "#B3");
+                               Assert.IsNull (ex.ParamName, "#B4");
+                               Assert.IsNull (ex.InnerException, "#B5");
+                       }
+
+                       try {
+                               clb.SelectionMode = (SelectionMode) 666;
+                               Assert.Fail ("#C1");
+                       } catch (InvalidEnumArgumentException ex) {
+                               Assert.AreEqual (typeof (InvalidEnumArgumentException), ex.GetType (), "#C2");
+                               Assert.IsNotNull (ex.Message, "#C3");
+                               Assert.IsNotNull (ex.ParamName, "#C4");
+                               Assert.AreEqual ("value", ex.ParamName, "#C5");
+                               Assert.IsNull (ex.InnerException, "#C6");
+                       }
+               }
 
                [Test]
                public void SetItemCheckedTest ()
@@ -138,6 +308,297 @@ namespace MonoTests.System.Windows.Forms
                        Assert.AreEqual (CheckState.Indeterminate, mychklistbox.GetItemCheckState (1), "#20");
                        Assert.AreEqual (CheckState.Unchecked, mychklistbox.GetItemCheckState (2), "#21");
                        myform.Dispose ();
-               }       
+               }
+
+#if NET_2_0
+               // Fails on 1.1 (both MS and Mono) because SelectedIndex is set
+               [Test]
+               public void Text_SelectionMode_None ()
+               {
+                       MockItem itemA = new MockItem ("A1", 1);
+                       MockItem itemB = new MockItem ("B2", 2);
+                       MockItem itemC = new MockItem ("C3", 3);
+                       MockItem itemD = new MockItem ("C3", 4);
+                       MockItem itemE = new MockItem ("", 5);
+                       MockItem itemF = new MockItem (null, 6);
+
+                       ArrayList itemList = new ArrayList ();
+                       itemList.Add (itemA);
+                       itemList.Add (itemC);
+                       itemList.Add (itemB);
+                       itemList.Add (itemD);
+                       itemList.Add (itemE);
+                       itemList.Add (itemF);
+
+                       CheckedListBox clb = new CheckedListBox ();
+                       clb.DisplayMember = "Text";
+                       clb.DataSource = itemList;
+                       clb.SelectionMode = SelectionMode.None;
+
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+                       form.Controls.Add (clb);
+                       form.Show ();
+
+                       Assert.AreEqual (string.Empty, clb.Text, "#A1");
+                       Assert.AreEqual (-1, clb.SelectedIndex, "#A2");
+
+                       clb.Text = "B2";
+                       Assert.AreEqual ("B2", clb.Text, "#B1");
+                       Assert.AreEqual (-1, clb.SelectedIndex, "#B2");
+
+                       clb.Text = "D";
+                       Assert.AreEqual ("D", clb.Text, "#C1");
+                       Assert.AreEqual (-1, clb.SelectedIndex, "#C2");
+
+                       clb.Text = "Doesnotexist";
+                       Assert.AreEqual ("Doesnotexist", clb.Text, "#D1");
+                       Assert.AreEqual (-1, clb.SelectedIndex, "#D2");
+
+                       clb.Text = string.Empty;
+                       Assert.AreEqual (string.Empty, clb.Text, "#E1");
+                       Assert.AreEqual (-1, clb.SelectedIndex, "#E2");
+
+                       clb.Text = null;
+                       Assert.AreEqual (string.Empty, clb.Text, "#F1");
+                       Assert.AreEqual (-1, clb.SelectedIndex, "#F2");
+
+                       form.Dispose ();
+               }
+
+               [Test]
+               public void AllowSelection ()
+               {
+                       MockCheckedListBox clb = new MockCheckedListBox ();
+                       clb.SelectionMode = SelectionMode.None;
+                       Assert.IsFalse (clb.allow_selection, "#1");
+                       clb.SelectionMode = SelectionMode.One;
+                       Assert.IsTrue (clb.allow_selection, "#2");
+               }
+#endif
+
+               [Test]
+               [NUnit.Framework.Category ("NotWorking")]
+               public void Text_SelectionMode_One ()
+               {
+                       MockItem itemA = new MockItem ("A1", 1);
+                       MockItem itemB = new MockItem ("B2", 2);
+                       MockItem itemC = new MockItem ("C3", 3);
+                       MockItem itemD = new MockItem ("C3", 4);
+                       MockItem itemE = new MockItem ("", 5);
+                       MockItem itemF = new MockItem (null, 6);
+
+                       ArrayList itemList = new ArrayList ();
+                       itemList.Add (itemA);
+                       itemList.Add (itemC);
+                       itemList.Add (itemB);
+                       itemList.Add (itemD);
+                       itemList.Add (itemE);
+                       itemList.Add (itemF);
+
+                       CheckedListBox clb = new CheckedListBox ();
+                       clb.DisplayMember = "Text";
+                       clb.DataSource = itemList;
+                       clb.SelectionMode = SelectionMode.One;
+
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+                       form.Controls.Add (clb);
+                       form.Show ();
+
+                       Assert.AreEqual ("A1", clb.Text, "#A1");
+                       Assert.AreEqual (0, clb.SelectedIndex, "#A2");
+
+                       clb.Text = "B2";
+                       Assert.AreEqual ("B2", clb.Text, "#B1");
+                       Assert.AreEqual (2, clb.SelectedIndex, "#B2");
+                       Assert.AreEqual (1, clb.SelectedItems.Count, "#B3");
+                       Assert.AreSame (itemB, clb.SelectedItems [0], "#B4");
+
+                       clb.Text = "D";
+                       Assert.AreEqual ("B2", clb.Text, "#C1");
+                       Assert.AreEqual (2, clb.SelectedIndex, "#C2");
+                       Assert.AreEqual (1, clb.SelectedItems.Count, "#C3");
+                       Assert.AreSame (itemB, clb.SelectedItems [0], "#C4");
+
+                       clb.Text = "Doesnotexist";
+                       Assert.AreEqual ("B2", clb.Text, "#D1");
+                       Assert.AreEqual (2, clb.SelectedIndex, "#D2");
+                       Assert.AreEqual (1, clb.SelectedItems.Count, "#D3");
+                       Assert.AreSame (itemB, clb.SelectedItems [0], "#D4");
+
+                       clb.Text = "C3";
+                       Assert.AreEqual ("C3", clb.Text, "#E1");
+                       Assert.AreEqual (1, clb.SelectedIndex, "#E2");
+                       Assert.AreEqual (1, clb.SelectedItems.Count, "#E3");
+                       Assert.AreSame (itemC, clb.SelectedItems [0], "#E4");
+
+                       clb.Text = string.Empty;
+                       Assert.AreEqual (string.Empty, clb.Text, "#F1");
+                       Assert.AreEqual (4, clb.SelectedIndex, "#F2");
+                       Assert.AreEqual (1, clb.SelectedItems.Count, "#F3");
+                       Assert.AreSame (itemE, clb.SelectedItems [0], "#F4");
+
+                       clb.Text = null;
+                       Assert.AreEqual (string.Empty, clb.Text, "#G1");
+                       Assert.AreEqual (4, clb.SelectedIndex, "#G2");
+                       Assert.AreEqual (1, clb.SelectedItems.Count, "#G3");
+                       Assert.AreSame (itemE, clb.SelectedItems [0], "#G4");
+
+                       clb.SelectedIndex = -1;
+                       Assert.AreEqual ("A1", clb.Text, "#H1");
+                       Assert.AreEqual (0, clb.SelectedIndex, "#H2");
+                       Assert.AreEqual (1, clb.SelectedItems.Count, "#H3");
+                       Assert.AreSame (itemA, clb.SelectedItems [0], "#H4");
+
+                       form.Dispose ();
+               }
+
+               [Test]
+               [NUnit.Framework.Category ("NotWorking")]
+               public void ValueMember_HandleCreated ()
+               {
+                       MockItem itemA = new MockItem ("A", 1);
+                       MockItem itemB = new MockItem ("B", 2);
+                       MockItem itemC = new MockItem ("C", 3);
+                       MockItem itemD = new MockItem ("D", 4);
+                       MockItem itemE = new MockItem ("E", 5);
+
+                       CheckedListBox clb = new CheckedListBox ();
+                       clb.Items.Add (itemA, true);
+                       clb.Items.Add (itemC, false);
+                       clb.Items.Add (itemB, true);
+                       clb.SelectedIndex = 1;
+
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+                       form.Controls.Add (clb);
+                       form.Show ();
+
+                       Assert.AreEqual (string.Empty, clb.ValueMember, "#A1");
+                       Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#A2");
+                       Assert.IsNull (clb.SelectedValue, "#A3");
+
+                       clb.ValueMember = "Value";
+                       Assert.AreEqual ("Value", clb.ValueMember, "#B1");
+                       Assert.AreEqual ("3", clb.Text, "#B2");
+                       Assert.IsNull (clb.SelectedValue, "#B3");
+
+                       clb.DisplayMember = "Text";
+                       Assert.AreEqual ("Value", clb.ValueMember, "#C1");
+                       Assert.AreEqual ("C", clb.Text, "#C2");
+                       Assert.IsNull (clb.SelectedValue, "#C3");
+
+                       ArrayList itemList = new ArrayList ();
+                       itemList.Add (itemD);
+                       itemList.Add (itemE);
+
+                       clb.DataSource = itemList;
+                       clb.ValueMember = string.Empty;
+                       clb.DisplayMember = string.Empty;
+                       clb.SelectedIndex = 1;
+
+                       Assert.AreEqual (string.Empty, clb.ValueMember, "#D1");
+                       Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#D2");
+                       Assert.IsNotNull (clb.SelectedValue, "#D3");
+                       Assert.AreSame (itemE, clb.SelectedValue, "#D4");
+
+                       clb.ValueMember = "Value";
+                       Assert.AreEqual ("Value", clb.ValueMember, "#E1");
+                       Assert.AreEqual ("5", clb.Text, "#E2");
+                       Assert.IsNotNull (clb.SelectedValue, "#E3");
+                       Assert.AreEqual (5, clb.SelectedValue, "#E4");
+
+                       clb.DisplayMember = "Text";
+                       Assert.AreEqual ("Value", clb.ValueMember, "#F1");
+                       Assert.AreEqual ("E", clb.Text, "#F2");
+                       Assert.IsNotNull (clb.SelectedValue, "#F3");
+                       Assert.AreEqual (5, clb.SelectedValue, "#F4");
+
+                       form.Dispose ();
+               }
+
+               [Test]
+               [NUnit.Framework.Category ("NotWorking")]
+               public void ValueMember_HandleNotCreated ()
+               {
+                       MockItem itemA = new MockItem ("A", 1);
+                       MockItem itemB = new MockItem ("B", 2);
+                       MockItem itemC = new MockItem ("C", 3);
+                       MockItem itemD = new MockItem ("D", 4);
+                       MockItem itemE = new MockItem ("E", 5);
+
+                       CheckedListBox clb = new CheckedListBox ();
+                       clb.Items.Add (itemA, true);
+                       clb.Items.Add (itemC, false);
+                       clb.Items.Add (itemB, true);
+                       clb.SelectedIndex = 1;
+
+                       Assert.AreEqual (string.Empty, clb.ValueMember, "#A1");
+                       Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#A2");
+                       Assert.IsNull (clb.SelectedValue, "#A3");
+
+                       clb.ValueMember = "Value";
+                       Assert.AreEqual ("Value", clb.ValueMember, "#B1");
+                       Assert.AreEqual ("3", clb.Text, "#B2");
+                       Assert.IsNull (clb.SelectedValue, "#B3");
+
+                       clb.DisplayMember = "Text";
+                       Assert.AreEqual ("Value", clb.ValueMember, "#C1");
+                       Assert.AreEqual ("C", clb.Text, "#C2");
+                       Assert.IsNull (clb.SelectedValue, "#C3");
+
+                       ArrayList itemList = new ArrayList ();
+                       itemList.Add (itemD);
+                       itemList.Add (itemE);
+
+                       clb.DataSource = itemList;
+                       clb.ValueMember = string.Empty;
+                       clb.DisplayMember = string.Empty;
+                       clb.SelectedIndex = 1;
+
+                       Assert.AreEqual (string.Empty, clb.ValueMember, "#D1");
+                       Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#D2");
+                       Assert.IsNull (clb.SelectedValue, "#D3");
+
+                       clb.ValueMember = "Value";
+                       Assert.AreEqual ("Value", clb.ValueMember, "#E1");
+                       Assert.AreEqual ("3", clb.Text, "#E2");
+                       Assert.IsNull (clb.SelectedValue, "#E3");
+
+                       clb.DisplayMember = "Text";
+                       Assert.AreEqual ("Value", clb.ValueMember, "#F1");
+                       Assert.AreEqual ("C", clb.Text, "#F2");
+                       Assert.IsNull (clb.SelectedValue, "#F3");       
+               }
+
+               public class MockCheckedListBox : CheckedListBox
+               {
+#if NET_2_0
+                       public bool allow_selection {
+                               get { return base.AllowSelection; }
+                       }
+#endif
+               }
+
+               public class MockItem
+               {
+                       public MockItem (string text, int value)
+                       {
+                               _text = text;
+                               _value = value;
+                       }
+
+                       public string Text {
+                               get { return _text; }
+                       }
+
+                       public int Value {
+                               get { return _value; }
+                       }
+
+                       private readonly string _text;
+                       private readonly int _value;
+               }
        }
 }
index c52e35670f43cafa3234e3e7aea2842b7b5a54ea..02de8e1682a63aaca469c574bcc9724988fea976 100644 (file)
@@ -195,6 +195,18 @@ namespace MonoTests.System.Windows.Forms
                        Assert.AreEqual (-1, x, "#203");
                }
 
+#if NET_2_0
+               [Test]
+               public void AllowSelection ()
+               {
+                       MockListBox lb = new MockListBox ();
+                       lb.SelectionMode = SelectionMode.None;
+                       Assert.IsFalse (lb.allow_selection, "#1");
+                       lb.SelectionMode = SelectionMode.One;
+                       Assert.IsTrue (lb.allow_selection, "#2");
+               }
+#endif
+
                //
                // Exceptions
                //
@@ -304,7 +316,14 @@ namespace MonoTests.System.Windows.Forms
                        eventFired = true;
                }
 
-
+               public class MockListBox : ListBox
+               {
+#if NET_2_0
+                       public bool allow_selection {
+                               get { return base.AllowSelection; }
+                       }
+#endif
+               }
        }
 
        [TestFixture]
@@ -395,7 +414,5 @@ namespace MonoTests.System.Windows.Forms
                {
                        col.Add (null);
                }
-
-
        }
 }
index 3a41d5c2e7cbf5d686fb001bc778c5098d8b97c9..fcf488dbc58ed1b299b0c5f57851b0b868a77c0a 100644 (file)
@@ -51,6 +51,15 @@ namespace MonoTests.System.Windows.Forms
                        ListControlChild lc = new ListControlChild ();
                        lc.DataSource = new object ();
                }
+
+#if NET_2_0
+               [Test]
+               public void AllowSelection ()
+               {
+                       ListControlChild lc = new ListControlChild ();
+                       Assert.IsTrue (lc.allow_selection);
+               }
+#endif
        }
 
        public class ListControlChild : ListControl
@@ -63,6 +72,12 @@ namespace MonoTests.System.Windows.Forms
                        }
                }
 
+#if NET_2_0
+               public bool allow_selection {
+                       get { return base.AllowSelection; }
+               }
+#endif
+
                protected override void RefreshItem (int index)
                {
                }
index ba03a038da7396b12c7feef7964d8c2918256fcd..317775857d6522da999cb82c87cbc6ab69345c24 100644 (file)
@@ -1002,24 +1002,24 @@ namespace MonoTests.System.Windows.Forms
                private int selected_item_changed = 0;\r
                private int text_changed = 0;\r
                private int value_changed = 0;\r
-       }\r
 \r
-       public class MockItem\r
-       {\r
-               public MockItem (string text)\r
+               public class MockItem\r
                {\r
-                       _text = text;\r
-               }\r
+                       public MockItem (string text)\r
+                       {\r
+                               _text = text;\r
+                       }\r
 \r
-               public string Text {\r
-                       get { return _text; }\r
-               }\r
+                       public string Text {\r
+                               get { return _text; }\r
+                       }\r
 \r
-               public override string ToString ()\r
-               {\r
-                       return _text;\r
-               }\r
+                       public override string ToString ()\r
+                       {\r
+                               return _text;\r
+                       }\r
 \r
-               private readonly string _text;\r
+                       private readonly string _text;\r
+               }\r
        }\r
 }\r