public void VersionComparison_NullInput() { // Arrange var target = GetToolsService(); VersionComparisonInput input = null; // Act var output = target.VersionComparison(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Missing, output.InputStatus); Assert.False(output.IsVersionAValid); Assert.False(output.IsVersionBValid); Assert.Null(output.VersionA); Assert.Null(output.VersionB); Assert.Equal(ComparisonResult.Equal, output.Result); }
public void VersionComparison_InvalidVersionAAndVersionB() { // Arrange var target = GetToolsService(); var input = new VersionComparisonInput { VersionA = "a", VersionB = "b" }; // Act var output = target.VersionComparison(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Invalid, output.InputStatus); Assert.False(output.IsVersionAValid); Assert.False(output.IsVersionBValid); Assert.Null(output.VersionA); Assert.Null(output.VersionB); Assert.Equal(ComparisonResult.Equal, output.Result); }
public void VersionComparison_Equal() { // Arrange var target = GetToolsService(); var input = new VersionComparisonInput { VersionA = "1", VersionB = "1.0.0.0" }; // Act var output = target.VersionComparison(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Valid, output.InputStatus); Assert.True(output.IsVersionAValid); Assert.True(output.IsVersionBValid); Assert.Equal(GetVersionNormalizedString(input.VersionA), output.VersionA.NormalizedString); Assert.Equal(GetVersionNormalizedString(input.VersionB), output.VersionB.NormalizedString); Assert.Equal(ComparisonResult.Equal, output.Result); }
public void VersionComparison_MissingVersionB() { // Arrange var target = GetToolsService(); var input = new VersionComparisonInput { VersionA = "1.0.0-beta", VersionB = null }; // Act var output = target.VersionComparison(input); // Assert Assert.Same(input, output.Input); Assert.Equal(InputStatus.Missing, output.InputStatus); Assert.True(output.IsVersionAValid); Assert.False(output.IsVersionBValid); Assert.Equal(GetVersionNormalizedString(input.VersionA), output.VersionA.NormalizedString); Assert.Null(output.VersionB); Assert.Equal(ComparisonResult.Equal, output.Result); }
public async Task <IActionResult> VersionComparison([FromRoute] string nuGetVersion, [FromQuery] VersionComparisonInput input, bool swap, CancellationToken token) { var redirect = GetVersionRedirect(); if (redirect != null) { return(redirect); } var toolsService = await _toolsFactory.GetServiceAsync(nuGetVersion, token); if (toolsService == null) { return(NotFound()); } if (swap) { return(new RedirectToActionResult( nameof(VersionComparison), ControllerContext.ActionDescriptor.ControllerName, new { versionA = input.VersionB, versionB = input.VersionA }, permanent: false)); } var output = toolsService.VersionComparison(input); var versionedOutput = await GetSelectedVersionOutputAsync(toolsService, output, token); return(View(versionedOutput)); }
public VersionComparisonOutput VersionComparison(VersionComparisonInput input) { var output = new VersionComparisonOutput { InputStatus = InputStatus.Missing, Input = input, Result = ComparisonResult.Equal }; if (input == null) { return(output); } var versionAMissing = string.IsNullOrWhiteSpace(input.VersionA); var versionBMissing = string.IsNullOrWhiteSpace(input.VersionB); var versionA = default(TVersion); if (!versionAMissing) { try { versionA = _versionLogic.Parse(input.VersionA); output.VersionA = versionA; output.IsVersionAValid = true; } catch { output.IsVersionAValid = false; } } var versionB = default(TVersion); if (!versionBMissing) { try { versionB = _versionLogic.Parse(input.VersionB); output.VersionB = versionB; output.IsVersionBValid = true; } catch { output.IsVersionBValid = false; } } if (!versionAMissing && !versionBMissing) { if (output.IsVersionAValid && output.IsVersionBValid) { output.InputStatus = InputStatus.Valid; var result = _versionLogic.Compare(versionA, versionB); if (result < 0) { output.Result = ComparisonResult.LessThan; } else if (result == 0) { output.Result = ComparisonResult.Equal; } else { output.Result = ComparisonResult.GreaterThan; } } else { output.InputStatus = InputStatus.Invalid; } } return(output); }