public void GetOrAddRelationship_IsThreadSafe() { const int repeat = 100; var model = new Model(); var sourceEntity = model.GetOrAddEntity(i => true, () => new TestModelEntity()); for (int i = 0; i < repeat; i++) { var testModelEntity = new TestModelEntity(i.ToString()); model.GetOrAddEntity(testModelEntity); } var relationshipType = new ModelRelationshipType(ModelRelationshipClassifier.Generalization, ModelRelationshipStereotype.None); var tasks = new List <Task> { Task.Run(() => GetOrAddRelationship(model, sourceEntity, relationshipType, repeat)), Task.Run(() => GetOrAddRelationship(model, sourceEntity, relationshipType, repeat)), Task.Run(() => GetOrAddRelationship(model, sourceEntity, relationshipType, repeat)), }; Task.WaitAll(tasks.ToArray()); model.Relationships.Count.ShouldBeEquivalentTo(repeat); }
protected TestModelDto Map(TestModelEntity source) { return(Map <TestModelDto>(source)); }