Browse Source

Fix index out of range exception in Package Sources option panel.

Disable move buttons if no package source selected.
pull/33/head
Matt Ward 13 years ago
parent
commit
c7e1cece1a
  1. 15
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs
  2. 24
      src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs

15
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs

@ -170,7 +170,7 @@ namespace ICSharpCode.PackageManagement
} }
public bool CanRemovePackageSource { public bool CanRemovePackageSource {
get { return selectedPackageSourceViewModel != null; } get { return IsPackageSourceSelected(); }
} }
void RemoveSelectedPackageSourceViewModel() void RemoveSelectedPackageSourceViewModel()
@ -192,10 +192,17 @@ namespace ICSharpCode.PackageManagement
public bool CanMovePackageSourceUp { public bool CanMovePackageSourceUp {
get { get {
return HasAtLeastTwoPackageSources() && !IsFirstPackageSourceSelected(); return HasAtLeastTwoPackageSources() &&
IsPackageSourceSelected() &&
!IsFirstPackageSourceSelected();
} }
} }
bool IsPackageSourceSelected()
{
return selectedPackageSourceViewModel != null;
}
bool IsFirstPackageSourceSelected() bool IsFirstPackageSourceSelected()
{ {
return selectedPackageSourceViewModel == packageSourceViewModels[0]; return selectedPackageSourceViewModel == packageSourceViewModels[0];
@ -210,7 +217,9 @@ namespace ICSharpCode.PackageManagement
public bool CanMovePackageSourceDown { public bool CanMovePackageSourceDown {
get { get {
return HasAtLeastTwoPackageSources() && !IsLastPackageSourceSelected(); return HasAtLeastTwoPackageSources() &&
IsPackageSourceSelected() &&
!IsLastPackageSourceSelected();
} }
} }

24
src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs

@ -445,6 +445,30 @@ namespace PackageManagement.Tests
Assert.IsFalse(result); Assert.IsFalse(result);
} }
[Test]
public void CanMovePackageSourceUp_TwoPackageSourcesAndNothingIsSelected_ReturnsFalse()
{
CreateViewModelWithTwoPackageSources();
viewModel.Load();
viewModel.SelectedPackageSourceViewModel = null;
bool result = viewModel.CanMovePackageSourceUp;
Assert.IsFalse(result);
}
[Test]
public void CanMovePackageSourceDown_TwoPackageSourcesAndNothingIsSelected_ReturnsFalse()
{
CreateViewModelWithTwoPackageSources();
viewModel.Load();
viewModel.SelectedPackageSourceViewModel = null;
bool result = viewModel.CanMovePackageSourceDown;
Assert.IsFalse(result);
}
[Test] [Test]
public void SelectedPackageSourceViewModel_PropertyChanged_FiresPropertyChangedEvent() public void SelectedPackageSourceViewModel_PropertyChanged_FiresPropertyChangedEvent()
{ {

Loading…
Cancel
Save