public void BasicResolverSettings_RegisterResolverWithDuplicateFuncFactories_AddsConcreteDependancyResolverWithCorrectFactories()
        {
            //arrange
            DummyActor1           actor1          = new DummyActor1();
            DummyActor1           duplicateActor1 = new DummyActor1();
            DummyActor2           actor2          = new DummyActor2();
            BasicResolverSettings sut             = BasicResolverSettings
                                                    .Empty
                                                    .RegisterActor(() => actor1)
                                                    .RegisterActor(() => actor2)
                                                    .RegisterActor(() => duplicateActor1);

            //act
            sut.RegisterResolver(this);

            //assert
            HandlersPassedIntoMock.ShouldAllBeEquivalentTo(
                ImmutableDictionary <Type, Func <ActorBase> >
                .Empty
                .Add(typeof(DummyActor1), () => duplicateActor1)
                .Add(typeof(DummyActor2), () => actor2),
                options => options
                .Using <Func <ActorBase> >(context => context.Subject.Invoke().Should().BeSameAs(context.Expectation.Invoke()))
                .WhenTypeIs <Func <ActorBase> >());
        }
        public void BasicResolverSettings_RegisterResolverWithNoFactories_AddsConcreteDependancyResolverWithEmptyFactories()
        {
            //arrange
            BasicResolverSettings sut = BasicResolverSettings.Empty;

            //act
            sut.RegisterResolver(this);

            //assert
            HandlersPassedIntoMock.Should().BeEmpty();
        }
        public void BasicResolverSettings_RegisterResolverWithFactoriesInDifferentInstances_AddsConcreteDependancyResolverWithCorrectFactories()
        {
            //arrange
            BasicResolverSettings sut = BasicResolverSettings
                                        .Empty
                                        .RegisterActor <DummyActor1>();
            BasicResolverSettings differentInstance = sut
                                                      .RegisterActor <DummyActor2>();

            //act
            sut.RegisterResolver(this);

            //assert
            HandlersPassedIntoMock.ShouldAllBeEquivalentTo(
                ImmutableDictionary <Type, Func <ActorBase> >
                .Empty
                .Add(typeof(DummyActor1), () => new DummyActor1()),
                options => options
                .Using <Func <ActorBase> >(context => context.Subject.Invoke().GetType().Should().Be(context.Expectation.Invoke().GetType()))
                .WhenTypeIs <Func <ActorBase> >());
        }