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()); }
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 }); } } }