Clone() публичный Метод

Returns a MonotonicVersioner with an identical chronology, but which can advance its versions separately.

public Clone ( ) : MonotonicVersioner
Результат MonotonicVersioner
        public void General_Clone()
        {
            var seed = new SemanticVersion[]
            {
                new SemanticVersion(1, 0),
                new SemanticVersion(1, 1),
                new SemanticVersion(1, 2),
                new SemanticVersion(2, 3),
                new SemanticVersion(2, 4),
                new SemanticVersion(3, 5),
                new SemanticVersion(1, 6),
            };

            var mv0 = new MonotonicVersioner(seed);


            // Here we go.
            var mv1 = mv0.Clone();

            // The instances should not be the same instance.
            Assert.IsFalse(object.ReferenceEquals(mv0, mv1));

            // But they should start with the same chronology.
            Assert.IsTrue(mv0.Chronology.SequenceEqual(mv1.Chronology));

            // And should have the same values for other properties.
            Assert.AreEqual(mv0.Latest, mv1.Latest);
            Assert.AreEqual(mv0.Compatibility, mv1.Compatibility);
            Assert.AreEqual(mv0.Release, mv1.Release);
            Assert.IsTrue(mv0.LatestVersions.SequenceEqual(mv1.LatestVersions));

            // But if we advance one, it shouldn't affect the other.
            var mv1_lat = mv1.Latest;

            mv0.Next(MonotonicChange.Compatible);
            Assert.AreEqual(new SemanticVersion(1, 7), mv0.Latest);
            Assert.AreEqual(mv1_lat, mv1.Latest);
            Assert.AreNotEqual(mv0.Latest, mv1.Latest);

            var mv0_lat = mv0.Latest;

            mv1.Next(MonotonicChange.Breaking);
            Assert.AreEqual(new SemanticVersion(4, 7), mv1.Latest);
            Assert.AreEqual(mv0_lat, mv0.Latest);
            Assert.AreNotEqual(mv0.Latest, mv1.Latest);
        }
        public void General_Clone()
        {
            var seed = new SemanticVersion[]
            {
                new SemanticVersion(1, 0),
                new SemanticVersion(1, 1),
                new SemanticVersion(1, 2),
                new SemanticVersion(2, 3),
                new SemanticVersion(2, 4),
                new SemanticVersion(3, 5),
                new SemanticVersion(1, 6),
            };

            var mv0 = new MonotonicVersioner(seed);


            // Here we go.
            var mv1 = mv0.Clone();

            // The instances should not be the same instance.
            Assert.IsFalse(object.ReferenceEquals(mv0, mv1));

            // But they should start with the same chronology.
            Assert.IsTrue(mv0.Chronology.SequenceEqual(mv1.Chronology));

            // And should have the same values for other properties.
            Assert.AreEqual(mv0.Latest, mv1.Latest);
            Assert.AreEqual(mv0.Compatibility, mv1.Compatibility);
            Assert.AreEqual(mv0.Release, mv1.Release);
            Assert.IsTrue(mv0.LatestVersions.SequenceEqual(mv1.LatestVersions));

            // But if we advance one, it shouldn't affect the other.
            var mv1_lat = mv1.Latest;
            mv0.Next(MonotonicChange.Compatible);
            Assert.AreEqual(new SemanticVersion(1, 7), mv0.Latest);
            Assert.AreEqual(mv1_lat, mv1.Latest);
            Assert.AreNotEqual(mv0.Latest, mv1.Latest);

            var mv0_lat = mv0.Latest;
            mv1.Next(MonotonicChange.Breaking);
            Assert.AreEqual(new SemanticVersion(4, 7), mv1.Latest);
            Assert.AreEqual(mv0_lat, mv0.Latest);
            Assert.AreNotEqual(mv0.Latest, mv1.Latest);
        }