public void CompareTo_NonNumericVersionAndNumericVersion_NonNumericIsGreaterThan()
        {
            var nonNumeric = new ChangeVersion("Unreleased");
            var numeric    = new ChangeVersion("1.10.1");

            Assert.That(nonNumeric.CompareTo(numeric), Is.EqualTo(1));
        }
        public void CompareTo_EqualVersions_Equal()
        {
            var versionA = new ChangeVersion("1.10.1");
            var versionB = new ChangeVersion("1.10.1");

            Assert.That(versionA.CompareTo(versionB), Is.EqualTo(0));
        }
        public void CompareTo_NonNumericVersions_GreaterOrdinalIsGreaterThan()
        {
            var nonNumericA = new ChangeVersion("UnreleasedA");
            var nonNumericB = new ChangeVersion("UnreleasedB");

            Assert.That(nonNumericB.CompareTo(nonNumericA), Is.EqualTo(1));
        }
예제 #4
0
        public override void ReadFull(BinaryReader reader, NetVersion version)
        {
            int fullValue = reader.ReadInt32();

            cleanSet(fullValue);
            networkValue = fullValue;
            ChangeVersion.Merge(version);
        }
        public void CompareTo_HigherVersions_IsLessThan()
        {
            var higherMajorVersion = new ChangeVersion("1.9.0");
            var higherMinorVersion = new ChangeVersion("0.10.0");
            var higherPatchVersion = new ChangeVersion("0.9.1");
            var lowerVersion       = new ChangeVersion("0.9.0");

            Assert.That(lowerVersion.CompareTo(higherMajorVersion), Is.EqualTo(-1));
            Assert.That(lowerVersion.CompareTo(higherMinorVersion), Is.EqualTo(-1));
            Assert.That(lowerVersion.CompareTo(higherPatchVersion), Is.EqualTo(-1));
        }
        public void CompareTo_LowerVersions_IsGreaterThan()
        {
            var lowerMajorVersion = new ChangeVersion("0.10.1");
            var lowerMinorVersion = new ChangeVersion("1.9.1");
            var lowerPatchVersion = new ChangeVersion("1.10.0");
            var higherVersion     = new ChangeVersion("1.10.1");


            Assert.That(higherVersion.CompareTo(lowerMajorVersion), Is.EqualTo(1));
            Assert.That(higherVersion.CompareTo(lowerMinorVersion), Is.EqualTo(1));
            Assert.That(higherVersion.CompareTo(lowerPatchVersion), Is.EqualTo(1));
        }
예제 #7
0
        public override void ReadFull(BinaryReader reader, NetVersion version)
        {
            reassigned.Read(reader);
            T remoteValue = readBaseValue(reader, version);

            if (remoteValue != null)
            {
                ReadValueFull(remoteValue, reader, version);
            }
            cleanSet(remoteValue);
            ChangeVersion.Merge(version);
        }
        public void VerifyMinVersionChangelogIsGenerated()
        {
            var minVersion = new ChangeVersion("1.0.0");
            var now        = DateTimeOffset.Now;
            var yesterday  = now.AddDays(-1);
            var readerMock = new Mock <IGenericReader <ProjectChange> >();
            var renderer   = new StubbleBuilder().Build();
            var readers    = new List <IGenericReader <ProjectChange> >
            {
                readerMock.Object
            };
            const string projectA        = "ProjectA";
            const string projectB        = "ProjectB";
            var          expectedChanges = new List <ProjectChange>
            {
                new ProjectChange(projectA, new ChangeVersion("1.0.0"), "Added", $"Added some other {projectA} change", now),
                new ProjectChange(projectB, new ChangeVersion("1.0.0"), "Added", $"Added some other {projectB} change", now),
                new ProjectChange(projectA, new ChangeVersion("1.0.0"), "Removed", $"Removed some other {projectA} change", now),
                new ProjectChange(projectB, new ChangeVersion("1.0.0"), "Removed", $"Removed some other {projectB} change", now),
                new ProjectChange(projectA, new ChangeVersion("0.1.0"), "Added", $"Added some {projectA} change", yesterday),
                new ProjectChange(projectB, new ChangeVersion("0.1.0"), "Added", $"Added some {projectB} change", yesterday),
                new ProjectChange(projectA, new ChangeVersion("0.1.0"), "Removed", $"Removed some {projectA} change", yesterday),
                new ProjectChange(projectB, new ChangeVersion("0.1.0"), "Removed", $"Removed some {projectB} change", yesterday),
            };

            readerMock.Setup(r => r.Values()).Returns(expectedChanges);

            var expectedA = $@"
## [1.0.0] - {now:yyyy-MM-dd}
### Added
- Added some other {projectA} change

### Removed
- Removed some other {projectA} change

";
            var expectedB = $@"
## [1.0.0] - {now:yyyy-MM-dd}
### Added
- Added some other {projectB} change

### Removed
- Removed some other {projectB} change

";

            var generator       = new ProjectChangelogGenerator(readers, Template, renderer);
            var projectToActual = generator.Generate(minVersion: minVersion);

            Assert.That(projectToActual.GetValueOrDefault(projectA), Is.EqualTo(expectedA));
            Assert.That(projectToActual.GetValueOrDefault(projectB), Is.EqualTo(expectedB));
        }
