Author: gert
Date: 2006-04-17 18:30:24 -0400 (Mon, 17 Apr 2006)
New Revision: 59549

Modified:
   trunk/mcs/class/Managed.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TabControl.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources
   trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
   
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TabControlTest.cs
Log:
* TabControlTest.cs: Added test for bug #78121. Marked failing tests 
NotWorking. Set eol-style to native.
* System.Windows.Forms_test.dll.sources: Added TabControlTest.cs.
* TabControl.cs: Avoid ArgumentOutOfRangeException when setting
SelectedIndex to -1. Fixes bug #78121.


Modified: trunk/mcs/class/Managed.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/ChangeLog     2006-04-17 22:10:15 UTC 
(rev 59548)
+++ trunk/mcs/class/Managed.Windows.Forms/ChangeLog     2006-04-17 22:30:24 UTC 
(rev 59549)
@@ -1,3 +1,7 @@
+2006-04-16  Gert Driesen  <[EMAIL PROTECTED]>
+
+       * System.Windows.Forms_test.dll.sources: Added TabControlTest.cs.
+
 2006-03-21  Jackson Harper  <[EMAIL PROTECTED]>
 
        * System.Windows.Forms.dll.resources: Add the keyboard resources.

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2006-04-17 22:10:15 UTC (rev 59548)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2006-04-17 22:30:24 UTC (rev 59549)
@@ -1,3 +1,8 @@
+2006-04-18  Gert Driesen  <[EMAIL PROTECTED]>
+
+       * TabControl.cs: Avoid ArgumentOutOfRangeException when setting
+       SelectedIndex to -1. Fixes bug #78121.
+
 2006-04-17  Jackson Harper  <[EMAIL PROTECTED]>
 
        * Binding.cs: Handle null values for Current and BindingContext.

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TabControl.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TabControl.cs    
2006-04-17 22:10:15 UTC (rev 59548)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TabControl.cs    
2006-04-17 22:30:24 UTC (rev 59549)
@@ -222,17 +222,18 @@
                                        refresh = true;
                                }
 
