Skip to content

Commit

Permalink
Fix TabControl NREs (#2831)
Browse files Browse the repository at this point in the history
  • Loading branch information
hughbe committed Feb 14, 2020
1 parent eb88615 commit bf22436
Show file tree
Hide file tree
Showing 16 changed files with 89 additions and 26 deletions.
3 changes: 3 additions & 0 deletions src/System.Windows.Forms/src/Resources/SR.resx
Expand Up @@ -5336,6 +5336,9 @@ Stack trace where the illegal operation occurred was:
<data name="TabBaseTabCountDescr" xml:space="preserve">
<value>The number of tabs in the tab strip.</value>
</data>
<data name="TabControlBadControl" xml:space="preserve">
<value>Parameter must be of type TabPage.</value>
</data>
<data name="TabControlDeselectedEventDescr" xml:space="preserve">
<value>Occurs after a tab page is deselected as the topmost tab page.</value>
</data>
Expand Down
5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.cs.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.de.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.es.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.fr.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.it.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.ja.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.ko.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.pl.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.pt-BR.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.ru.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.tr.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hans.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/System.Windows.Forms/src/Resources/xlf/SR.zh-Hant.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 14 additions & 19 deletions src/System.Windows.Forms/src/System/Windows/Forms/TabControl.cs
Expand Up @@ -786,31 +786,17 @@ public int SelectedIndex
SRDescription(nameof(SR.TabControlSelectedTabDescr))
]
public TabPage SelectedTab
{
get
{
return SelectedTabInternal;
}
set
{
SelectedTabInternal = value;
}
}

internal TabPage SelectedTabInternal
{
get
{
int index = SelectedIndex;
if (index == -1)
if (index == -1 || _tabPages == null)
{
return null;
}
else
{
Debug.Assert(0 <= index && index < _tabPages.Length, "SelectedIndex returned an invalid index");
return _tabPages[index];
}

Debug.Assert(0 <= index && index < _tabPages.Length, "SelectedIndex returned an invalid index");
return _tabPages[index];
}
set
{
Expand Down Expand Up @@ -1228,7 +1214,16 @@ public Rectangle GetTabRect(int index)

protected string GetToolTipText(object item)
{
return ((TabPage)item).ToolTipText;
if (item == null)
{
throw new ArgumentNullException(nameof(item));
}
if (!(item is TabPage tabPage))
{
throw new ArgumentException(SR.TabControlBadControl, nameof(item));
}

return tabPage.ToolTipText;
}

private void ImageListRecreateHandle(object sender, EventArgs e)
Expand Down
Expand Up @@ -2527,16 +2527,16 @@ public void TabControl_SelectedTab_GetWithPagesWithHandle_ReturnsExpected()
[InlineData(0)]
[InlineData(1)]
[InlineData(2)]
public void TabControl_SelectedTab_GetWithInvalidIndexNotGotPages_ThrowsNullReferenceException(int value)
public void TabControl_SelectedTab_GetWithInvalidIndexNotGotPages_ReturnsNull(int value)
{
using var control = new TabControl
{
SelectedIndex = value
};
Assert.Throws<NullReferenceException>(() => control.SelectedTab);
Assert.Null(control.SelectedTab);

Assert.Empty(control.TabPages);
Assert.Throws<NullReferenceException>(() => control.SelectedTab);
Assert.Null(control.SelectedTab);
}

public static IEnumerable<object[]> SelectedTab_Set_TestData()
Expand Down Expand Up @@ -3951,17 +3951,17 @@ public void TabControl_GetToolTipText_Invoke_ReturnsExpectd()
}

[WinFormsFact]
public void TabControl_GetToolTipText_NullItem_ThrowsNullReferenceException()
public void TabControl_GetToolTipText_NullItem_ThrowsArgumentNullException()
{
using var control = new SubTabControl();
Assert.Throws<NullReferenceException>(() => control.GetToolTipText(null));
Assert.Throws<ArgumentNullException>("item", () => control.GetToolTipText(null));
}

[WinFormsFact]
public void TabControl_GetToolTipText_ItemNotTabPage_ThrowsInvalidCastException()
public void TabControl_GetToolTipText_ItemNotTabPage_ThrowsArgumentException()
{
using var control = new SubTabControl();
Assert.Throws<InvalidCastException>(() => control.GetToolTipText(new object()));
Assert.Throws<ArgumentException>("item", () => control.GetToolTipText(new object()));
}

public static IEnumerable<object[]> IsInputKey_TestData()
Expand Down

0 comments on commit bf22436

Please sign in to comment.