예제 #1
0
        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)));
        }
예제 #2
0
        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);
        }