-                               int le = TabPages [value].TabBounds.Right;
-                               int re = 
ThemeEngine.Current.GetTabControlLeftScrollRect (this).Left;
-
-                               if (-1 != value && show_slider && le > re) {
-                                       int diff = le - re;
-                                       int ind = value - 1;
-                                       while (ind > 0 && diff > 0) {
-                                               diff -= TabPages [ind++].Width;
+                               if (-1 != value) {
+                                       int le = TabPages 
[value].TabBounds.Right;
+                                       int re = 
ThemeEngine.Current.GetTabControlLeftScrollRect (this).Left;
+                                       if (show_slider && le > re) {
+                                               int diff = le - re;
+                                               int ind = value - 1;
+                                               while (ind > 0 && diff > 0) {
+                                                       diff -= TabPages 
[ind++].Width;
+                                               }
+                                               slider_pos = ind - 1;
+                                               refresh = true;
                                        }
-                                       slider_pos = ind - 1;
-                                       refresh = true;
                                }
 
                                if (selected_index != -1) {
@@ -244,9 +245,10 @@
 
                                OnSelectedIndexChanged (EventArgs.Empty);
 
-                               TabPage selected = (TabPage) Controls 
[selected_index];
+                               TabPage selected = null;
 
                                if (selected_index != -1) {
+                                       selected = (TabPage) Controls 
[selected_index];
                                        invalid = Rectangle.Union (invalid, 
GetTabRect (selected_index));
                                        selected.Visible = true;
                                }

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources 
2006-04-17 22:10:15 UTC (rev 59548)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources 
2006-04-17 22:30:24 UTC (rev 59549)
@@ -42,6 +42,7 @@
 System.Windows.Forms/RichTextBoxTest.cs
 System.Windows.Forms/ScrollBarTest.cs
 System.Windows.Forms/StatusBarTest.cs
+System.Windows.Forms/TabControlTest.cs
 System.Windows.Forms/TestImageIndexConverter.cs
 System.Windows.Forms/ToolBarTest.cs
 System.Windows.Forms/ToolTipTest.cs

Modified: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog   
2006-04-17 22:10:15 UTC (rev 59548)
+++ trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog   
2006-04-17 22:30:24 UTC (rev 59549)
@@ -1,3 +1,8 @@
+2006-04-16  Gert Driesen <[EMAIL PROTECTED]>
+
+       * TabControlTest.cs: Added test for bug #78121. Marked failing tests
+       NotWorking. Set eol-style to native.
+
 2006-04-12  Peter Dennis Bartok <[EMAIL PROTECTED]>
 
        * ControlTest.cs: Added backcolor tests related to transparency

Modified: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TabControlTest.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TabControlTest.cs
   2006-04-17 22:10:15 UTC (rev 59548)
+++ 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TabControlTest.cs
   2006-04-17 22:30:24 UTC (rev 59549)
@@ -7,16 +7,16 @@
 // (C) 2005 Novell, Inc. (http://www.novell.com)
 //
 
-using System;
+using System.Drawing;
 using System.Windows.Forms;
-using System.Drawing;
-using System.Reflection;
+
 using NUnit.Framework;
 
 [TestFixture]
 public class TabControlTest
 {
        [Test]
+       [Category ("NotWorking")]
        public void TabControlPropertyTest ()
        {
                Form myForm = new Form ();
@@ -55,7 +55,7 @@
 
                // S
                Assert.AreEqual (-1, myTabControl.SelectedIndex, "#S1");
-                Assert.AreEqual (null, myTabControl.SelectedTab, "#S2");
+               Assert.AreEqual (null, myTabControl.SelectedTab, "#S2");
                Assert.AreEqual (false, myTabControl.ShowToolTips, "#S3");
                Assert.AreEqual (TabSizeMode.Normal, myTabControl.SizeMode, 
"#S4");
 
@@ -65,23 +65,53 @@
        }
 
        [Test]
+       [Category ("NotWorking")]
        public void GetTabRectTest ()
        {
                TabControl myTabControl = new TabControl ();
                TabPage myTabPage = new TabPage();
                myTabControl.Controls.Add(myTabPage);
                myTabPage.TabIndex = 0;
-               Rectangle myTabRect = new Rectangle ();
-               Assert.AreEqual (2, myTabControl.GetTabRect (0).X, "#GetT1");
-               Assert.AreEqual (2, myTabControl.GetTabRect (0).Y, "#GetT2");
-               Assert.AreEqual (42, myTabControl.GetTabRect (0).Width, 
"#GetT3");
-               Assert.AreEqual (18, myTabControl.GetTabRect (0).Height, 
"#GetT4");
-       }               
+               Rectangle myTabRect = myTabControl.GetTabRect (0);
+               Assert.AreEqual (2, myTabRect.X, "#GetT1");
+               Assert.AreEqual (2, myTabRect.Y, "#GetT2");
+               Assert.AreEqual (42, myTabRect.Width, "#GetT3");
+               Assert.AreEqual (18, myTabRect.Height, "#GetT4");
+       }
 
        [Test]
        public void ToStringTest ()
        {
                TabControl myTabControl = new TabControl ();
-               Assert.AreEqual ("System.Windows.Forms.TabControl, 
TabPages.Count: 0", myTabControl.ToString(), "#Str1");
+               Assert.AreEqual ("System.Windows.Forms.TabControl, 
TabPages.Count: 0", myTabControl.ToString(), "#1");
        }
+
+       [Test]
+       public void ClearTabPagesTest ()
+       {
+               // no tab pages
+               TabControl tab = new TabControl ();
+               tab.TabPages.Clear ();
+               Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
+               Assert.AreEqual (0, tab.TabPages.Count, "#A2");
+
+               // single tab page
+               tab.Controls.Add (new TabPage ());
+               Assert.AreEqual (0, tab.SelectedIndex, "#B1");
+               Assert.AreEqual (1, tab.TabPages.Count, "#B2");
+               tab.TabPages.Clear();
+               Assert.AreEqual (-1, tab.SelectedIndex, "#B3");
+               Assert.AreEqual (0, tab.TabPages.Count, "#B4");
+
+               // multiple tab pages
+               tab.Controls.Add (new TabPage ());
+               tab.Controls.Add (new TabPage ());
+               tab.Controls.Add (new TabPage ());
+               Assert.AreEqual (0, tab.SelectedIndex, "#C1");
+               Assert.AreEqual (3, tab.TabPages.Count, "#C2");
+               tab.SelectedIndex = 1;
+               tab.TabPages.Clear ();
+               Assert.AreEqual (-1, tab.SelectedIndex, "#C3");
+               Assert.AreEqual (0, tab.TabPages.Count, "#C4");
+       }
 }


Property changes on: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TabControlTest.cs
___________________________________________________________________
Name: svn:eol-style
   + native

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to