コード例 #1
0
        public void ProcessMergeTables_Test()
        {
            var(master, comps) = MakeFiles("ProcessMergeTables", 2);

            var compVMs = comps.Select((x, i) => { return(new ComponentFile()
                {
                    Database = x, Component_CN = i
                }); })
                          .ToArray();
            var commandBuilders = MergeComponentsPresenter.MakeCommandBuilders(master);

            PrepareMergeWorker.MakeMergeTables(master, commandBuilders, new System.Threading.CancellationToken(), (IProgress <int>)null, TestMergeLogWriter);

            PrepareMergeWorker.PopulateMergeTables(
                master,
                compVMs,
                commandBuilders,
                new CancellationToken(),
                (IProgress <int>)null,
                TestMergeLogWriter);

            PrepareMergeWorker.ProcessMergeTables(
                master,
                compVMs,
                commandBuilders,
                new CancellationToken(),
                (IProgress <int>)null,
                TestMergeLogWriter);
        }
コード例 #2
0
        public void RunPreMerge_Test(string masterPath, int numComps)
        {
            using (var master = GetMaster(masterPath))
            {
                var appControllerMock = AppControllerMock;
                appControllerMock.Setup(x => x.Database)
                .Returns(master);

                var cmPresenter = new MergeComponentsPresenter(appControllerMock.Object);

                cmPresenter.FindComponents(System.IO.Path.GetDirectoryName(master.Path));
                cmPresenter.MissingComponents.Should().HaveCount(0);
                cmPresenter.NumComponents.Should().Be(numComps);
                cmPresenter.IsPrepared.Should().BeFalse();

                cmPresenter.RunPreMerge().Wait();
                cmPresenter.IsPrepared.Should().BeTrue();

                if (masterPath.StartsWith("Good\\"))
                {
                    cmPresenter.GetNumConflicts().Should().Be(0);
                    cmPresenter.HasConflicts.Should().BeFalse();
                }
            }
        }
コード例 #3
0
        // test merging new tally setup added to component one
        // after merge there should be new samplegroups and tally setup in master and component 2
        public void PerformMergeTest_newCountTree2()
        {
            var masterPath = TESTMERGENEWCOUNTS2_MASTER;
            var numComps   = 2;

            var(master, components) = FindFiles(masterPath);
            using (master)
            {
                var commandBuilders    = MergeComponentsPresenter.MakeCommandBuilders(master);
                var commandBuilderDict = commandBuilders.ToDictionary(x => x.ClientTableName);
                var mergeLog           = new TestMergeLogWriter(Output);

                PrepareMergeWorker.DoWork(master, components, commandBuilders, new System.Threading.CancellationToken(), (IProgress <int>)null, TestMergeLogWriter);

                MergeSyncWorker.DoMerge(master, components, commandBuilderDict, new System.Threading.CancellationToken(),
                                        (IProgress <int>)null,
                                        TestMergeLogWriter);

                var comp1 = components.ElementAt(0);
                var comp2 = components.ElementAt(1);

                comp2.Database.From <CountTreeDO>().Where("SampleGroup_CN > 1").Query().ToArray();

                var comp1CtCount  = comp1.Database.ExecuteScalar <int>("SELECT count(*) FROM CountTree;");
                var comp2CtCount  = comp2.Database.ExecuteScalar <int>("SELECT count(*) FROM CountTree;");
                var masterCtCount = master.ExecuteScalar <int>("SELECT count(*) FROM CountTree WHERE Component_CN IS NULL;");

                masterCtCount.Should().Be(comp1CtCount);
                comp2CtCount.Should().Be(comp1CtCount);
            }
        }
コード例 #4
0
        public MergeComponentView(MergeComponentsPresenter viewPresenter)
        {
            ViewPresenter = viewPresenter;
            InitializeComponent();

            ShowMergeInfoView();
        }
コード例 #5
0
        public PreMergeReportView(MergeComponentsPresenter viewModel)
        {
            InitializeComponent();
            ViewModel = viewModel;

            var reports = viewModel.GetPreMergeReports();

            InitializeReportTabs(reports);
        }
コード例 #6
0
        public MergeInfoView(MergeComponentsPresenter viewModel, MergeComponentView hostView)
        {
            InitializeComponent();
            ViewModel = viewModel;
            HostView  = hostView;


            UpdateMasterInfo();
            UpdateComponentInfo();
        }
コード例 #7
0
        public void InitializeTest()
        {
            WindowPresenterStub wPresenter = new WindowPresenterStub();
            using (DAL master = GetMaster())
            {
                wPresenter.Database = master;
                MergeComponentsPresenter cmPresenter = new MergeComponentsPresenter(wPresenter, null);

                Assert.IsTrue(cmPresenter.MissingComponents.Count == 0);

            }
        }
コード例 #8
0
        public void Ctor_Test(string masterPath, int numComps)
        {
            using (var master = GetMaster(masterPath))
            {
                AppControllerMock.Setup(x => x.Database)
                .Returns(master);

                var cmPresenter = new MergeComponentsPresenter(AppController);

                cmPresenter.NumComponents.Should().Be(numComps);
            }
        }
