Exemplo n.º 1
0
        public void GivenMultipleElementAreInTheModelWhenAnElementIsRemovedThenAllRelationUsingThisElementAreRemoved()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation1 = model.AddRelation("a", "b", "type1", 1, "");

            Assert.IsNotNull(relation1);
            IDsiRelation relation2 = model.AddRelation("b", "c", "type2", 2, "");

            Assert.IsNotNull(relation2);
            IDsiRelation relation3 = model.AddRelation("a", "c", "type3", 3, "");

            Assert.IsNotNull(relation3);
            Assert.AreEqual(3, model.TotalRelationCount);

            _elementsDataModel.RemoveElement(_b);
            Assert.AreEqual(1, model.TotalRelationCount);

            List <IDsiRelation> relations = model.GetRelations().OrderBy(x => x.Weight).ToList();

            Assert.AreEqual(1, relations.Count);

            Assert.AreEqual(_a.Id, relations[0].ConsumerId);
            Assert.AreEqual(_c.Id, relations[0].ProviderId);
            Assert.AreEqual("type3", relations[0].Type);
            Assert.AreEqual(3, relations[0].Weight);
        }
Exemplo n.º 2
0
        public void GivenAnRelationIsInTheModelWhenAddRelationIsCalledAgainForThatRelationThenItsHasOneRelationButWeightHasIncreased()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation1 = model.AddRelation(_a.Name, _b.Name, "type", 2, "context");

            Assert.IsNotNull(relation1);

            Assert.AreEqual(1, model.TotalRelationCount);

            List <IDsiRelation> relationsBefore = model.GetRelationsOfConsumer(_a.Id).ToList();

            Assert.AreEqual(1, relationsBefore.Count);
            Assert.AreEqual(_a.Id, relationsBefore[0].ConsumerId);
            Assert.AreEqual(_b.Id, relationsBefore[0].ProviderId);
            Assert.AreEqual("type", relationsBefore[0].Type);
            Assert.AreEqual(2, relationsBefore[0].Weight);

            IDsiRelation relation2 = model.AddRelation(_a.Name, _b.Name, "type", 3, "context");

            Assert.IsNotNull(relation2);

            Assert.AreEqual(1, model.TotalRelationCount);

            List <IDsiRelation> relationsAfter = model.GetRelationsOfConsumer(_a.Id).ToList();

            Assert.AreEqual(1, relationsAfter.Count);
            Assert.AreEqual(_a.Id, relationsAfter[0].ConsumerId);
            Assert.AreEqual(_b.Id, relationsAfter[0].ProviderId);
            Assert.AreEqual("type", relationsAfter[0].Type);
            Assert.AreEqual(5, relationsAfter[0].Weight);
        }
Exemplo n.º 3
0
        public void GivenMultipleElementAreInTheModelWhenGetElementsIsCalledTheyAreAllReturned()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation1 = model.ImportRelation(_a.Id, _b.Id, "type1", 1);

            Assert.IsNotNull(relation1);
            IDsiRelation relation2 = model.ImportRelation(_b.Id, _c.Id, "type2", 2);

            Assert.IsNotNull(relation2);
            IDsiRelation relation3 = model.ImportRelation(_a.Id, _c.Id, "type3", 3);

            Assert.IsNotNull(relation3);

            List <IDsiRelation> relations = model.GetRelations().OrderBy(x => x.Weight).ToList();

            Assert.AreEqual(3, relations.Count);

            Assert.AreEqual(_a.Id, relations[0].ConsumerId);
            Assert.AreEqual(_b.Id, relations[0].ProviderId);
            Assert.AreEqual("type1", relations[0].Type);
            Assert.AreEqual(1, relations[0].Weight);

            Assert.AreEqual(_b.Id, relations[1].ConsumerId);
            Assert.AreEqual(_c.Id, relations[1].ProviderId);
            Assert.AreEqual("type2", relations[1].Type);
            Assert.AreEqual(2, relations[1].Weight);

            Assert.AreEqual(_a.Id, relations[2].ConsumerId);
            Assert.AreEqual(_c.Id, relations[2].ProviderId);
            Assert.AreEqual("type3", relations[2].Type);
            Assert.AreEqual(3, relations[2].Weight);
        }
Exemplo n.º 4
0
        public void WhenAddRelationIsCalledUsingTwoDifferentTypesThenTwoRelationTypesAreFound()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation1 = model.ImportRelation(_a.Id, _b.Id, "type1", 2);

            Assert.IsNotNull(relation1);

            Assert.AreEqual(1, model.TotalRelationCount);

            IDsiRelation relation2 = model.ImportRelation(_a.Id, _b.Id, "type2", 2);

            Assert.IsNotNull(relation2);

            Assert.AreEqual(2, model.TotalRelationCount);

            List <string> relationTypes = model.GetRelationTypes().ToList();

            Assert.AreEqual(2, relationTypes.Count);
            Assert.AreEqual("type1", relationTypes[0]);
            Assert.AreEqual("type2", relationTypes[1]);

            Assert.AreEqual(1, model.GetRelationTypeCount("type1"));
            Assert.AreEqual(1, model.GetRelationTypeCount("type2"));
        }
