/// <summary>
        /// Creates a new implementation version from a a string.
        /// </summary>
        /// <param name="value">The string containing the version information.</param>
        /// <exception cref="FormatException"><paramref name="value"/> is not a valid version string.</exception>
        public ImplementationVersion(string value)
        {
            if (string.IsNullOrEmpty(value))
            {
                throw new FormatException(Resources.MustStartWithDottedList);
            }

            if (ModelUtils.ContainsTemplateVariables(value))
            {
                _verbatimString = value;
                AdditionalParts = new VersionPart[0];
                return;
            }

            var parts = value.Split('-');

            // Ensure the first part is a dotted list
            if (!VersionDottedList.IsValid(parts[0]))
            {
                throw new FormatException(Resources.MustStartWithDottedList);
            }
            FirstPart = new VersionDottedList(parts[0]);

            // Iterate through all additional parts
            var additionalParts = new VersionPart[parts.Length - 1];

            for (int i = 1; i < parts.Length; i++)
            {
                additionalParts[i - 1] = new VersionPart(parts[i]);
            }
            AdditionalParts = additionalParts;
        }
Example #2
0
 public void TestContainsTemplateVariables()
 {
     ModelUtils.ContainsTemplateVariables("").Should().BeFalse();
     ModelUtils.ContainsTemplateVariables("x").Should().BeFalse();
     ModelUtils.ContainsTemplateVariables("}{").Should().BeFalse();
     ModelUtils.ContainsTemplateVariables("{}").Should().BeTrue();
     ModelUtils.ContainsTemplateVariables("{var}").Should().BeTrue();
     ModelUtils.ContainsTemplateVariables("x{var}x").Should().BeTrue();
 }