示例#1
0
        public void GivenRelationExistsBetweenElementsWhenFindRelationsWhereElementHasConsumerRoleThenReturnsRelationFromConsumers()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);

            List <IDsmRelation> relations = model.FindOutgoingRelations(_a).OrderBy(x => x.Id).ToList();

            Assert.AreEqual(5, relations.Count);

            Assert.AreEqual(_a1.Id, relations[0].ConsumerId);
            Assert.AreEqual(_b1.Id, relations[0].ProviderId);
            Assert.AreEqual(1000, relations[0].Weight);

            Assert.AreEqual(_a2.Id, relations[1].ConsumerId);
            Assert.AreEqual(_b1.Id, relations[1].ProviderId);
            Assert.AreEqual(200, relations[1].Weight);

            Assert.AreEqual(_a1.Id, relations[2].ConsumerId);
            Assert.AreEqual(_b2.Id, relations[2].ProviderId);
            Assert.AreEqual(30, relations[2].Weight);

            Assert.AreEqual(_a2.Id, relations[3].ConsumerId);
            Assert.AreEqual(_b2.Id, relations[3].ProviderId);
            Assert.AreEqual(4, relations[3].Weight);

            Assert.AreEqual(_a1.Id, relations[4].ConsumerId);
            Assert.AreEqual(_c2.Id, relations[4].ProviderId);
            Assert.AreEqual(5, relations[4].Weight);
        }
示例#2
0
        public void GivenNoCycleExistsBetweenElementsWhenIsCyclicDependencyThenReturnsFalse()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);

            Assert.AreEqual(5, model.GetDependencyWeight(_a1.Id, _c2.Id));
            Assert.AreEqual(0, model.GetDependencyWeight(_c2.Id, _a1.Id));
            Assert.AreEqual(CycleType.None, model.IsCyclicDependency(_a1.Id, _c2.Id));
        }
示例#3
0
        public void GivenDirectCycleExistsBetweenElementsWhenIsCyclicDependencyThenReturnsCycleTypeSystem()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);

            Assert.AreEqual(1, model.GetDirectDependencyWeight(_c1.Id, _c2.Id));
            Assert.AreEqual(1, model.GetDirectDependencyWeight(_c2.Id, _c1.Id));
            Assert.AreEqual(CycleType.System, model.IsCyclicDependency(_c1.Id, _c2.Id));
        }
示例#4
0
        public void GivenIndirectCycleExistsBetweenElementsWhenIsCyclicDependencyThenReturnsCycleTypeHierarchical()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);

            Assert.AreEqual(1234, model.GetDependencyWeight(_a.Id, _b.Id));
            Assert.AreEqual(5, model.GetDependencyWeight(_b.Id, _a.Id));
            Assert.AreEqual(CycleType.Hierarchical, model.IsCyclicDependency(_a.Id, _b.Id));
        }
示例#5
0
        public void GivenModelIsEmptyWhenImportRelationIsCalledThenItsHasOneRelation()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.GetExportedRelationCount());

            IDsmRelation relation = model.ImportRelation(1, _a.Id, _b.Id, "type", 1, false);

            Assert.IsNotNull(relation);

            Assert.AreEqual(1, model.GetExportedRelationCount());
        }
示例#6
0
        public void GivenMatrixIsFilledWhenRootElementParentIsChangedThenWeightsAreUpdated()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);

            Assert.AreEqual(1234, model.GetDependencyWeight(_a.Id, _b.Id));

            _elementsDataModel.ChangeElementParent(_c, _b);

            Assert.AreEqual(1239, model.GetDependencyWeight(_a.Id, _b.Id));
        }
示例#7
0
        public void GivenModelIsFilledWhenGetWeightWithSelfThenReturnsZero()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);
            Assert.AreEqual(11, model.GetExportedRelationCount());

            foreach (IDsmElement element in _elementsDataModel.GetElements())
            {
                Assert.AreEqual(0, model.GetDependencyWeight(element.Id, element.Id));
            }
        }