Exemplo n.º 5
0
        public void GivenModelIsEmptyWhenAddRelationIsCalledThenItsHasOneRelation()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation = model.AddRelation(_a.Name, _b.Name, "type", 2, "context");

            Assert.IsNotNull(relation);
            Assert.AreEqual(1, model.TotalRelationCount);
        }
Exemplo n.º 6
0
        private void WriteRelation(XmlWriter writer, IDsiRelation relation, IProgress <ProgressInfo> progress)
        {
            writer.WriteStartElement(RelationXmlNode);
            writer.WriteAttributeString(RelationFromXmlAttribute, relation.ConsumerId.ToString());
            writer.WriteAttributeString(RelationToXmlAttribute, relation.ProviderId.ToString());
            writer.WriteAttributeString(RelationTypeXmlAttribute, relation.Type);
            writer.WriteAttributeString(RelationWeightXmlAttribute, relation.Weight.ToString());
            writer.WriteEndElement();

            _progressedRelationCount++;
            UpdateProgress(progress);
        }
Exemplo n.º 7
0
        public void GivenModelIsEmptyWhenAddRelationIsCalledThenTheRelationExists()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation = model.AddRelation(_a.Name, _b.Name, "type", 2, "context");

            Assert.IsNotNull(relation);

            Assert.IsTrue(model.DoesRelationExist(relation.ConsumerId, relation.ProviderId));
        }
Exemplo n.º 8
0
        public void GivenModelIsEmptyWhenImportRelationIsCalledThenItsHasOneRelation()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation = model.ImportRelation(_a.Id, _b.Id, "type", 2);

            Assert.IsNotNull(relation);

            Assert.AreEqual(1, model.TotalRelationCount);
        }
Exemplo n.º 9
0
        public void GivenAnRelationIsNotInTheModelWhenDoesRelationExistIsCalledThenFalseIsReturned()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation = model.ImportRelation(_a.Id, _b.Id, "type", 2);

            Assert.IsNotNull(relation);
            Assert.AreEqual(1, model.TotalRelationCount);

            Assert.IsFalse(model.DoesRelationExist(_a.Id, _c.Id));
        }
Exemplo n.º 10
0
        public void GivenAnRelationIsInTheModelWhenAddRelationtIsCalledWithAnotherTypeThenItHasTwoRelations()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation1 = model.AddRelation(_a.Name, _b.Name, "type1", 2, "context");

            Assert.IsNotNull(relation1);

            Assert.AreEqual(1, model.TotalRelationCount);

            IDsiRelation relation2 = model.AddRelation(_a.Name, _b.Name, "type2", 3, "context");

            Assert.IsNotNull(relation2);

            Assert.AreEqual(2, model.TotalRelationCount);
        }
Exemplo n.º 11
0
        private void ImportDsiRelation(IDsiRelation dsiRelation)
        {
            if (_dsiToDsmMapping.ContainsKey(dsiRelation.ConsumerId) && _dsiToDsmMapping.ContainsKey(dsiRelation.ProviderId))
            {
                int    consumerId = _dsiToDsmMapping[dsiRelation.ConsumerId];
                int    providerId = _dsiToDsmMapping[dsiRelation.ProviderId];
                string type       = dsiRelation.Type;
                int    weight     = dsiRelation.Weight;

                if (consumerId != providerId)
                {
                    _importPolicy.ImportRelation(consumerId, providerId, type, weight);
                }
            }
            else
            {
                Logger.LogError($"Could not find consumer or provider of relation consumer={dsiRelation.ConsumerId} provider={dsiRelation.ProviderId}");
            }
        }
Exemplo n.º 12
0
        public void GivenModelIsEmptyWhenGetRelationsOfConsumerIsCalledThenItsHasReturnsOneRelation()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation = model.AddRelation(_a.Name, _b.Name, "type", 2, "context");

            Assert.IsNotNull(relation);

            Assert.AreEqual(1, model.TotalRelationCount);

            List <IDsiRelation> relations = model.GetRelationsOfConsumer(_a.Id).ToList();

            Assert.AreEqual(1, relations.Count);
            Assert.AreEqual(_a.Id, relations[0].ConsumerId);
            Assert.AreEqual(_b.Id, relations[0].ProviderId);
            Assert.AreEqual("type", relations[0].Type);
            Assert.AreEqual(2, relations[0].Weight);
        }
Exemplo n.º 13
0
        public void GivenMultipleElementAreInTheModelWhenAddRelationIsCalled3TimesAndSkipRelation1TimeThenResolvedPercentageis75Percent()
        {
            DsiRelationModel model = new DsiRelationModel(_elementsDataModel);

            Assert.AreEqual(0, model.TotalRelationCount);

            IDsiRelation relation1 = model.AddRelation("a", "b", "type1", 1, "");

            Assert.IsNotNull(relation1);
            IDsiRelation relation2 = model.AddRelation("b", "c", "type2", 2, "");

            Assert.IsNotNull(relation2);
            IDsiRelation relation3 = model.AddRelation("a", "c", "type3", 3, "");

            Assert.IsNotNull(relation3);
            model.SkipRelation("d", "c", "type4", "");

            Assert.AreEqual(4, model.TotalRelationCount);
            Assert.AreEqual(3, model.ResolvedRelationCount);
            Assert.AreEqual(75.0, model.ResolvedRelationPercentage);
        }