internal void CheckUpperLimitAlwaysRequired(string command, IEnumerable <Bundle> bundles) { var parseResult = CommandLineConfigs.UninstallRootCommand.Parse(command); Action filteringAction = () => CommandBundleFilter.GetFilteredBundles(bundles, parseResult); filteringAction.Should().Throw <UninstallationNotAllowedException>(); }
internal void TestRequiredUninstallableWhenExplicitlyAdded(string command, string[] expectedUninstallableSdk, string[] expectedUninstallableRuntime) { var bundles = new List <Bundle>(); foreach (string v in versions) { bundles.Add(new Bundle <SdkVersion>(new SdkVersion(v), new BundleArch(), string.Empty, v)); bundles.Add(new Bundle <RuntimeVersion>(new RuntimeVersion(v), new BundleArch(), string.Empty, v)); } var parseResult = CommandLineConfigs.UninstallRootCommand.Parse(command); var uninstallableBundles = CommandBundleFilter.GetFilteredBundles(bundles, parseResult); var uninstallableSdks = uninstallableBundles.Where(b => b.Version is SdkVersion).Select(b => b.DisplayName); var requiredSdks = bundles.Except(uninstallableBundles).Where(b => b.Version is SdkVersion).Select(b => b.DisplayName); var uninstallableRuntimes = uninstallableBundles.Where(b => b.Version is RuntimeVersion).Select(b => b.DisplayName); var requiredRuntimes = bundles.Except(uninstallableBundles).Where(b => b.Version is RuntimeVersion).Select(b => b.DisplayName); (uninstallableSdks.Count() + requiredSdks.Count()).Should().Be(versions.Length); uninstallableSdks.ToHashSet().Should().BeEquivalentTo(expectedUninstallableSdk.ToHashSet()); requiredSdks.Should().BeEquivalentTo(versions.Where(v => !expectedUninstallableSdk.Contains(v))); (uninstallableRuntimes.Count() + requiredRuntimes.Count()).Should().Be(versions.Length); uninstallableRuntimes.ToHashSet().Should().BeEquivalentTo(expectedUninstallableRuntime.ToHashSet()); requiredRuntimes.Should().BeEquivalentTo(versions.Where(v => !expectedUninstallableRuntime.Contains(v))); }
internal void TestRequiredUninstallableWhenExplicitlyAdded(IEnumerable <Bundle> bundles, string command, string[] expectedUninstallableSdk, string[] expectedUninstallableRuntime) { var parseResult = CommandLineConfigs.UninstallRootCommand.Parse(command); var uninstallableBundles = CommandBundleFilter.GetFilteredBundles(bundles, parseResult); var uninstallableSdks = uninstallableBundles.Where(b => b.Version is SdkVersion).Select(b => b.DisplayName); var requiredSdks = bundles.Except(uninstallableBundles).Where(b => b.Version is SdkVersion).Select(b => b.DisplayName); var uninstallableRuntimes = uninstallableBundles.Where(b => b.Version is RuntimeVersion).Select(b => b.DisplayName); var requiredRuntimes = bundles.Except(uninstallableBundles).Where(b => b.Version is RuntimeVersion).Select(b => b.DisplayName); bundles = bundles.Where(bundle => command.Contains(bundle.UninstallCommand)); // Only check bundles of type specified (SDK, Runtime, etc) (uninstallableSdks.Count() + requiredSdks.Count()).Should().Be(bundles.Count()); uninstallableSdks.ToHashSet().Should().BeEquivalentTo(expectedUninstallableSdk.ToHashSet()); requiredSdks.Should().BeEquivalentTo(bundles.Select(bundle => bundle.DisplayName).Where(v => !expectedUninstallableSdk.Contains(v))); (uninstallableRuntimes.Count() + requiredRuntimes.Count()).Should().Be(bundles.Count()); uninstallableRuntimes.ToHashSet().Should().BeEquivalentTo(expectedUninstallableRuntime.ToHashSet()); requiredRuntimes.Should().BeEquivalentTo(bundles.Select(bundle => bundle.DisplayName).Where(v => !expectedUninstallableRuntime.Contains(v))); }