Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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));
        }
Example #6
0
        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);
        }