예제 #1
0
        public void CanRevert()
        {
            var elementFirst = Persister.Commit(new VcsCommit {
                File = new FileDescriptor {
                    Path = "test"
                }
            }, GenerateStreamFromString("test data"));
            var elementSecond = Persister.Commit(new VcsCommit {
                File = new FileDescriptor {
                    Path = "test"
                }
            }, GenerateStreamFromString("SOMETESTDATA"));
            var elementThird = Persister.Commit(new VcsCommit {
                File = new FileDescriptor {
                    Path = "test"
                }
            }, GenerateStreamFromString("ANOTHERDTA"));

            var picked = Persister.Pick(new VcsCommit {
                File = new FileDescriptor {
                    Path = "test"
                }
            });

            Assert.IsNotNull(picked);
            var sr      = new StreamReader(picked);
            var content = sr.ReadToEnd();

            sr.Close();

            Assert.AreEqual("ANOTHERDTA", content);
            Persister.Revert(elementSecond);
            picked = Persister.Pick(new VcsCommit {
                File = new FileDescriptor {
                    Path = "test"
                }
            });
            content = new StreamReader(picked).ReadToEnd();
            Assert.AreEqual("SOMETESTDATA", content);
            // выражает то, что изначально у на было три элемента, а после реверта стало 4, т.е.
            // ревер не сносит все старшие комиты, а накатывает поверх
            Assert.AreEqual(4, Persister.Count(new FileDescriptor {
                Path = "test"
            }));
        }