From c7e1cece1a3761cecee424bcf28a69cbfaf4149e Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sun, 6 Jan 2013 13:00:41 +0000 Subject: [PATCH] Fix index out of range exception in Package Sources option panel. Disable move buttons if no package source selected. --- .../Src/RegisteredPackageSourcesViewModel.cs | 15 +++++++++--- .../RegisteredPackageSourcesViewModelTests.cs | 24 +++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs index 0d605f85d13..0b9cc60bf27 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs @@ -170,7 +170,7 @@ public void RemovePackageSource() } public bool CanRemovePackageSource { - get { return selectedPackageSourceViewModel != null; } + get { return IsPackageSourceSelected(); } } void RemoveSelectedPackageSourceViewModel() @@ -192,10 +192,17 @@ int GetSelectedPackageSourceViewModelIndex() public bool CanMovePackageSourceUp { get { - return HasAtLeastTwoPackageSources() && !IsFirstPackageSourceSelected(); + return HasAtLeastTwoPackageSources() && + IsPackageSourceSelected() && + !IsFirstPackageSourceSelected(); } } + bool IsPackageSourceSelected() + { + return selectedPackageSourceViewModel != null; + } + bool IsFirstPackageSourceSelected() { return selectedPackageSourceViewModel == packageSourceViewModels[0]; @@ -210,7 +217,9 @@ public void MovePackageSourceDown() public bool CanMovePackageSourceDown { get { - return HasAtLeastTwoPackageSources() && !IsLastPackageSourceSelected(); + return HasAtLeastTwoPackageSources() && + IsPackageSourceSelected() && + !IsLastPackageSourceSelected(); } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs index 34256818e43..cc915dac125 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs @@ -445,6 +445,30 @@ public void CanMovePackageSourceUp_OnePackageSourceAndNothingIsSelected_ReturnsF 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] public void SelectedPackageSourceViewModel_PropertyChanged_FiresPropertyChangedEvent() {