Beispiel #1
0
        public void Should_replace_a_definition()
        {
            Func <SomePluginContext, bool> predicate4 = x => true;
            Func <SomePluginContext, bool> predicate5 = x => true;
            var instance2 = new SomeImplementation2();
            var instance4 = new SomeImplementation4();

            _definitions.Append <SomeImplementation1>()
            .Append(instance2)
            .Append <SomeImplementation3>();

            _definitions.Replace <SomeImplementation1>().With(instance4, predicate4);
            _definitions.Replace <SomeImplementation2>().With <SomeImplementation5>(predicate5, true);

            var definitions = _definitions.ToList();

            _definitions.Count().ShouldEqual(3);
            definitions[0].HasInstance.ShouldBeTrue();
            definitions[0].Instance.ShouldEqual(instance4);
            definitions[0].Singleton.ShouldBeFalse();
            definitions[0].AppliesTo.ShouldEqual(predicate4);
            definitions[1].HasInstance.ShouldBeFalse();
            definitions[1].Type.ShouldEqual(typeof(SomeImplementation5));
            definitions[1].Singleton.ShouldBeTrue();
            definitions[1].AppliesTo.ShouldEqual(predicate5);
            definitions[2].HasInstance.ShouldBeFalse();
            definitions[2].Type.ShouldEqual(typeof(SomeImplementation3));
        }
Beispiel #2
0
        public void Should_prepend_a_plugin_before_another_and_remove_existing()
        {
            var instance2 = new SomeImplementation2();
            var instance3 = new SomeImplementation3();

            _definitions.Append <SomeImplementation1>()
            .Append(instance2)
            .Append <SomeImplementation3>()
            .Append <SomeImplementation4>();

            _definitions.Prepend(instance3).Before <SomeImplementation1>();
            _definitions.Prepend <SomeImplementation4>().Before <SomeImplementation2>();

            var definitions = _definitions.ToList();

            _definitions.Count().ShouldEqual(4);
            definitions[0].HasInstance.ShouldBeTrue();
            definitions[0].Instance.ShouldEqual(instance3);
            definitions[1].HasInstance.ShouldBeFalse();
            definitions[1].Type.ShouldEqual(typeof(SomeImplementation1));
            definitions[2].HasInstance.ShouldBeFalse();
            definitions[2].Type.ShouldEqual(typeof(SomeImplementation4));
            definitions[3].HasInstance.ShouldBeTrue();
            definitions[3].Instance.ShouldEqual(instance2);
        }
Beispiel #3
0
        public void Should_get_definition_from_instance()
        {
            var instance2 = new SomeImplementation2();

            _definitions.Append <SomeImplementation1>()
            .Append(instance2);

            _definitions.Get(new SomeImplementation2()).Type.ShouldEqual(typeof(SomeImplementation2));
        }
Beispiel #4
0
        public void Should_get_order_from_type()
        {
            var instance2 = new SomeImplementation2();

            _definitions.Append <SomeImplementation1>()
            .Append(instance2);

            _definitions.Order(typeof(SomeImplementation1)).ShouldEqual(0);
            _definitions.Order(typeof(SomeImplementation2)).ShouldEqual(1);
        }
Beispiel #5
0
        public void Should_get_order_from_generic_type_param()
        {
            var instance2 = new SomeImplementation2();

            _definitions.Append <SomeImplementation1>()
            .Append(instance2);

            _definitions.Order <SomeImplementation1>().ShouldEqual(0);
            _definitions.Order <SomeImplementation2>().ShouldEqual(1);
        }
Beispiel #6
0
        public void Should_get_definition_from_generic_type_param()
        {
            var instance2 = new SomeImplementation2();

            _definitions.Append <SomeImplementation1>()
            .Append(instance2);

            _definitions.Get <SomeImplementation1>().Type.ShouldEqual(typeof(SomeImplementation1));
            _definitions.Get <SomeImplementation2>().Type.ShouldEqual(typeof(SomeImplementation2));
        }
Beispiel #7
0
        public void Should_remove_a_definition()
        {
            var instance2 = new SomeImplementation2();

            _definitions.Append <SomeImplementation1>()
            .Append(instance2)
            .Append <SomeImplementation3>();

            _definitions.Remove <SomeImplementation3>();

            _definitions.Count().ShouldEqual(2);
            _definitions.Get <SomeImplementation1>().ShouldNotBeNull();
            _definitions.Get <SomeImplementation2>().ShouldNotBeNull();
            _definitions.Get <SomeImplementation3>().ShouldBeNull();
        }
Beispiel #8
0
        public void Should_append_a_definition_and_remove_existing()
        {
            var instance2 = new SomeImplementation2();

            _definitions.Prepend <SomeImplementation1>()
            .Prepend <SomeImplementation2>();

            _definitions.Append <SomeImplementation1>()
            .Append(instance2);

            var definitions = _definitions.ToList();

            _definitions.Count().ShouldEqual(2);
            definitions[0].HasInstance.ShouldBeFalse();
            definitions[0].Type.ShouldEqual(typeof(SomeImplementation1));
            definitions[1].HasInstance.ShouldBeTrue();
            definitions[1].Instance.ShouldEqual(instance2);
        }
Beispiel #9
0
        public void Should_prepend_a_plugin()
        {
            Func <SomePluginContext, bool> predicate1 = x => true;
            Func <SomePluginContext, bool> predicate2 = x => true;
            var instance2 = new SomeImplementation2();

            _definitions.Prepend <SomeImplementation1>(predicate1, true);
            _definitions.Prepend(instance2, predicate2);

            var definitions = _definitions.ToList();

            _definitions.Count().ShouldEqual(2);
            definitions[0].HasInstance.ShouldBeTrue();
            definitions[0].Instance.ShouldEqual(instance2);
            definitions[0].Singleton.ShouldBeFalse();
            definitions[0].AppliesTo.ShouldEqual(predicate2);
            definitions[1].HasInstance.ShouldBeFalse();
            definitions[1].Type.ShouldEqual(typeof(SomeImplementation1));
            definitions[1].Singleton.ShouldBeTrue();
            definitions[1].AppliesTo.ShouldEqual(predicate1);
        }