public void Should_return_instances_that_apply( [Values(true, false)] bool orDefault) { var plugin1 = new ConditionalPlugin1 { DoesApply = false }; var plugin2 = new ConditionalPlugin2 { DoesApply = true }; var plugin3 = new ConditionalPlugin3 { DoesApply = true }; var instances = new IConditionalPluginType[] { plugin1, plugin3, plugin2 }; var plugins = new Plugins <IConditionalPluginType>(false) .Configure(x => x .Append <ConditionalPlugin1>() .Append <ConditionalPlugin2>() .Append <ConditionalPlugin3>()); var apply = (orDefault ? plugins.ThatApplyOrDefault(instances) : plugins.ThatApply(instances)).ToList(); apply.ShouldOnlyContain(plugin2, plugin3); }
public void Should_return_instances_that_apply_to_plugin_context_when_they_exist_and_not_the_default() { var plugin1 = new ConditionalPlugin1 { DoesApply = false }; var plugin2 = new ConditionalPlugin2 { DoesApply = true }; var plugin3 = new ConditionalPlugin3 { DoesApply = true }; var instances = new IConditionalPluginType[] { plugin1, plugin3, plugin2 }; var plugins = new ConditionalPlugins <IConditionalPluginType, PluginContext>(false) .Configure(x => x .Append <ConditionalPlugin1>(@default: true) .Append <ConditionalPlugin2>(c => c.Value == 1) .Append <ConditionalPlugin3>(c => c.Value == 1)); var applies = plugins.ThatAppliesOrDefault(instances, new PluginContext { Value = 1 }); applies.ShouldOnlyContain(plugin2, plugin3); }
public void Should_return_first_instance_that_applies_to_plugin_context() { var plugin1 = new ConditionalPlugin1 { DoesApply = false }; var plugin2 = new ConditionalPlugin2 { DoesApply = true }; var plugin3 = new ConditionalPlugin3 { DoesApply = true }; var instances = new IConditionalPluginType[] { plugin1, plugin3, plugin2 }; var plugins = new ConditionalPlugins <IConditionalPluginType, PluginContext>(false) .Configure(x => x .Append <ConditionalPlugin1>(@default: true) .Append <ConditionalPlugin2>(c => c.Value == 1) .Append <ConditionalPlugin3>(c => c.Value == 1)); var applies = plugins.FirstThatAppliesOrDefault(instances, new PluginContext { Value = 1 }); applies.ShouldEqual(plugin2); }
public void Should_return_instances_that_apply_to_plugin_context() { var plugin1 = new ConditionalPlugin1 { DoesApply = false }; var plugin2 = new ConditionalPlugin2 { DoesApply = true }; var plugin3 = new ConditionalPlugin3 { DoesApply = true }; var instances = new IConditionalPluginType[] { plugin1, plugin3, plugin2 }; var plugins = new ConditionalPlugins <IConditionalPluginType, PluginContext>(false) .Configure(x => x .Append <ConditionalPlugin1>() .Append <ConditionalPlugin2>() .Append <ConditionalPlugin3>(c => c.Value == 1)); var apply = plugins.ThatApply(instances, new PluginContext { Value = 1 }).ToList(); apply.ShouldOnlyContain(plugin2, plugin3); }
public void Should_return_empty_list_if_no_instances_appy_to_plugin_context_and_no_default_is_specified() { var plugin = new ConditionalPlugin { DoesApply = false }; var instances = new IConditionalPluginType[] { plugin }; var plugins = new ConditionalPlugins <IConditionalPluginType, PluginContext>(false) .Configure(x => x .Append <ConditionalPlugin>()); var applies = plugins.ThatAppliesOrDefault(instances, new PluginContext()); applies.ShouldBeEmpty(); }
public void Should_not_return_instances_that_dont_apply_to_plugin_context( [Values(true, false)] bool applies) { var plugin = new ConditionalPlugin { DoesApply = applies }; var instances = new IConditionalPluginType[] { plugin }; var plugins = new ConditionalPlugins <IConditionalPluginType, PluginContext>(false) .Configure(x => x .Append <ConditionalPlugin>()); var apply = plugins.ThatApply(instances, new PluginContext()).ToList(); apply.Count.ShouldEqual(applies ? 1 : 0); apply.Contains(plugin).ShouldEqual(applies); }
public void Should_return_default_instances_if_non_apply() { var plugin1 = new ConditionalPlugin1 { DoesApply = false }; var plugin2 = new ConditionalPlugin2 { DoesApply = false }; var instances = new IConditionalPluginType[] { plugin1, plugin2 }; var plugins = new Plugins <IConditionalPluginType>(false) .Configure(x => x .Append <ConditionalPlugin1>() .Append <ConditionalPlugin2>(@default: true)); var apply = plugins.ThatApplyOrDefault(instances).ToList(); apply.ShouldOnlyContain(plugin2); }
public void Should_not_return_instances_by_plugin_context_that_are_not_registered_in_the_plugin_list( [Values(true, false)] bool isRegistered) { var plugin = new ConditionalPlugin { DoesApply = true }; var instances = new IConditionalPluginType[] { plugin }; var plugins = new ConditionalPlugins <IConditionalPluginType, PluginContext>(false); if (isRegistered) { plugins.Configure(x => x .Append <ConditionalPlugin>()); } var apply = plugins.ThatApply(instances, new PluginContext()).ToList(); apply.Count.ShouldEqual(isRegistered ? 1 : 0); apply.Contains(plugin).ShouldEqual(isRegistered); }
public void Should_return_list_only_containing_last_default_if_no_instances_appy_to_plugin_context_and_a_default_is_specified() { var plugin1 = new ConditionalPlugin1 { DoesApply = false }; var plugin2 = new ConditionalPlugin2 { DoesApply = false }; var plugin3 = new ConditionalPlugin3 { DoesApply = false }; var instances = new IConditionalPluginType[] { plugin1, plugin2, plugin3 }; var plugins = new ConditionalPlugins <IConditionalPluginType, PluginContext>(false) .Configure(x => x .Append <ConditionalPlugin1>() .Append <ConditionalPlugin2>(@default: true) .Append <ConditionalPlugin3>(@default: true)); var applies = plugins.ThatAppliesOrDefault(instances, new PluginContext()); applies.ShouldOnlyContain(plugin3); }