コード例 #9
0
        public void SyncDesign_Test_PullTreeDefaults()
        {
            var(master, compDbs) = MakeFiles(numComponents: 2);

            var components = compDbs.Select((x, i) => { return(new ComponentFile()
                {
                    Database = x, Component_CN = i
                }); })
                             .ToArray();
            var commandBuilders = MergeComponentsPresenter.MakeCommandBuilders(master)
                                  .ToDictionary(x => x.ClientTableName);

            var comp1     = compDbs.First();
            var comp1TDV1 = new TreeDefaultValue()
            {
                TreeDefaultValue_CN = 1000,
                Species             = "nsp1",
                PrimaryProduct      = "01",
                LiveDead            = "L",
            };

            comp1.Insert(comp1TDV1);

            MergeSyncWorker.SyncDesign(
                master,
                components,
                new System.Threading.CancellationToken(),
                (IProgress <int>)null,
                TestMergeLogWriter);

            var mastTDV1 = master.From <TreeDefaultValue>().Where($"Species = 'nsp1'").Query().FirstOrDefault();

            mastTDV1.Should().NotBeNull();
            ValidateTDVSame(mastTDV1, comp1TDV1);

            // because there should be no conflict with the CN values between the master and the component
            // the synced tdv should have the same cn value
            mastTDV1.TreeDefaultValue_CN.Should().Be(comp1TDV1.TreeDefaultValue_CN);

            var comp2     = compDbs.ElementAt(1);
            var comp2TDV1 = comp2.From <TreeDefaultValue>().Where("Species = 'nsp1'").Query().FirstOrDefault();

            ValidateTDVSame(comp2TDV1, comp2TDV1);
            comp2TDV1.TreeDefaultValue_CN.Should().Be(comp1TDV1.TreeDefaultValue_CN);

            void ValidateTDVSame(TreeDefaultValue tdv1, TreeDefaultValue tdv2)
            {
                tdv1.Species.Should().Be(tdv2.Species);
                tdv1.PrimaryProduct.Should().Be(tdv2.PrimaryProduct);
                tdv1.LiveDead.Should().Be(tdv2.LiveDead);
            }
        }
コード例 #10
0
        public void SyncDesign_Test()
        {
            var(master, comps) = MakeFiles();

            var compVMs = comps.Select((x, i) => { return(new ComponentFile()
                {
                    Database = x, Component_CN = i
                }); })
                          .ToArray();
            var commandBuilders = MergeComponentsPresenter.MakeCommandBuilders(master)
                                  .ToDictionary(x => x.ClientTableName);

            MergeSyncWorker.SyncDesign(master, compVMs, new System.Threading.CancellationToken(), null, TestMergeLogWriter);
        }
コード例 #11
0
        public void PrepareMerge_Test_With_Files(string masterPath, int numComps)
        {
            var(master, components) = FindFiles(masterPath);
            components.Should().HaveCount(numComps);
            var commandBuilders = MergeComponentsPresenter.MakeCommandBuilders(master);

            using (master)
            {
                PrepareMergeWorker.DoWork(
                    master,
                    components,
                    commandBuilders,
                    new System.Threading.CancellationToken(),
                    null,
                    new TestMergeLogWriter(Output));
            }
        }
コード例 #12
0
        public void MakeMergeTables_Test()
        {
            var(master, comps) = MakeFiles("MakeMergeTables", 2);

            var compVMs = comps.Select((x, i) => { return(new ComponentFile()
                {
                    Database = x, Component_CN = i
                }); })
                          .ToArray();
            var commandBuilders = MergeComponentsPresenter.MakeCommandBuilders(master);

            PrepareMergeWorker.MakeMergeTables(master, commandBuilders, new System.Threading.CancellationToken(), (IProgress <int>)null, TestMergeLogWriter);

            foreach (var cmd in commandBuilders)
            {
                master.CheckTableExists(cmd.MergeTableName).Should().BeTrue();
                Output.WriteLine(master.GetTableSQL(cmd.MergeTableName));
            }
        }
コード例 #13
0
        public void PerformMergeTest()
        {
            WindowPresenterStub wPresenter = new WindowPresenterStub();
            using (DAL master = GetMaster())
            {
                wPresenter.Database = master;
                MergeComponentsPresenter cmPresenter = new MergeComponentsPresenter(wPresenter, null);

                Assert.IsTrue(cmPresenter.MissingComponents.Count == 0);

                PrepareMergeWorker worker = new PrepareMergeWorker(cmPresenter);
                worker.ProgressChanged += HandleProgressChanged;

                worker.BeginWork();

                worker.Wait();

                MergeSyncWorker syncWorker = new MergeSyncWorker(cmPresenter);
                syncWorker.ProgressChanged += HandleProgressChanged;

                syncWorker.BeginWork();

                syncWorker.Wait();

            }
        }