コード例 #1
0
 public void DoIncrements(Func<VersionFormatter, string, IncrementMethod, string, string> processIncrementMethod, Dictionary<string, List<string>> arguments, VersionFormatter formatter)
 {
     var safeArgs = new SafeDictionay<string, List<string>>(arguments);
     Numbers.Major = processIncrementMethod(formatter, Numbers.Major, Increments.Major, safeArgs[Parameters.Major.TL()]?.First());
     Numbers.Minor = processIncrementMethod(formatter, Numbers.Minor, Increments.Minor, safeArgs[Parameters.Minor.TL()]?.First());
     Numbers.Patch = processIncrementMethod(formatter, Numbers.Patch, Increments.Patch, safeArgs[Parameters.Patch.TL()]?.First());
     Numbers.Build = processIncrementMethod(formatter, Numbers.Build, Increments.Build, safeArgs[Parameters.Build.TL()]?.First());
     Numbers.Revision = processIncrementMethod(formatter, Numbers.Revision, Increments.Revision, safeArgs[Parameters.Revision.TL()]?.First());
 }
コード例 #2
0
        public void GetAutoIncremented_WhenAValidValueIsPassed_ReturnsTheValueIncremented()
        {
            // Arrange
            var valueToParse = "9";
            var expectedValue = "10";

            // Act
            var versionFormatter = new VersionFormatter();
            var resultValue = versionFormatter.GetAutoIncremented(valueToParse);

            // Assert
            Assert.AreEqual(expectedValue, resultValue);
        }
コード例 #3
0
        public void GetAutoIncremented_WhenAValidValueMaxIntegerIsPassed_ReturnsZero()
        {
            // Arrange
            var valueToParse = int.MaxValue.ToString();
            var expectedValue = "0";

            // Act
            var versionFormatter = new VersionFormatter();
            var resultValue = versionFormatter.GetAutoIncremented(valueToParse);

            // Assert
            Assert.AreEqual(expectedValue, resultValue);
        }
コード例 #4
0
        public void GetAutoIncremented_WhenAnInvalidStringValueIsPassed_ThrowsFormatException()
        {
            // Arrange
            var valueToParse = "not_valid_value";
            var exceptionMessage = $"The argument with value [{valueToParse}] cannot be converted to a valid integer.";

            // Act
            var versionFormatter = new VersionFormatter();
            try
            {
                versionFormatter.GetAutoIncremented(valueToParse);
                Assert.Fail();
            }
            catch (FormatException ex)
            {
                // Assert
                Assert.AreEqual(exceptionMessage, ex.Message);
            }
        }
コード例 #5
0
        public void GetVersionFormatted_WithComplexPatternAndAllVarsInformed_ReplaceAllVariables()
        {
            // Arrange
            var pattern = "{MAJOR}[.{MINOR}].{PATCH}[.{BUILD}{REVISION}]";
            var values = new Dictionary<string, string> { { "MAJOR", "1" }, { "MINOR", "2" }, { "PATCH", "4" }, { "BUILD", "B" }, { "REVISION", "9" } };
            var expectedVersion = "1.2.4.B9";

            // Act
            var versionFormatter = new VersionFormatter();
            var result = versionFormatter.GetVersionFormatted(pattern, values);

            // Assert
            Assert.AreEqual(expectedVersion, result);
        }
コード例 #6
0
        public void NormalizeTFSBuildNumber_WhenPassedANegativeValidInteger_ThrowsArgumentOutOfRangeException()
        {
            // Arrange
            var valueToParse = "-5";
            var exceptionMessage = $"The argument with value [{valueToParse}] it's out of valid range, only positive integers and zero are accepted.";

            // Act
            var versionFormatter = new VersionFormatter();
            try
            {
                versionFormatter.NormalizeTFSBuildNumber(valueToParse);
                Assert.Fail();
            }
            catch (ArgumentOutOfRangeException ex)
            {
                // Assert
                Assert.IsTrue(ex.Message.StartsWith(exceptionMessage));
                Assert.AreEqual("tfsBuildNumber", ex.ParamName);
            }
        }
コード例 #7
0
        public void NormalizeTFSBuildNumber_WhenNoValueIsPassed_ReturnsZero()
        {
            // Act
            var versionFormatter = new VersionFormatter();
            var result = versionFormatter.NormalizeTFSBuildNumber();

            // Assert
            Assert.AreEqual("0", result);
        }