示例#8
0
        public void GivenModelIsNotEmptyWhenClearIsCalledThenItIsEmpty()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.GetExportedRelationCount());

            model.AddRelation(_a.Id, _b.Id, "type", 1);
            Assert.AreEqual(1, model.GetExportedRelationCount());

            model.Clear();

            Assert.AreEqual(0, model.GetExportedRelationCount());
        }
示例#9
0
        public void GivenModelIsFilledWhenUnremovingRelationThenRestoresCalculatedDerivedWeights()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);

            Assert.AreEqual(1000, model.GetDependencyWeight(_a1.Id, _b1.Id));
            Assert.AreEqual(200, model.GetDependencyWeight(_a2.Id, _b1.Id));
            Assert.AreEqual(30, model.GetDependencyWeight(_a1.Id, _b2.Id));
            Assert.AreEqual(4, model.GetDependencyWeight(_a2.Id, _b2.Id));

            Assert.AreEqual(1030, model.GetDependencyWeight(_a1.Id, _b.Id));
            Assert.AreEqual(204, model.GetDependencyWeight(_a2.Id, _b.Id));
            Assert.AreEqual(1200, model.GetDependencyWeight(_a.Id, _b1.Id));
            Assert.AreEqual(34, model.GetDependencyWeight(_a.Id, _b2.Id));

            Assert.AreEqual(1234, model.GetDependencyWeight(_a.Id, _b.Id));

            IDsmRelation relation = model.FindRelations(_a2, _b2).FirstOrDefault();

            Assert.IsNotNull(relation);

            model.RemoveRelation(relation.Id);

            Assert.AreEqual(1000, model.GetDependencyWeight(_a1.Id, _b1.Id));
            Assert.AreEqual(200, model.GetDependencyWeight(_a2.Id, _b1.Id));
            Assert.AreEqual(30, model.GetDependencyWeight(_a1.Id, _b2.Id));
            Assert.AreEqual(0, model.GetDependencyWeight(_a2.Id, _b2.Id));

            Assert.AreEqual(1030, model.GetDependencyWeight(_a1.Id, _b.Id));
            Assert.AreEqual(200, model.GetDependencyWeight(_a2.Id, _b.Id));
            Assert.AreEqual(1200, model.GetDependencyWeight(_a.Id, _b1.Id));
            Assert.AreEqual(30, model.GetDependencyWeight(_a.Id, _b2.Id));

            Assert.AreEqual(1230, model.GetDependencyWeight(_a.Id, _b.Id));

            model.UnremoveRelation(relation.Id);

            Assert.AreEqual(1000, model.GetDependencyWeight(_a1.Id, _b1.Id));
            Assert.AreEqual(200, model.GetDependencyWeight(_a2.Id, _b1.Id));
            Assert.AreEqual(30, model.GetDependencyWeight(_a1.Id, _b2.Id));
            Assert.AreEqual(4, model.GetDependencyWeight(_a2.Id, _b2.Id));

            Assert.AreEqual(1030, model.GetDependencyWeight(_a1.Id, _b.Id));
            Assert.AreEqual(204, model.GetDependencyWeight(_a2.Id, _b.Id));
            Assert.AreEqual(1200, model.GetDependencyWeight(_a.Id, _b1.Id));
            Assert.AreEqual(34, model.GetDependencyWeight(_a.Id, _b2.Id));

            Assert.AreEqual(1234, model.GetDependencyWeight(_a.Id, _b.Id));
        }
示例#10
0
        public void GivenModelIsFilledWhenRemovingRelationThenReducesRelationCount()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);
            int relationCountBefore = model.GetRelationCount();

            IDsmRelation relation = model.FindRelations(_a2, _b2).FirstOrDefault();

            Assert.IsNotNull(relation);

            model.RemoveRelation(relation.Id);
            Assert.AreEqual(relationCountBefore - 1, model.GetRelationCount());
        }
