示例#1
0
            public string CreateDiff()
            {
                var encoding = Encoding.GetEncoding(1252);
                var diff     = new DbfDiff(new Dbf(Original, encoding), new Dbf(Modified, encoding));

                return(diff.Serialize());
            }
示例#2
0
        public void ApplyTest()
        {
            _modified.Records.Add(_modified.Records[0]);                                           // add
            _modified.DeleteRecord(_modified.Records[1]);                                          // delete
            _modified.Records[0][_modified.Fields[1]] = "401";                                     // update
            _modified.Records[2]["OPIS"] = _modified.CreateMemoEntry("This is a new memo entry!"); // update memo

            var diff = new DbfDiff(_original, _modified);

            // serialize to string
            string serializedDiff = diff.Serialize();

            // get instance from json
            diff = DbfDiff.Deserialize(_original.Fields, serializedDiff);

            diff.ApplyTo(_original);
            _original.Save();

            Assert.IsFalse(diff.HasChanges);

            _original = new Dbf(Path.Combine(".\\fixtures\\_Original", DbfName), _encoding);

            diff = new DbfDiff(_original, _modified);
            Assert.IsFalse(diff.HasChanges);
        }
示例#3
0
        public void UpdateMemoTest()
        {
            _modified.Records[2]["OPIS"] = _modified.CreateMemoEntry("This is new memo entry!");
            var diff = new DbfDiff(_original, _modified);

            Assert.IsTrue(diff.Updated.Count == 1);
            Assert.IsTrue(diff.Updated.ContainsKey(2));
        }
示例#4
0
        public void UpdateTest()
        {
            _modified.Records[0][_modified.Fields[1]] = "401";
            var diff = new DbfDiff(_original, _modified);

            Assert.IsTrue(diff.HasChanges);
            Assert.IsTrue(diff.Updated.Count == 1);
            Assert.IsTrue(diff.Updated.ContainsKey(0));
        }
示例#5
0
        public void InsertTest()
        {
            _modified.Records.Add(_modified.Records[0]);
            var diff = new DbfDiff(_original, _modified);

            Assert.IsTrue(diff.HasChanges);
            Assert.IsTrue(diff.Inserted.Count == 1);
            Assert.IsTrue(_modified.Records[0].Equals(_modified.Records[_modified.Records.Count - 1]));
        }
示例#6
0
        private static void Patch(string pathToDb, string pathToPatch, Encoding encoding)
        {
            var dbf = new Dbf(pathToDb, encoding);

            DbfDiff diff = DbfDiff.Deserialize(dbf.Fields, File.ReadAllText(pathToPatch));

            diff.ApplyTo(dbf);

            dbf.Save();
        }
示例#7
0
        public void DeleteTest()
        {
            Assert.IsFalse(_modified.Records[1].IsDeleted);

            _modified.DeleteRecord(_modified.Records[1]);
            var diff = new DbfDiff(_original, _modified);

            Assert.IsTrue(diff.HasChanges);
            Assert.IsTrue(diff.Deleted.Count == 1);
        }
示例#8
0
            public void Apply()
            {
                if (!File.Exists(Path))
                {
                    return;
                }

                var dbf  = new Dbf(Path, Encoding.GetEncoding(1252));
                var diff = DbfDiff.Deserialize(dbf.Fields, _serializedDiff);

                diff.ApplyTo(dbf);
                dbf.Save();
            }
示例#9
0
        private static void PrintDiff(string dbfName, string pathToOriginal, string pathToModified, Encoding encoding)
        {
            DbfDiff diff = DbfDiff.Create(dbfName, pathToOriginal, pathToModified, encoding);

            Console.WriteLine(diff.Serialize());
        }