コード例 #8
0
        public void NormalizeTFSBuildNumber_WhenAZeroValidIsPassed_ReturnsZero()
        {
            // Arrange
            var valueToParse = "0";
            var expectedValue = "0";

            // Act
            var versionFormatter = new VersionFormatter();
            var resultValue = versionFormatter.NormalizeTFSBuildNumber(valueToParse);

            // Assert
            Assert.AreEqual(expectedValue, resultValue);
        }
コード例 #9
0
        public void NormalizeTFSBuildNumber_WhenAValidValueIsPassed_ReturnsTheValueDecremented()
        {
            // Arrange
            var valueToParse = "9";
            var expectedValue = "8";

            // Act
            var versionFormatter = new VersionFormatter();
            var resultValue = versionFormatter.NormalizeTFSBuildNumber(valueToParse);

            // Assert
            Assert.AreEqual(expectedValue, resultValue);
        }
コード例 #10
0
        public void GetJulianFormat_ProvidingDateAtBegininOfYear_ReturnsTheValuePassedFormattedInTheFormYYDDD()
        {
            // Arrange
            var dateProvided = new DateTime(DateTime.Today.Year, 1, 23);
            var expectedJulianDate = dateProvided.Year.ToString() + "023";

            // Act
            var returnedDate = new VersionFormatter().GetJulianFormat(dateProvided);

            // Assert
            Assert.AreEqual(expectedJulianDate, returnedDate);
        }
コード例 #11
0
        private static string ProcessIncrementMethod(VersionFormatter formatter, string number, IncrementMethod incrementMethod, string settedValue = null)
        {
            switch (incrementMethod)
            {
                case IncrementMethod.Setted:
                    if (string.IsNullOrWhiteSpace(settedValue))
                    {
                        throw new ArgumentNullException(nameof(settedValue), $"The value for variable {{{number}}} was not setted.");
                    }

                    number = settedValue;
                    break;
                case IncrementMethod.Julian:
                    number = formatter.GetJulianFormat();
                    break;
                case IncrementMethod.Auto:
                    number = formatter.GetAutoIncremented(number);
                    break;
            }
            return number;
        }
コード例 #12
0
        public void GetVersionFormatted_WhenCalledWithPatternAndOtherValuesThanUsedInPattern_ThrowsArgumentException()
        {
            // Arrange
            var pattern = "{MAJOR}.{MINOR}.{PATCH}.{REVISION}";
            var values = new Dictionary<string, string> { { "MAJOR", "1" }, { "MINOR", "1" }, { "REVISION", "0" }, { "BUILD", "0" } };
            var expectedMessage = "The number of values is less than specified in the pattern or not all values has been provided.\nMandatory variables found: MAJOR, MINOR, PATCH, REVISION\nValues provided: MAJOR, MINOR, REVISION, BUILD";

            // Act
            var versionFormatter = new VersionFormatter();
            try
            {
                versionFormatter.GetVersionFormatted(pattern, values);
                Assert.Fail();
            }
            catch (ArgumentException ex)
            {
                // Assert
                Assert.IsTrue(ex.Message.StartsWith(expectedMessage));
                Assert.AreEqual("values", ex.ParamName);
            }
        }
コード例 #13
0
        public void GetVersionFormatted_WhenCalledWithPatternWithOptionalVarsAndAllValuesThanUsedInMandatoryPart_ReplaceMandatoryAndRemoveOptional()
        {
            // Arrange
            var pattern = "{MAJOR}.{MINOR}.{PATCH}[.{BUILD}{REVISION}]";
            var values = new Dictionary<string, string> { { "MAJOR", "1" }, { "MINOR", "1" }, { "PATCH", "0" } };
            var expectedVersion = "1.1.0";

            // Act
            var versionFormatter = new VersionFormatter();
            var result = versionFormatter.GetVersionFormatted(pattern, values);

            // Assert
            Assert.AreEqual(expectedVersion, result);
        }
コード例 #14
0
        public void GetVersionFormatted_WhenCalledWithPatternAndNotAllValuesInOptionalPart_ReplaceAllVariablesAndRemoveOptionalNotProvided()
        {
            // Arrange
            var pattern = "{MAJOR}.{MINOR}.{PATCH}[.{BUILD}{REVISION}]";
            var values = new Dictionary<string, string> { { "MAJOR", "1" }, { "MINOR", "1" }, { "PATCH", "0" }, { "BUILD", "B" } };
            var expectedVersion = "1.1.0.B";

            // Act
            var versionFormatter = new VersionFormatter();
            var result = versionFormatter.GetVersionFormatted(pattern, values);

            // Assert
            Assert.AreEqual(expectedVersion, result);
        }
