public void NormalTypeValuesGetsSetCorrectly(ushort major, ushort minor, ushort patch)
        {
            var expected = new VersionResult {Major = major, Minor = minor, Patch = patch};

            var actual = new SemanticVersion(major, minor, patch);

            actual.AsSource().OfLikeness<VersionResult>().ShouldEqual(expected);
        }
        public void SpecialVersionsGetsSetCorrectly(SemanticVersionType semanticVersionType, ushort major, ushort minor, ushort patch,
            string[] specialVersionParts)
        {
            var expectedSpecialVersion = string.Join(".", specialVersionParts);

            var expected = new VersionResult
                           	{
                           		Major = major,
                           		Minor = minor,
                           		Patch = patch,
                           		SemanticVersionType = semanticVersionType,
                           		SpecialVersion = expectedSpecialVersion
                           	};

            var actual = new SemanticVersion(major, minor, patch, specialVersionParts, semanticVersionType);

            actual.AsSource().OfLikeness<VersionResult>().ShouldEqual(expected);
        }
        private VersionResult ExtractNormalVersion(string normalVersionString)
        {
            var versionMatch = NormalVersionRegex.Match(normalVersionString);

            if (versionMatch.Success)
            {
                var major = Convert.ToUInt16(versionMatch.Groups["major"].Value);
                var minor = Convert.ToUInt16(versionMatch.Groups["minor"].Value);
                var patch = Convert.ToUInt16(versionMatch.Groups["patch"].Value);

                var versionResult = new VersionResult
                                        {
                                            Major = major,
                                            Minor = minor,
                                            Patch = patch
                                        };

                return versionResult;
            }

            return null;
        }
        private VersionResult ExtractSpecialVersion(string specialVersionString)
        {
            var versionMatch = SpecialVersionRegex.Match(specialVersionString);

            if (versionMatch.Success)
            {
                var major = Convert.ToUInt16(versionMatch.Groups["major"].Value);
                var minor = Convert.ToUInt16(versionMatch.Groups["minor"].Value);
                var patch = Convert.ToUInt16(versionMatch.Groups["patch"].Value);
                var versionType = ParseDelimiter(versionMatch.Groups["delimiter"].Value);
                var specialVersion = versionMatch.Groups["specialVersionParts"].Value;

                var versionResult = new VersionResult
                                        {
                                            Major = major,
                                            Minor = minor,
                                            Patch = patch,
                                            SemanticVersionType = versionType,
                                            SpecialVersion = specialVersion
                                        };

                return versionResult;
            }

            return null;
        }
        public void ConvertsVersionCorrectly(int major, int minor, int build)
        {
            var expected = new VersionResult {Major = (ushort) major, Minor = (ushort) minor, Patch = (ushort) build};

            var version = new Version(major, minor, build);

            var sut = new SemanticVersionConverter();

            var actual = sut.Convert(version);

            actual.AsSource().OfLikeness<VersionResult>().ShouldEqual(expected);
        }