Example #1
0
        public void TestResumeForeverStrategy()
        {
            var resumeForeverSupervisorTestResults = new ResumeForeverSupervisorActor.ResumeForeverSupervisorTestResults();
            var supervisor = TestWorld.ActorFor <ISupervisor>(
                Definition.Has <ResumeForeverSupervisorActor>(
                    Definition.Parameters(resumeForeverSupervisorTestResults), "resume-forever-supervisor"));
            var failureControlTestResults = new FailureControlActor.FailureControlTestResults();
            var failure = TestWorld.ActorFor <IFailureControl>(
                Definition.Has <FailureControlActor>(
                    Definition.Parameters(failureControlTestResults), supervisor.ActorInside, "failure-for-stop"));

            var failureAccess = failureControlTestResults.AfterCompleting(0);
            var resumeAccess  = resumeForeverSupervisorTestResults.AfterCompleting(1);

            for (var idx = 1; idx <= 20; ++idx)
            {
                failureAccess = failureControlTestResults.AfterCompleting(1);
                failure.Actor.FailNow();
                failure.Actor.AfterFailure();
            }

            Assert.Equal(20, failureAccess.ReadFrom <int>("failNowCount"));
            Assert.Equal(20, failureAccess.ReadFrom <int>("afterFailureCount"));
            Assert.Equal(20, resumeAccess.ReadFrom <int>("informedCount"));

            failureAccess = failureControlTestResults.AfterCompleting(20);

            for (var idx = 1; idx <= 20; ++idx)
            {
                failure.Actor.FailNow();
                failure.Actor.AfterFailure();
            }

            Assert.Equal(40, failureAccess.ReadFrom <int>("failNowCount"));
            Assert.Equal(40, failureAccess.ReadFrom <int>("afterFailureCount"));
            Assert.True(40 <= resumeAccess.ReadFrom <int>("informedCount"));
        }