public void GetNearestFramework_Invalid() { // Arrange var target = GetToolsService(); var inputPackage = new[] { "portable-net45+net-cf", "portable-win8+net-cf" }; var input = new GetNearestFrameworkInput { Project = "net451", Package = string.Join("\n", inputPackage) }; // Act var output = target.GetNearestFramework(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Invalid, output.InputStatus); Assert.Equal(2, output.Invalid.Count); Assert.Equal(inputPackage[0], output.Invalid[0]); Assert.Equal(inputPackage[1], output.Invalid[1]); Assert.True(output.IsProjectValid); Assert.False(output.IsPackageValid); Assert.Equal(GetFrameworkShortFolderName(input.Project), output.Project.ShortFolderName); Assert.Equal(0, output.Package.Count); Assert.Null(output.Nearest); }
public void GetNearestFramework_InvalidAndIncompatible() { // Arrange var target = GetToolsService(); var inputPackage = new[] { "netstandard1.6", "portable-net45+net-cf" }; var input = new GetNearestFrameworkInput { Project = "net45", Package = string.Join("\n", inputPackage) }; // Act var output = target.GetNearestFramework(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Valid, output.InputStatus); Assert.Equal(1, output.Invalid.Count); Assert.Equal(inputPackage[1], output.Invalid[0]); Assert.True(output.IsProjectValid); Assert.True(output.IsPackageValid); Assert.Equal(GetFrameworkShortFolderName(input.Project), output.Project.ShortFolderName); Assert.Equal(1, output.Package.Count); var outputFramework = output.Package.First(); Assert.Equal(inputPackage[0], outputFramework.Input); Assert.Equal(GetFrameworkShortFolderName(inputPackage[0]), outputFramework.Framework.ShortFolderName); Assert.False(outputFramework.IsCompatible); Assert.Null(output.Nearest); }
public void GetNearestFramework_MissingProject() { // Arrange var target = GetToolsService(); var inputPackage = new[] { "net45" }; var input = new GetNearestFrameworkInput { Project = null, Package = string.Join("\n", inputPackage) }; // Act var output = target.GetNearestFramework(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Missing, output.InputStatus); Assert.Empty(output.Invalid); Assert.False(output.IsProjectValid); Assert.True(output.IsPackageValid); Assert.Null(output.Project); Assert.Equal(1, output.Package.Count); var outputFramework = output.Package.First(); Assert.Equal(inputPackage[0], outputFramework.Input); Assert.Equal(GetFrameworkShortFolderName(inputPackage[0]), outputFramework.Framework.ShortFolderName); Assert.False(outputFramework.IsCompatible); Assert.Null(output.Nearest); }
public void GetNearestFramework_Mixed() { // Arrange var target = GetToolsService(); var inputPackage = new[] { "net40", "net45", "netstandard1.6", "portable-net45+net-cf" }; var input = new GetNearestFrameworkInput { Project = "net451", Package = string.Join("\n", inputPackage) }; // Act var output = target.GetNearestFramework(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Valid, output.InputStatus); Assert.Equal(1, output.Invalid.Count); Assert.Equal(inputPackage[3], output.Invalid[0]); Assert.True(output.IsProjectValid); Assert.True(output.IsPackageValid); Assert.Equal(GetFrameworkShortFolderName(input.Project), output.Project.ShortFolderName); Assert.Equal(3, output.Package.Count); var outputFrameworkA = output.Package.ElementAt(0); Assert.Equal(inputPackage[0], outputFrameworkA.Input); Assert.Equal(GetFrameworkShortFolderName(inputPackage[0]), outputFrameworkA.Framework.ShortFolderName); Assert.True(outputFrameworkA.IsCompatible); var outputFrameworkB = output.Package.ElementAt(1); Assert.Equal(inputPackage[1], outputFrameworkB.Input); Assert.Equal(GetFrameworkShortFolderName(inputPackage[1]), outputFrameworkB.Framework.ShortFolderName); Assert.True(outputFrameworkB.IsCompatible); var outputFrameworkC = output.Package.ElementAt(2); Assert.Equal(inputPackage[2], outputFrameworkC.Input); Assert.Equal(GetFrameworkShortFolderName(inputPackage[2]), outputFrameworkC.Framework.ShortFolderName); Assert.False(outputFrameworkC.IsCompatible); Assert.Same(outputFrameworkB, output.Nearest); }
public void GetNearestFramework_NullInput() { // Arrange var target = GetToolsService(); GetNearestFrameworkInput input = null; // Act var output = target.GetNearestFramework(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Missing, output.InputStatus); Assert.Empty(output.Invalid); Assert.False(output.IsProjectValid); Assert.False(output.IsPackageValid); Assert.Null(output.Project); Assert.Empty(output.Package); Assert.Null(output.Nearest); }
public void GetNearestFramework_MissingPackage() { // Arrange var target = GetToolsService(); var input = new GetNearestFrameworkInput { Project = "net45", Package = null }; // Act var output = target.GetNearestFramework(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Missing, output.InputStatus); Assert.Empty(output.Invalid); Assert.True(output.IsProjectValid); Assert.False(output.IsPackageValid); Assert.Equal(GetFrameworkShortFolderName(input.Project), output.Project.ShortFolderName); Assert.Empty(output.Package); Assert.Null(output.Nearest); }
public async Task <IActionResult> GetNearestFramework([FromRoute] string nuGetVersion, [FromQuery] GetNearestFrameworkInput input, CancellationToken token) { var redirect = GetVersionRedirect(); if (redirect != null) { return(redirect); } var toolsService = await _toolsFactory.GetServiceAsync(nuGetVersion, token); if (toolsService == null) { return(NotFound()); } var output = toolsService.GetNearestFramework(input); var versionedOutput = await GetSelectedVersionOutputAsync(toolsService, output, token); return(View(versionedOutput)); }
public GetNearestFrameworkOutput GetNearestFramework(GetNearestFrameworkInput input) { var outputFrameworks = new List <OutputFramework>(); var invalid = new List <string>(); var output = new GetNearestFrameworkOutput { InputStatus = InputStatus.Missing, Package = outputFrameworks, Invalid = invalid, Input = input }; if (input == null) { return(output); } var projectMissing = string.IsNullOrWhiteSpace(input.Project); var packageMissing = string.IsNullOrWhiteSpace(input.Package); var project = default(TFramework); if (!projectMissing) { try { project = _frameworkLogic.Parse(input.Project); output.Project = project; output.IsProjectValid = true; } catch (Exception) { output.IsProjectValid = false; } } if (!packageMissing) { using (var reader = new StringReader(input.Package)) { string line; while ((line = reader.ReadLine()) != null) { line = line.Trim(); if (string.IsNullOrEmpty(line)) { continue; } try { var framework = _frameworkLogic.Parse(line); var pair = new OutputFramework { Input = line, Framework = framework, IsCompatible = false }; if (output.Project != null) { pair.IsCompatible = _frameworkLogic.IsCompatible(project, framework); } outputFrameworks.Add(pair); } catch (Exception) { invalid.Add(line); } } } output.IsPackageValid = output.Package.Any(); } if (!projectMissing && !packageMissing) { if (output.IsProjectValid && output.IsPackageValid) { output.InputStatus = InputStatus.Valid; var frameworks = output.Package.Select(x => (TFramework)x.Framework).ToArray(); var nearest = _frameworkLogic.GetNearest(project, frameworks); if (nearest != null) { output.Nearest = output.Package.First(x => x.Framework.Equals(nearest)); } } else { output.InputStatus = InputStatus.Invalid; } } return(output); }