public void GetConceptApplicationDependencies_SimpleTest() { IConceptInfo ci1 = new SimpleCi { Name = "1" }; IConceptInfo ci2 = new SimpleCi { Name = "2" }; CodeGenerator ca1a = new CodeGenerator(ci1, new SimpleConceptImplementation()); CodeGenerator ca1b = new CodeGenerator(ci1, new SimpleConceptImplementation()); CodeGenerator ca2a = new CodeGenerator(ci2, new SimpleConceptImplementation()); CodeGenerator ca2b = new CodeGenerator(ci2, new SimpleConceptImplementation()); var names = new Dictionary <int, string> { { ca1a.Id, "1a" }, { ca1b.Id, "1b" }, { ca2a.Id, "2a" }, { ca2b.Id, "2b" }, }; var conceptInfoDependencies = new[] { Tuple.Create(ci2, ci1) }; var actual = new DatabaseModelDependencies(new ConsoleLogProvider()) .ConceptDependencyToCodeGeneratorsDependency(conceptInfoDependencies, new[] { ca1a, ca1b, ca2a, ca2b }); Assert.AreEqual( "2a-1a, 2a-1b, 2b-1a, 2b-1b", string.Join(", ", actual .Select(d => names[d.DependsOn.Id] + "-" + names[d.Dependent.Id]) .OrderBy(s => s))); }
public void ExtractDependenciesFromConceptInfosTest() { var a = CreateBaseCiApplication("A"); var b = CreateBaseCiApplication("B"); var c = CreateBaseCiApplication("C"); var r1 = MultipleReferencingCi.CreateApplication("1", a, b); var r2 = MultipleReferencingCi.CreateApplication("2", b, c); var r3 = MultipleReferencingCi.CreateApplication("3", r1, r2); var r5 = MultipleReferencingCi.CreateApplication("5", c, c); var r4 = MultipleReferencingCi.CreateApplication("4", c, r5); var conceptImplementations = new PluginsMetadataList <IConceptDatabaseDefinition> { new NullImplementation(), { new SimpleConceptImplementation(), typeof(SimpleCi) }, }; var all = new List <CodeGenerator> { a, b, c, r1, r2, r3, r4, r5 }; var dependencies = new DatabaseModelDependencies(new ConsoleLogProvider()) .ExtractCodeGeneratorDependencies(all, MockDatabasePluginsContainer.Create(conceptImplementations)); string result = string.Join(" ", dependencies .Select(d => ((dynamic)d).DependsOn.ConceptInfo.Name + "<" + ((dynamic)d).Dependent.ConceptInfo.Name) .OrderBy(str => str)); Console.WriteLine(result); Assert.AreEqual("1<3 2<3 5<4 A<1 A<3 B<1 B<2 B<3 C<2 C<3 C<4 C<5", result); }