コード例 #15
0
        public void GetVersionFormatted_WhenCalledWithoutDictionaryValues_ThrowsArgumentNullException()
        {
            // Arrange
            var pattern = "NOTHING.TO.REPLACE";
            var values = new Dictionary<string, string>();

            // Act
            var versionFormatter = new VersionFormatter();
            try
            {
                versionFormatter.GetVersionFormatted(pattern, values);
                Assert.Fail();
            }
            catch (ArgumentNullException ex)
            {
                // Assert
                Assert.AreEqual("values", ex.ParamName);
            }
        }
コード例 #16
0
        public void GetVersionFormatted_WhenCalledWithInvalidPattern_ThrowsArgumentException()
        {
            // Arrange
            var pattern = "NOTHING.TO.REPLACE";
            var values = new Dictionary<string, string> { { "MAJOR", "1" }, { "MINOR", "1" }, { "REVISION", "0" }, { "BUILD", "0" } };
            var expectedMessage = "The pattern seems not be valid because any variable has been found to replace";

            // Act
            var versionFormatter = new VersionFormatter();
            try
            {
                versionFormatter.GetVersionFormatted(pattern, values);
                Assert.Fail();
            }
            catch (ArgumentException ex)
            {
                // Assert
                Assert.IsTrue(ex.Message.StartsWith(expectedMessage));
                Assert.AreEqual("pattern", ex.ParamName);
            }
        }
コード例 #17
0
        public void GetJulianFormat_WithoutProvideDate_ReturnsTheActualDateFormatted()
        {
            // Arrange
            var expectedJulianDate = DateTime.Now.Year.ToString() + DateTime.Now.DayOfYear;

            // Act
            var returnedDate = new VersionFormatter().GetJulianFormat();

            // Assert
            Assert.AreEqual(expectedJulianDate, returnedDate);
        }
コード例 #18
0
        public void GetJulianFormat_ProvidingDate_ReturnsTheValuePassedFormatted()
        {
            // Arrange
            var dateProvided = DateTime.Now.AddDays(23);
            var expectedJulianDate = dateProvided.Year.ToString() + dateProvided.DayOfYear;

            // Act
            var returnedDate = new VersionFormatter().GetJulianFormat(dateProvided);

            // Assert
            Assert.AreEqual(expectedJulianDate, returnedDate);
        }
コード例 #19
0
        public void GetAutoIncremented_WhenNoValueIsPassed_ReturnsZero()
        {
            // Act
            var versionFormatter = new VersionFormatter();
            var result = versionFormatter.GetAutoIncremented();

            // Assert
            Assert.AreEqual("0", result);
        }
コード例 #20
0
        public void GetVersionFormatted_WithSimplePatternAndAllVarsInformed_ReplaceAllVariables()
        {
            // Arrange
            var pattern = "{MAJOR}.{MINOR}.{PATCH}";
            var values = new Dictionary<string, string> { { "MAJOR", "1" }, { "MINOR", "2" }, { "PATCH", "4" } };
            var expectedVersion = "1.2.4";

            // Act
            var versionFormatter = new VersionFormatter();
            var result = versionFormatter.GetVersionFormatted(pattern, values);

            // Assert
            Assert.AreEqual(expectedVersion, result);
        }
コード例 #21
0
        private static void DoPatching(ref XElement element, string buildName, bool reBuild = false)
        {
            VersionProcessDefinition versionDefinition = new VersionProcessDefinition();
            var formatter = new VersionFormatter();

            versionDefinition.Read(element, buildName, reBuild);

            versionDefinition.DoIncrements(ProcessIncrementMethod, Arguments, formatter);

            versionDefinition.ApplyPatterns(formatter.GetVersionFormatted);

            versionDefinition.Write(ref element, buildName);
        }
コード例 #22
0
        public void NormalizeTFSBuildNumber_WhenAnInvalidDoubleValueIsPassed_ThrowsFormatException()
        {
            // Arrange
            var valueToParse = "1.3";
            var exceptionMessage = $"The argument with value [{valueToParse}] cannot be converted to a valid integer.";

            // Act
            var versionFormatter = new VersionFormatter();
            try
            {
                versionFormatter.NormalizeTFSBuildNumber(valueToParse);
                Assert.Fail();
            }
            catch (FormatException ex)
            {
                // Assert
                Assert.AreEqual(exceptionMessage, ex.Message);
            }
        }