public void ExecuteByConfiguration(Action <ConfigManager.GatewayConfigElement> test, ConfigManager.GatewayCapabilities capability)
            {
                var failures = new List <Tuple <string, Exception> >();

                foreach (var config in GetGatewayConfigurations(capability))
                {
                    try {
                        test(config);
                    } catch (Exception ex) {
                        failures.Add(new Tuple <string, Exception>(config.Schema, ex));
                    }
                }

                if (failures.Any())
                {
                    throw new AggregateException("Test failed in " + string.Join(", ", failures.Select(t => t.Item1)), failures.Select(t => t.Item2));
                }
            }
 public static IEnumerable <ConfigManager.GatewayConfigElement> GetGatewayConfigurations(ConfigManager.GatewayCapabilities capability = ConfigManager.GatewayCapabilities.None)
 {
     return(ConfigManager.GetGatewayConfigurations().Where(g => capability == ConfigManager.GatewayCapabilities.None || !g.Exclusions.HasFlag(capability)));
 }