예제 #9
0
        public override void Read(BinaryReader reader, NetVersion version)
        {
            uint count     = reader.Read7BitEncoded();
            uint timestamp = GetLocalTick();

            if (InterpolationWait)
            {
                timestamp = (uint)((int)timestamp + base.Root.Clock.InterpolationTicks);
            }
            for (uint i = 0u; i < count; i++)
            {
                uint delay = reader.ReadUInt32();
                incomingEvents.Add(new EventRecording(readEventArg(reader, version), timestamp + delay));
            }
            ChangeVersion.Merge(version);
        }
예제 #10
0
        private static Commit MockCommit(IChange change, string project = "", ChangeVersion version = null)
        {
            var commitMock      = new Mock <Commit>();
            var commitAuthor    = new Signature("Some Author", "Some Email", change.Date);
            var expectedMessage = $@"{change.Summary}

reference: {change.Reference}
version: {version}
type: {change.ChangeType}
project: {project}
";

            commitMock.SetupGet(x => x.MessageShort).Returns(change.Summary);
            commitMock.SetupGet(x => x.Author).Returns(commitAuthor);
            commitMock.SetupGet(x => x.Message).Returns(expectedMessage);

            return(commitMock.Object);
        }
예제 #11
0
        public void VerifyEnumeratorStopsAtMinVersion()
        {
            var now               = DateTimeOffset.Now;
            var minVersion        = new ChangeVersion("1.5.0");
            var changeVersion2    = new DefaultChange(new ChangeVersion("2.0.0"), "Added", "Some 2.0.0 Summary", now);
            var changeVersion1Pt5 = new DefaultChange(minVersion, "Added", "Some 1.5.0 Summary", now.AddDays(-1));
            var changeVersion1    = new DefaultChange(new ChangeVersion("1.0.0"), "Added", "Some 1.0.0 Summary", now.AddDays(-2));
            var changes           = new List <IChange> {
                changeVersion2, changeVersion1Pt5, changeVersion1
            };
            var expectedChanges = new List <IChange> {
                changeVersion2, changeVersion1Pt5
            };

            var filteredChanges = new FilteredChanges <IChange>(changes, minVersion, new HashSet <string>());

            Assert.That(filteredChanges, Is.EquivalentTo(expectedChanges));
        }
        public void VerifyMinVersionChangelogIsGenerated()
        {
            var minVersion = new ChangeVersion("1.0.0");
            var now        = DateTimeOffset.Now;
            var yesterday  = now.AddDays(-1);
            var readerMock = new Mock <IGenericReader <IChange> >();
            var cacheMock  = new Mock <IChangeCache>();
            var renderer   = new StubbleBuilder().Build();
            var readers    = new List <IGenericReader <IChange> >
            {
                readerMock.Object
            };
            var expectedChanges = new List <IChange>
            {
                new DefaultChange(new ChangeVersion("1.0.0"), "Added", "Added some other change", now),
                new DefaultChange(new ChangeVersion("1.0.0"), "Removed", "Removed some other change", now)
            };
            var allChanges = new List <IChange>(expectedChanges)
            {
                new DefaultChange(new ChangeVersion("0.1.0"), "Added", "Added some change", yesterday),
                new DefaultChange(new ChangeVersion("0.1.0"), "Removed", "Removed some change", yesterday)
            };
            var expectedValueDictionary = ToValueDictionary(expectedChanges);

            readerMock.Setup(r => r.Values()).Returns(allChanges);
            cacheMock.Setup(c => c.Add(It.Is <IEnumerable <IChange> >(changes => changes.SequenceEqual(expectedChanges))));
            cacheMock.Setup(c => c.GetAsValueDictionary()).Returns(expectedValueDictionary);

            var expected = $@"
## [1.0.0] - {now:yyyy-MM-dd}
### Added
- Added some other change

### Removed
- Removed some other change

";

            var generator = new StringChangelogGenerator(readers, cacheMock.Object, Template, renderer);
            var actual    = generator.Generate(minVersion);

            Assert.That(actual, Is.EqualTo(expected));
        }
