示例#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));
        }
示例#2
0
        public void Should_append_a_definition_after_another()
        {
            var instance1 = new SomeImplementation1();
            var instance4 = new SomeImplementation4();

            _definitions.Append(instance1)
            .Append <SomeImplementation2>();

            _definitions.Append <SomeImplementation3>().After <SomeImplementation1>();
            _definitions.Append(instance4).After <SomeImplementation2>();

            var definitions = _definitions.ToList();

            _definitions.Count().ShouldEqual(4);
            definitions[0].HasInstance.ShouldBeTrue();
            definitions[0].Instance.ShouldEqual(instance1);
            definitions[1].HasInstance.ShouldBeFalse();
            definitions[1].Type.ShouldEqual(typeof(SomeImplementation3));
            definitions[2].HasInstance.ShouldBeFalse();
            definitions[2].Type.ShouldEqual(typeof(SomeImplementation2));
            definitions[3].HasInstance.ShouldBeTrue();
            definitions[3].Instance.ShouldEqual(instance4);
        }