예제 #1
0
 // --------------------------------------------------------------------------------------------------------------------------
 private static void TestDiffGram <T>(DiffGram <T> diff, bool expectedSame, int expectedSameCount, int expectedUniqueLeft,
                                      int expectedUniqueRight)
 {
     Assert.AreEqual(expectedSame, diff.AllAreSame, "The 'AllMatching' flag should be set to '{0}'", expectedSame);
     Assert.AreEqual(expectedSameCount, diff.Same.Count, "All items should be the same!");
     Assert.AreEqual(expectedUniqueLeft, diff.UniqueLeft.Count, "There should be no unique items on the left!");
     Assert.AreEqual(expectedUniqueRight, diff.UniqueRight.Count, "There should be no unique items on the right!");
 }
예제 #2
0
        public void CanComputeSameDiffgram()
        {
            List <string> left;
            List <string> right;

            CreateStringLists(out left, out right);

            DiffGram <string> diff = IEnumHelper.ComputeDiff(left, right);

            TestDiffGram(diff, true, left.Count, 0, 0);
        }
예제 #3
0
        public void CanFindLeftDiffs()
        {
            List <int> left;
            List <int> right;

            CreateIntLists(out left, out right);

            left.AddRange(new[] { 5, 6, 7 });
            DiffGram <int> diff = IEnumHelper.ComputeDiff(left, right);

            TestDiffGram(diff, false, 3, 3, 0);
        }
예제 #4
0
        public void CanFindMixedDiffs()
        {
            List <string> left;
            List <string> right;

            CreateStringLists(out left, out right);

            left.AddRange(new[] { "l1", "l2", "l3" });
            right.AddRange(new[] { "r1", "r2", "r3" });

            DiffGram <string> diff = IEnumHelper.ComputeDiff(left, right);

            TestDiffGram(diff, false, 3, 3, 3);
        }
예제 #5
0
        public void CanFindAllDiffs()
        {
            List <string> left = new List <string>()
            {
                "a", "b", "c"
            };
            List <string> right = new List <string>()
            {
                "d", "e", "f"
            };

            DiffGram <string> diff = IEnumHelper.ComputeDiff(left, right);

            TestDiffGram(diff, false, 0, 3, 3);
        }
예제 #6
0
 protected virtual void TrackChangesToEntity(RowInfo rowInfo)
 {
     if (!rowInfo.dbSetInfo.isTrackChanges)
     {
         return;
     }
     try
     {
         string diffgram = DiffGram.GetDiffGram(rowInfo.changeState.OriginalEntity, rowInfo.changeState.Entity, rowInfo.dbSetInfo.EntityType, rowInfo.changeState.NamesOfChangedFields);
         this.OnTrackChange(rowInfo.dbSetInfo.dbSetName, rowInfo.changeType, diffgram);
     }
     catch (Exception ex)
     {
         this.OnError(ex);
     }
 }
예제 #7
0
        protected virtual void TrackChangesToEntity(RowInfo rowInfo)
        {
            if (!rowInfo.dbSetInfo.isTrackChanges)
            {
                return;
            }

            try
            {
                string[] changed  = rowInfo.changeType == ChangeType.Deleted ? rowInfo.dbSetInfo.GetNames().Select(f => f.n).ToArray() : rowInfo.changeState.NamesOfChangedFields;
                var      diffgram = DiffGram.GetDiffGram(rowInfo.changeState.OriginalEntity,
                                                         rowInfo.changeType == ChangeType.Deleted ? null : rowInfo.changeState.Entity,
                                                         rowInfo.dbSetInfo.EntityType,
                                                         changed);
                OnTrackChange(rowInfo.dbSetInfo.dbSetName, rowInfo.changeType, diffgram);
            }
            catch (Exception ex)
            {
                _OnError(ex);
            }
        }
예제 #8
0
        protected virtual void TrackChangesToEntity(RowInfo rowInfo)
        {
            DbSetInfo dbSetInfo = rowInfo.GetDbSetInfo();

            if (!dbSetInfo.GetIsTrackChanges())
            {
                return;
            }

            try
            {
                string[] changed = new string[0];
                switch (rowInfo.changeType)
                {
                case ChangeType.Updated:
                {
                    changed = rowInfo.GetChangeState().ChangedFieldNames;
                }
                break;

                default:
                {
                    changed = dbSetInfo.GetNames().Select(f => f.n).ToArray();
                }
                break;
                }

                string[] pknames  = dbSetInfo.GetPKFields().Select(f => f.fieldName).ToArray();
                string   diffgram = DiffGram.GetDiffGram(rowInfo.GetChangeState().OriginalEntity,
                                                         rowInfo.changeType == ChangeType.Deleted ? null : rowInfo.GetChangeState().Entity,
                                                         dbSetInfo.GetEntityType(), changed, pknames, rowInfo.changeType, dbSetInfo.dbSetName);

                OnTrackChange(dbSetInfo.dbSetName, rowInfo.changeType, diffgram);
            }
            catch (Exception ex)
            {
                _OnError(ex);
            }
        }