Пример #1
0
        public void TestInitialize( )
        {
            _fixture    = new Fixture( );
            _sutCreator = new SutCreator(new SutInstanceCreator(new ArgumentNullExceptionFinder( )),
                                         new SutLazyInstanceCreator(new ArgumentNullExceptionFinder( ),
                                                                    new CustomAttributeFinder( )));
            _freezeAttribute = Substitute.For <ICustomAttributeData> ( );
            _freezeAttribute.AttributeType.Returns(typeof(FreezeAttribute));

            _customAttributesWithFreeze = new []
            {
                _freezeAttribute
            };

            _infoInt        = CreateParameterInfo(typeof(int));
            _infoLazyString = CreateParameterInfo(typeof(Lazy <string>));
            _infoString     = CreateParameterInfo(typeof(string));
            _infoClass      = CreateParameterInfo(typeof(SomethingElse));
            _infoSut        = CreateParameterInfo(typeof(Something));
            _infoLazyClass  = CreateParameterInfo(typeof(Lazy <Something>));
            _infoSomething  = CreateParameterInfo(typeof(ISomething));
            _infoSomethingElseWithFreeze = CreateParameterInfo(typeof(ISomethingElse));
            _infoSomethingElseWithFreeze.CustomAttributes.Returns(_customAttributesWithFreeze);
            _infoStringFreeze = CreateParameterInfo(typeof(string));
            _infoStringFreeze.CustomAttributes.Returns(_customAttributesWithFreeze);
        }
Пример #2
0
        public void Create_ForSutCreatorIsNull_Throws( )
        {
            _sutCreator = null;

            Action action = () => CreateSut( );

            action.Should( )
            .Throw <ArgumentNullException> ( )
            .WithParameter("sutCreator");
        }
        public void SutCreator_CreateWithNullChildWaiterAndTestKitBaseAndProps_ThrowsArgumentNullException()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            Action act = () => sut.Create <DummyActor>(null, null, null, ExpectedChildCount, Supervisor);

            //assert
            act.ShouldThrow <ArgumentNullException>();
        }
        public void SutCreator_Create_CreatesChildWithCorrectSupervisor()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            TestActorRef <DummyActor> actor = sut.Create <DummyActor>(ChildWaiter, this, Props, ExpectedChildCount, Supervisor);

            //assert
            actor.UnderlyingActor.Supervisor.Should().Be(Supervisor);
        }
        public void SutCreator_Create_CreatesChildBeforeWaitingForChildrenUsingTheChildWaiter()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            sut.Create <DummyActor>(ChildWaiter, this, Props, ExpectedChildCount, Supervisor);

            //assert
            CallOrder.Should().ContainInOrder("callback", nameof(IChildWaiter.Wait));
        }
        public void SutCreator_Create_CreatesChildAfterStartingChildWaiter()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            sut.Create <DummyActor>(ChildWaiter, this, Props, ExpectedChildCount, Supervisor);

            //assert
            CallOrder.Should().ContainInOrder(nameof(IChildWaiter.Start), "callback");
        }
Пример #7
0
        public void Construct_ForTypeClass_InstanceWithPropertyNotAutoPopulated( )
        {
            var sut = new SutCreator(new SutInstanceCreator(new ArgumentNullExceptionFinder( )),
                                     new SutLazyInstanceCreator(new ArgumentNullExceptionFinder( ),
                                                                new CustomAttributeFinder( )));

            var construct = sut.Construct(new ArgumentsGenerator( ),
                                          typeof(Device)) as Device;

            construct?.NotAutoPopulated
            .Should( )
            .Be(Device.SomeText);
        }
Пример #8
0
        public void Construct_ForTypeClass_InstanceWithPropertySetByDependency( )
        {
            var sut = new SutCreator(new SutInstanceCreator(new ArgumentNullExceptionFinder( )),
                                     new SutLazyInstanceCreator(new ArgumentNullExceptionFinder( ),
                                                                new CustomAttributeFinder( )));

            var construct = sut.Construct(new ArgumentsGenerator( ),
                                          typeof(Device)) as Device;

            construct?.PopulatedByDependency
            .Should( )
            .NotBeNull( );
        }
        public void SutCreator_Create_StartsChildWaiterWithCorrectCount()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            sut.Create <DummyActor>(ChildWaiter, this, Props, ExpectedChildCount, Supervisor);

            //assert
            ChildWaiterMock.Verify(
                waiter => waiter.Start(this, ExpectedChildCount),
                Times.Once);
        }
        public async Task SutCreator_CreateWithNullSupervisor_CreatesChildWithNoSupervisor()
        {
            //arrange
            IActorRef rootGuardian = await Sys.ActorSelection("akka://test/user").ResolveOne(TimeSpan.FromSeconds(5));

            SutCreator sut = CreateSutCreator();

            //act
            TestActorRef <DummyActor> actor = sut.Create <DummyActor>(ChildWaiter, this, Props, ExpectedChildCount, null);

            //assert
            actor.UnderlyingActor.Supervisor.Should().Be(rootGuardian);
        }
        public void SutCreator_Create_WaitsForChildrenUsingChildWaiter()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            sut.Create <DummyActor>(ChildWaiter, this, Props, ExpectedChildCount, Supervisor);

            //assert
            ChildWaiterMock.Verify(
                waiter => waiter.Wait(),
                Times.Once);
        }
        public void SutCreator_Create_OnlyStartsChildWaiterOnce()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            sut.Create <DummyActor>(ChildWaiter, this, Props, ExpectedChildCount, Supervisor);

            //assert
            ChildWaiterMock.Verify(
                waiter => waiter.Start(this, It.IsAny <int>()),
                Times.Once);
        }