示例#11
0
        private void CreateElementRelations(DsmRelationModel relationsDataModel)
        {
            relationsDataModel.AddRelation(_a1.Id, _a2.Id, "", 1);

            relationsDataModel.AddRelation(_a1.Id, _b1.Id, "", 1000);
            relationsDataModel.AddRelation(_a2.Id, _b1.Id, "", 200);
            relationsDataModel.AddRelation(_a1.Id, _b2.Id, "", 30);
            relationsDataModel.AddRelation(_a2.Id, _b2.Id, "", 4);

            relationsDataModel.AddRelation(_a1.Id, _c2.Id, "", 5);

            relationsDataModel.AddRelation(_b2.Id, _a1.Id, "", 2);
            relationsDataModel.AddRelation(_b2.Id, _a2.Id, "", 3);
            relationsDataModel.AddRelation(_c1.Id, _a2.Id, "", 4);

            relationsDataModel.AddRelation(_c1.Id, _c2.Id, "", 1);
            relationsDataModel.AddRelation(_c2.Id, _c1.Id, "", 1);
        }
示例#12
0
        public void GivenModelIsFilledWhenGetWeightWithOtherThenReturnsCalculatedDerivedWeights()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);

            Assert.AreEqual(1000, model.GetDependencyWeight(_a1.Id, _b1.Id));
            Assert.AreEqual(200, model.GetDependencyWeight(_a2.Id, _b1.Id));
            Assert.AreEqual(30, model.GetDependencyWeight(_a1.Id, _b2.Id));
            Assert.AreEqual(4, model.GetDependencyWeight(_a2.Id, _b2.Id));

            Assert.AreEqual(1030, model.GetDependencyWeight(_a1.Id, _b.Id));
            Assert.AreEqual(204, model.GetDependencyWeight(_a2.Id, _b.Id));
            Assert.AreEqual(1200, model.GetDependencyWeight(_a.Id, _b1.Id));
            Assert.AreEqual(34, model.GetDependencyWeight(_a.Id, _b2.Id));

            Assert.AreEqual(1234, model.GetDependencyWeight(_a.Id, _b.Id));
        }
示例#13
0
        public void GivenModelIsFilledWhenChangeRelationWeightThenUpdatesCalculatedDerivedWeights()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            CreateElementRelations(model);

            Assert.AreEqual(1000, model.GetDependencyWeight(_a1.Id, _b1.Id));
            Assert.AreEqual(200, model.GetDependencyWeight(_a2.Id, _b1.Id));
            Assert.AreEqual(30, model.GetDependencyWeight(_a1.Id, _b2.Id));
            Assert.AreEqual(4, model.GetDependencyWeight(_a2.Id, _b2.Id));

            Assert.AreEqual(1030, model.GetDependencyWeight(_a1.Id, _b.Id));
            Assert.AreEqual(204, model.GetDependencyWeight(_a2.Id, _b.Id));
            Assert.AreEqual(1200, model.GetDependencyWeight(_a.Id, _b1.Id));
            Assert.AreEqual(34, model.GetDependencyWeight(_a.Id, _b2.Id));

            Assert.AreEqual(1234, model.GetDependencyWeight(_a.Id, _b.Id));

            IDsmRelation relation = model.FindRelations(_a2, _b2).FirstOrDefault();

            Assert.IsNotNull(relation);

            model.ChangeRelationWeight(relation, 5);

            Assert.AreEqual(1000, model.GetDependencyWeight(_a1.Id, _b1.Id));
            Assert.AreEqual(200, model.GetDependencyWeight(_a2.Id, _b1.Id));
            Assert.AreEqual(30, model.GetDependencyWeight(_a1.Id, _b2.Id));
            Assert.AreEqual(5, model.GetDependencyWeight(_a2.Id, _b2.Id));

            Assert.AreEqual(1030, model.GetDependencyWeight(_a1.Id, _b.Id));
            Assert.AreEqual(205, model.GetDependencyWeight(_a2.Id, _b.Id));
            Assert.AreEqual(1200, model.GetDependencyWeight(_a.Id, _b1.Id));
            Assert.AreEqual(35, model.GetDependencyWeight(_a.Id, _b2.Id));

            Assert.AreEqual(1235, model.GetDependencyWeight(_a.Id, _b.Id));
        }
示例#14
0
        public void WhenModelIsConstructedThenItIsEmpty()
        {
            DsmRelationModel model = new DsmRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.GetExportedRelationCount());
        }