public void GetLayersNamespaces_RegExGrouped_Error_NamespaceNotFoundForLayer()
        {
            var key = "Origin";

            var layers = new Dictionary <string, NamespacesGroupingMethod>()
            {
                { key, new NamespacesRegularExpressionGrouped() }
            };

            var result = Assert.Throws <ConstraintsException>(() =>
            {
                _ = NamespacesGroupingMethodHelper.GetLayersNamespaces(
                    layers, new List <string>());
            });

            Assert.Equal(ConstraintsError.NamespaceNotFoundForLayer(key).Key, result.Key);
        }
        public void GetLayersNamespaces_ExplicitlyGrouped_Success()
        {
            var key        = "Origin";
            var namespaces = new List <string>()
            {
                "Test.Origin"
            };

            var layers = new Dictionary <string, NamespacesGroupingMethod>()
            {
                { key, new NamespacesExplicitlyGrouped(namespaces) }
            };

            var result = NamespacesGroupingMethodHelper
                         .GetLayersNamespaces(layers, namespaces);

            Assert.NotNull(result);
            Assert.Single(result);
            Assert.True(result.ContainsKey(key));
            Assert.Single(result[key]);
            Assert.Equal(namespaces.Single(), result[key].Single());
        }
        public void GetLayersNamespaces_RegExGrouped_Success()
        {
            var key        = "Origin";
            var namespaces = new List <string>()
            {
                "Test.Origin"
            };
            var regEx = new Regex(@"(Test)(.+)(\w*(Origin([s]{1})?)\b)");

            var layers = new Dictionary <string, NamespacesGroupingMethod>()
            {
                { key, new NamespacesRegularExpressionGrouped(regEx) }
            };

            var result = NamespacesGroupingMethodHelper
                         .GetLayersNamespaces(layers, namespaces);

            Assert.NotNull(result);
            Assert.Single(result);
            Assert.True(result.ContainsKey(key));
            Assert.Single(result[key]);
            Assert.Equal(namespaces.Single(), result[key].Single());
        }
Exemple #4
0
        private static IEnumerable <TransgressedRule> GetTransgressedRulesByConstraintsAndCodeFiles(
            ArchitecturalConstraints constraints, ICollection <CodeFile> codeFiles)
        {
            var structures = codeFiles.SelectMany(c => c.Structures);
            var namespaces = structures.Select(s => s.Namespace).Distinct();

            var layersNamespaces = NamespacesGroupingMethodHelper
                                   .GetLayersNamespaces(constraints.Layers, namespaces);

            foreach (var rule in constraints.Rules)
            {
                var violatingOccurrences = ArchitecturalRuleHelper
                                           .GetViolatingOccurrences(rule, layersNamespaces, structures);

                if (violatingOccurrences.Any())
                {
                    yield return(new TransgressedRule()
                    {
                        Rule = rule,
                        Violations = violatingOccurrences
                    });
                }
            }
        }