Example #1
0
        public void TestMergeAddAndRemove()
        {
            ICollection <MergeTestData> toRemove = new List <MergeTestData>();
            ICollection <MergeTestData> toAdd    = new List <MergeTestData>();

            Merge.ThreeWay(
                reference: MergeTestData.BuildList("a", "b", "c"),
                theirs: MergeTestData.BuildList("a", "b", "d"),
                mine: MergeTestData.BuildList("a", "c", "e"),
                added: toAdd, removed: toRemove);

            toAdd.Should().Equal(MergeTestData.BuildList("d"));
            toRemove.Should().Equal(MergeTestData.BuildList("c"));
        }
Example #2
0
        public void TestMergeModify()
        {
            var reference = MergeTestData.BuildList("a", "b", "c", "d", "e");
            var theirs    = new[]
            {
                new MergeTestData {
                    MergeID = "a"
                },
                new MergeTestData {
                    MergeID = "b", Data = "123", Timestamp = new DateTime(2000, 1, 1)
                },
                new MergeTestData {
                    MergeID = "c"
                },
                new MergeTestData {
                    MergeID = "d", Data = "456", Timestamp = new DateTime(2000, 1, 1)
                },
                new MergeTestData {
                    MergeID = "e", Data = "789", Timestamp = new DateTime(2999, 1, 1)
                }
            };
            var mine = new[]
            {
                new MergeTestData {
                    MergeID = "a"
                },
                new MergeTestData {
                    MergeID = "b"
                },
                new MergeTestData {
                    MergeID = "c", Data = "abc", Timestamp = new DateTime(2000, 1, 1)
                },
                new MergeTestData {
                    MergeID = "d", Data = "def", Timestamp = new DateTime(2999, 1, 1)
                },
                new MergeTestData {
                    MergeID = "e", Data = "ghi", Timestamp = new DateTime(2000, 1, 1)
                }
            };

            ICollection <MergeTestData> toRemove = new List <MergeTestData>();
            ICollection <MergeTestData> toAdd    = new List <MergeTestData>();

            Merge.ThreeWay(reference, theirs, mine, toAdd, toRemove);

            toRemove.Should().Equal(mine[1], mine[4]);
            toAdd.Should().Equal(theirs[1], theirs[4]);
        }
        public void PersonMerge()
        {
            var singlePersonMergeData = new MergeTestData
            {
                FullName = "Johnny Rockets, King of the Dinosaurs",
                Things   =
                    new List <MergeTestData.Thing>(
                        new[]
                {
                    new MergeTestData.Thing {
                        TheValue = "Something"
                    }, new MergeTestData.Thing {
                        TheValue = "Another thing"
                    },
                    new MergeTestData.Thing {
                        TheValue = "One more thing"
                    }, new MergeTestData.Thing {
                        TheValue = "Last thing"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Okay THIS is the last thing"
                    }, new MergeTestData.Thing {
                        TheValue = "Something again"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Another thing again"
                    }, new MergeTestData.Thing {
                        TheValue = "One more thing again"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Last thing again"
                    }, new MergeTestData.Thing {
                        TheValue = "Okay THIS is the last thing again"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Something one more time"
                    }, new MergeTestData.Thing {
                        TheValue = "Another thing one more time"
                    },
                    new MergeTestData.Thing {
                        TheValue = "One more thing one more time"
                    }, new MergeTestData.Thing {
                        TheValue = "Last thing one more time"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Okay THIS is the last thing one more time"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Something that is getting old"
                    }, new MergeTestData.Thing {
                        TheValue = "Another thing that is getting old"
                    },
                    new MergeTestData.Thing {
                        TheValue = "One more thing that is getting old"
                    }, new MergeTestData.Thing {
                        TheValue = "Last thing that is getting old"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Okay THIS is the last thing that is getting old"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Something about the end of all things"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Another thing about the end of all things"
                    },
                    new MergeTestData.Thing {
                        TheValue = "One more thing about the end of all things"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Last thing about the end of all things"
                    },
                    new MergeTestData.Thing {
                        TheValue = "Okay THIS is the last thing about the end of all things"
                    },
                })
            };

            var mergingInfoFields       = new List <MergeField <MergeTestData> >(new[] { MergeFieldOps.CreateBasicField(new FullName()) });
            var internalTableDataFields = new List <MergeField <MergeTestData.Thing> >(new[] { MergeFieldOps.CreateBasicField(new TheValue()) });

            var mergeTree = MergeDataTreeOps.CreateRowTree(
                mergingInfoFields.AsReadOnly(),
                singlePersonMergeData.ToSingleElementArray(),
                new List <MergeDataTreeChild <MergeTestData> >
            {
                new MergeDataTreeChild <MergeTestData, MergeTestData.Thing>("Things", internalTableDataFields.AsReadOnly(), info => info.Things)
            }.AsReadOnly());

            using (var templateStream = File.OpenRead(testingWordTemplatePath)) {
                using (var destinationStream = File.Create(getFilePath("basic_merge_test"))) {
                    MergeOps.CreateMsWordDoc(mergeTree, true, templateStream, destinationStream);
                    doneCreating = DateTime.Now;
                }
            }
        }