コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }