Exemple #1
0
        public void Sort()
        {
            var comparer = new ReferentialsSort();

            var refNull = new Ref1Project {
                Label = null
            };
            var refEmpty = new Ref1Project {
                Label = string.Empty
            };
            var refInt1 = new Ref1Project {
                Label = "1"
            };
            var refInt3 = new Ref1Project {
                Label = "3"
            };
            var refInt200 = new Ref1Project {
                Label = "200"
            };
            var refInt1100 = new Ref1Project {
                Label = "1100"
            };
            var refStr_a = new Ref1Project {
                Label = "abcd"
            };
            var refStr_s = new Ref1Project {
                Label = "str"
            };

            var actualArray = new IActionReferential[] { refNull, refEmpty, refStr_a, refInt3, refStr_s, refInt200, refInt1, refInt1100 };

            Array.Sort(actualArray, comparer);

            var expectedArray = new IActionReferential[] { refInt1, refInt3, refInt200, refInt1100, refNull, refEmpty, refStr_a, refStr_s };

            CollectionAssert.AreEqual(expectedArray, actualArray);
        }
Exemple #2
0
        public void SingleComparisons()
        {
            var comparer = new ReferentialsSort();

            var refNull = new Ref1Project {
                Label = null
            };
            var refEmpty = new Ref1Project {
                Label = string.Empty
            };
            var refInt3 = new Ref1Project {
                Label = "3"
            };
            var refInt200 = new Ref1Project {
                Label = "200"
            };
            var refStr_a = new Ref1Project {
                Label = "abcd"
            };
            var refStr_s = new Ref1Project {
                Label = "str"
            };

            // null > "3"
            Assert.AreEqual(-1, comparer.Compare(refInt3, refNull));
            Assert.AreEqual(1, comparer.Compare(refNull, refInt3));

            // null < "abcd"
            Assert.AreEqual(-1, comparer.Compare(refNull, refStr_a));
            Assert.AreEqual(1, comparer.Compare(refStr_a, refNull));

            // null < ""
            Assert.AreEqual(-1, comparer.Compare(refNull, refEmpty));
            Assert.AreEqual(1, comparer.Compare(refEmpty, refNull));

            // "3" < ""
            Assert.AreEqual(-1, comparer.Compare(refInt3, refEmpty));
            Assert.AreEqual(1, comparer.Compare(refEmpty, refInt3));

            // "" < "abcd"
            Assert.AreEqual(-1, comparer.Compare(refEmpty, refStr_a));
            Assert.AreEqual(1, comparer.Compare(refStr_a, refEmpty));

            // "3" < "200"
            Assert.AreEqual(-1, comparer.Compare(refInt3, refInt200));
            Assert.AreEqual(1, comparer.Compare(refInt200, refInt3));

            // "3" < "abcd"
            Assert.AreEqual(-1, comparer.Compare(refInt3, refStr_a));
            Assert.AreEqual(1, comparer.Compare(refStr_a, refInt3));

            // "abcd" < "str"
            Assert.AreEqual(-1, comparer.Compare(refStr_a, refStr_s));
            Assert.AreEqual(1, comparer.Compare(refStr_s, refStr_a));

            // Egalités
            Assert.AreEqual(0, comparer.Compare(refNull, refNull));
            Assert.AreEqual(0, comparer.Compare(refEmpty, refEmpty));
            Assert.AreEqual(0, comparer.Compare(refInt3, refInt3));
            Assert.AreEqual(0, comparer.Compare(refInt200, refInt200));
            Assert.AreEqual(0, comparer.Compare(refStr_a, refStr_a));
            Assert.AreEqual(0, comparer.Compare(refStr_s, refStr_s));
        }
Exemple #3
0
        public void MergeMultipleReferentialsTest()
        {
            SampleData.ClearDatabase();
            // Importer le projet une deuxième fois
            SampleData.ImportProject(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("KProcess.Ksmed.Business.Tests.Resources.MergeMultipleReferentials.ksp"));
            SampleData.ImportProject(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("KProcess.Ksmed.Business.Tests.Resources.MergeMultipleReferentials.ksp"));

            // Mémoriser les Ref1 de chaque tâche de chaque projet

            var projects    = GetAllProjectDetails().ToArray();
            var actionsRef1 = projects.SelectMany(p => p.Scenarios.SelectMany(s => s.Actions.SelectMany(a => a.Ref1))).ToDictionary(al => al.ActionId, al => al.Referential.Label);

            // Créer un référentiel standard pour chaque ref1
            var masterSlaves = new Dictionary <Ref1Standard, Ref1Project[]>();

            foreach (var ref1 in projects[0].Project.Ref1)
            {
                var standard = new Ref1Standard
                {
                    Label = ref1.Label,
                };

                masterSlaves[standard] = new Ref1Project[]
                {
                    ref1,
                    projects[1].Project.Ref1.First(r => r.Label == ref1.Label),
                };

                new ReferentialsService().SaveReferentials <Ref1>(new Ref1Standard[]
                {
                    standard,
                });
            }

            // Merger chaque ref standard avec les deux ref projets
            var service = new ReferentialsService();

            foreach (var standard in masterSlaves.Keys)
            {
                // Copier pour éviter les références inutiles
                var std = new Ref1Standard
                {
                    RefId = standard.RefId,
                };
                standard.MarkAsUnchanged();

                var slaves = masterSlaves[standard].Select(s => new Ref1Project {
                    RefId = s.RefId
                }).ToArray();
                foreach (var slave in slaves)
                {
                    slave.MarkAsUnchanged();
                }

                service.MergeReferentials(std, slaves);
            }

            // Vérifier que les référentiels des tâches correspondent
            projects = GetAllProjectDetails().ToArray();
            var actionsRef1Final = projects.SelectMany(p => p.Scenarios.SelectMany(s => s.Actions.SelectMany(a => a.Ref1))).ToDictionary(al => al.ActionId, al => al.Referential.Label);

            CollectionAssert.AreEquivalent(actionsRef1, actionsRef1Final);
        }