예제 #13
0
        public string Generate(ChangeVersion minVersion = null, IEnumerable <string> changeTypesToExclude = null)
        {
            var toExclude = changeTypesToExclude?.ToList() ?? new List <string>();

            foreach (var reader in _readers)
            {
                var values = reader.Values();
                if (minVersion != null || toExclude.Any())
                {
                    values = new FilteredChanges <IChange>(values, minVersion, toExclude);
                }

                _cache.Add(values);
            }

            var results = _cache.GetAsValueDictionary();

            return(_renderer.Render(_template, results));
        }
        public Dictionary <string, string> Generate(ChangeVersion minVersion = null, IEnumerable <string> changeTypesToExclude = null)
        {
            var projectToCache  = new Dictionary <string, IChangeCache>();
            var projectToOutput = new Dictionary <string, string>();
            var toExclude       = changeTypesToExclude?.ToList() ?? new List <string>();

            foreach (var reader in _readers)
            {
                var values = reader.Values();
                if (minVersion != null || toExclude.Any())
                {
                    values = new FilteredChanges <ProjectChange>(values, minVersion, toExclude);
                }

                foreach (var lookup in values.ToLookup(change => change.Project))
                {
                    if (projectToCache.TryGetValue(lookup.Key, out var cache))
                    {
                        cache.Add(lookup.ToList());
                    }
                    else
                    {
                        cache = new ChangeCache();
                        cache.Add(lookup.ToList());
                        projectToCache.Add(lookup.Key, cache);
                    }
                }
            }

            foreach (var(project, cache) in projectToCache)
            {
                var output = _renderer.Render(_template, cache.GetAsValueDictionary());
                projectToOutput.Add(project, output);
            }
            return(projectToOutput);
        }
예제 #15
0
 public FilteredChanges(IEnumerable <T> changes, ChangeVersion minVersion, IEnumerable <string> changeTypesToExclude)
 {
     _changes              = changes;
     _minVersion           = minVersion;
     _changeTypesToExclude = changeTypesToExclude.Select(tag => tag.ToLower()).ToHashSet();
 }
예제 #16
0
 public override void ReadFull(BinaryReader reader, NetVersion version)
 {
     ChangeVersion.Merge(version);
 }
예제 #17
0
 public override void ReadFull(BinaryReader reader, NetVersion version)
 {
     ReadDelta(reader, version);
     CancelInterpolation();
     ChangeVersion.Merge(version);
 }
예제 #18
0
 public override void Read(BinaryReader reader, NetVersion version)
 {
     ReadDelta(reader, version);
     ChangeVersion.Merge(version);
 }