Пример #13
0
        public void SutCreator_CreateWithNullSupervisor_CreatesChildWithNoSupervisor()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            TestActorRef <DummyActor> actor = sut.Create <DummyActor>(
                ChildWaiter,
                this,
                Props,
                ExpectedChildCount,
                null);

            //assert
            actor.Path.Parent.Should().Be(ActorPath.Parse("akka://test/user"));
        }
Пример #14
0
        public void SutCreator_CreateWithNullSupervisor_ThrowsArgumentNullException()
        {
            //arrange
            SutCreator sut = CreateSutCreator();

            //act
            Action act = () => sut.Create <DummyActor>(
                ChildWaiter,
                this,
                Props,
                ExpectedChildCount,
                null);

            //assert
            act.Should().Throw <ArgumentNullException>();
        }
Пример #15
0
        public TestBase() : base(AkkaConfig.Config)
        {
            // Create values passed into sut
            TestKitPassedIntoSut  = this;
            HandlersPassedIntoSut = ImmutableDictionary <(Type, Type), Func <object, object> >
                                    .Empty
                                    .Add((typeof(DummyActor1), typeof(Message1)), message1 => new Reply1())
                                    .Add((typeof(DummyActor1), typeof(Message2)), message1 => new Reply2())
                                    .Add((typeof(DummyActor2), typeof(Message1)), message1 => new Reply1());

            PropsPassedIntoSut      = Props.Create <DummyActor1>();
            NumberOfChildrenIntoSut = TestUtils.Create <int>();

            // Create shims
            _shimContext = ShimsContext.Create();

            // Set up shims
            ShimSutCreator.Constructor = @this =>
            {
                SutCreatorConstructorCount++;
                ConstructedSutCreator = @this;
            };

            ShimTellChildWaiter.Constructor = @this =>
            {
                TellChildWaiterConstructorCount++;
                ConstructedTellChildWaiter = @this;
            };

            ShimChildWaiter.Constructor = @this =>
            {
                ChildWaiterConstructorCount++;
                ConstructedChildWaiter = @this;
            };

            ShimDependencyResolverAdder.Constructor = @this =>
            {
                DependencyResolverAdderConstructorCount++;
                ConstructedDependencyResolverAdder = @this;
            };

            ShimTestProbeDependencyResolverAdder.Constructor = @this =>
            {
                TestProbeDependencyResolverAdderConstructorCount++;
                ConstructedTestProbeDependencyResolverAdder = @this;
            };

            ShimTestProbeCreator.Constructor = @this =>
            {
                TestProbeCreatorConstructorCount++;
                ConstructedTestProbeCreator = @this;
            };

            ShimResolvedTestProbeStore.Constructor = @this =>
            {
                ResolvedTestProbeStoreConstructorCount++;
                ConstructedResolvedTestProbeStore = @this;
            };

            ShimTestProbeActorCreator.Constructor = @this =>
            {
                TestProbeActorCreatorConstructorCount++;
                ConstructedTestProbeActorCreator = @this;
            };

            ShimTestProbeHandlersMapper.Constructor = @this =>
            {
                TestProbeHandlersMapperConstructorCount++;
                ConstructedTestProbeHandlersMapper = @this;
            };

            ShimSutSupervisorStrategyGetter.Constructor = @this =>
            {
                SutSupervisorStrategyGetterConstructorCount++;
                ConstructedSutSupervisorStrategyGetter = @this;
            };

            ShimUnitTestFramework <DummyActor1> .ConstructorISutCreatorITellChildWaiterIChildWaiterIDependencyResolverAdderITestProbeDependencyResolverAdderITestProbeCreatorIResolvedTestProbeStoreITestProbeActorCreatorITestProbeHandlersMapperISutSupervisorStrategyGetterImmutableDictionaryOfValueTupleOfTy =
                (@this, sutCreator, tellChildWaiter, childWaiter, dependencyResolverAdder, testProbeDependencyResolverAdder, testProbeCreator, resolvedTestProbeStore, testProbeActorCreator, testProbeHandlersMapper, sutSupervisorStrategyGetter, handlers, testKit, props, numberOfChildren) =>
            {
                UnitTestFrameworkConstructorCount++;
                ConstructedUnitTestFramework                   = @this;
                SutCreatorPassedIntoShim                       = sutCreator;
                TellChildWaiterPassedIntoShim                  = tellChildWaiter;
                ChildWaiterPassedIntoShim                      = childWaiter;
                DependencyResolverAdderPassedIntoShim          = dependencyResolverAdder;
                TestProbeDependencyResolverAdderPassedIntoShim = testProbeDependencyResolverAdder;
                TestProbeCreatorPassedIntoShim                 = testProbeCreator;
                ResolvedTestProbeStorePassedIntoShim           = resolvedTestProbeStore;
                TestProbeActorCreatorPassedIntoShim            = testProbeActorCreator;
                TestProbeHandlersMapperPassedIntoShim          = testProbeHandlersMapper;
                SutSupervisorStrategyGetterIntoShim            = sutSupervisorStrategyGetter;
                HandlersPassedIntoShim   = handlers;
                TestKitPassedIntoShim    = testKit;
                PropsPassedIntoShim      = props;
                NumberOfChildrenIntoShim = numberOfChildren;
            };
        }