public void duration_is_zero_if_there_are_no_exercises()
        {
            var sut = new ExerciseProgramBuilder()
                      .Build();

            Assert.Equal(TimeSpan.Zero, sut.Duration);
        }
        public void duration_is_zero_if_there_are_no_exercises()
        {
            var sut = new ExerciseProgramBuilder()
                .Build();

            Assert.Equal(TimeSpan.Zero, sut.Duration);
        }
Example #3
0
        public void execute_async_executes_each_exercise()
        {
            var action1 = new ActionMock(MockBehavior.Loose);
            var action2 = new ActionMock(MockBehavior.Loose);

            var sut = new ExerciseProgramBuilder()
                      .AddExercise(new ExerciseBuilder()
                                   .WithBeforeExerciseAction(action1))
                      .AddExercise(new ExerciseBuilder()
                                   .WithBeforeExerciseAction(action2))
                      .Build();

            using (var executionContext = new ExecutionContext())
            {
                sut.ExecuteAsync(executionContext);

                action1
                .Verify(x => x.ExecuteAsync(executionContext))
                .WasCalledExactlyOnce();

                action2
                .Verify(x => x.ExecuteAsync(executionContext))
                .WasCalledExactlyOnce();
            }
        }
Example #4
0
        public void execute_async_throws_if_the_context_is_null()
        {
            var sut = new ExerciseProgramBuilder()
                      .Build();

            Assert.Throws <ArgumentNullException>(() => sut.ExecuteAsync(null));
        }
        public void execute_executes_each_exercise()
        {
            var action1 = new ActionMock(MockBehavior.Loose);
            var action2 = new ActionMock(MockBehavior.Loose);

            var sut = new ExerciseProgramBuilder()
                      .WithExercise(new ExerciseBuilder()
                                    .WithBeforeExerciseAction(action1))
                      .WithExercise(new ExerciseBuilder()
                                    .WithBeforeExerciseAction(action2))
                      .Build();
            var executionContext = new ExecutionContext();

            sut
            .Execute(executionContext)
            .Subscribe();

            action1
            .Verify(x => x.Execute(executionContext))
            .WasCalledExactlyOnce();

            action2
            .Verify(x => x.Execute(executionContext))
            .WasCalledExactlyOnce();
        }
        public void name_yields_the_name_passed_into_ctor(string name)
        {
            var sut = new ExerciseProgramBuilder()
                      .WithName(name)
                      .Build();

            Assert.Equal(name, sut.Name);
        }
        public void name_yields_the_name_passed_into_ctor(string name)
        {
            var sut = new ExerciseProgramBuilder()
                .WithName(name)
                .Build();

            Assert.Equal(name, sut.Name);
        }
        public void exercises_yields_the_exercises_passed_into_ctor(int exerciseCount)
        {
            var exercises = Enumerable.Range(0, exerciseCount)
                .Select(x => new ExerciseBuilder()
                    .WithName("Exercise " + x)
                    .Build())
                .ToList();
            var sut = new ExerciseProgramBuilder()
                .AddExercises(exercises)
                .Build();

            Assert.Equal(exerciseCount, sut.Exercises.Count);
            Assert.True(sut.Exercises.SequenceEqual(exercises));
        }
        public void execute_completes_even_if_there_are_no_exercises()
        {
            var sut = new ExerciseProgramBuilder()
                      .Build();
            var executionContext = new ExecutionContext();

            var completed = false;

            sut
            .Execute(executionContext)
            .Subscribe(_ => completed = true);

            Assert.True(completed);
        }
        public void exercises_yields_the_exercises_passed_into_ctor(int exerciseCount)
        {
            var exercises = Enumerable.Range(0, exerciseCount)
                            .Select(x => new ExerciseBuilder()
                                    .WithName("Exercise " + x)
                                    .Build())
                            .ToList();
            var sut = new ExerciseProgramBuilder()
                      .WithExercises(exercises)
                      .Build();

            Assert.Equal(exerciseCount, sut.Exercises.Count);
            Assert.True(sut.Exercises.SequenceEqual(exercises));
        }
        public void execute_completes_even_if_there_are_no_exercises()
        {
            var sut = new ExerciseProgramBuilder()
                .Build();

            using (var executionContext = new ExecutionContext())
            {
                var completed = false;
                sut
                    .Execute(executionContext)
                    .Subscribe(_ => completed = true);

                Assert.True(completed);
            }
        }
        public void execute_skips_exercises_that_are_shorter_than_the_skip_ahead()
        {
            var action1 = new ActionMock(MockBehavior.Loose);
            var action2 = new ActionMock(MockBehavior.Loose);
            var action3 = new ActionMock(MockBehavior.Loose);

            action1
            .When(x => x.Duration)
            .Return(TimeSpan.FromSeconds(13));

            action2
            .When(x => x.Duration)
            .Return(TimeSpan.FromSeconds(10));

            action3
            .When(x => x.Duration)
            .Return(TimeSpan.FromSeconds(5));

            action1
            .When(x => x.Execute(It.IsAny <ExecutionContext>()))
            .Throw();

            action2
            .When(x => x.Execute(It.IsAny <ExecutionContext>()))
            .Throw();

            var sut = new ExerciseProgramBuilder()
                      .WithExercise(new ExerciseBuilder()
                                    .WithBeforeExerciseAction(action1))
                      .WithExercise(new ExerciseBuilder()
                                    .WithBeforeExerciseAction(action2))
                      .WithExercise(new ExerciseBuilder()
                                    .WithBeforeExerciseAction(action3))
                      .Build();
            var executionContext = new ExecutionContext(TimeSpan.FromSeconds(23));

            sut
            .Execute(executionContext)
            .Subscribe();

            action3
            .Verify(x => x.Execute(executionContext))
            .WasCalledExactlyOnce();
        }
        public void duration_is_the_sum_of_all_exercise_durations()
        {
            var action1 = new ActionMock();
            var action2 = new ActionMock();

            action1
                .When(x => x.Duration)
                .Return(TimeSpan.FromSeconds(1));

            action2
                .When(x => x.Duration)
                .Return(TimeSpan.FromSeconds(10));

            var sut = new ExerciseProgramBuilder()
                .WithExercise(new ExerciseBuilder()
                    .WithBeforeExerciseAction(action1))
                .WithExercise(new ExerciseBuilder()
                    .WithBeforeExerciseAction(action2))
                .WithExercise(new ExerciseBuilder()
                    .WithBeforeExerciseAction(action1))
                .Build();

            Assert.Equal(TimeSpan.FromSeconds(12), sut.Duration);
        }
        public void duration_is_the_sum_of_all_exercise_durations()
        {
            var action1 = new ActionMock();
            var action2 = new ActionMock();

            action1
            .When(x => x.Duration)
            .Return(TimeSpan.FromSeconds(1));

            action2
            .When(x => x.Duration)
            .Return(TimeSpan.FromSeconds(10));

            var sut = new ExerciseProgramBuilder()
                      .WithExercise(new ExerciseBuilder()
                                    .WithBeforeExerciseAction(action1))
                      .WithExercise(new ExerciseBuilder()
                                    .WithBeforeExerciseAction(action2))
                      .WithExercise(new ExerciseBuilder()
                                    .WithBeforeExerciseAction(action1))
                      .Build();

            Assert.Equal(TimeSpan.FromSeconds(12), sut.Duration);
        }
        public void execute_async_throws_if_the_context_is_null()
        {
            var sut = new ExerciseProgramBuilder()
                .Build();

            Assert.Throws<ArgumentNullException>(() => sut.ExecuteAsync(null));
        }
        public void execute_async_executes_each_exercise()
        {
            var action1 = new ActionMock(MockBehavior.Loose);
            var action2 = new ActionMock(MockBehavior.Loose);

            var sut = new ExerciseProgramBuilder()
                .AddExercise(new ExerciseBuilder()
                    .WithBeforeExerciseAction(action1))
                .AddExercise(new ExerciseBuilder()
                    .WithBeforeExerciseAction(action2))
                .Build();

            using (var executionContext = new ExecutionContext())
            {
                sut.ExecuteAsync(executionContext);

                action1
                    .Verify(x => x.ExecuteAsync(executionContext))
                    .WasCalledExactlyOnce();

                action2
                    .Verify(x => x.ExecuteAsync(executionContext))
                    .WasCalledExactlyOnce();
            }
        }
        public void execute_async_skips_exercises_that_are_shorter_than_the_skip_ahead()
        {
            var action1 = new ActionMock(MockBehavior.Loose);
            var action2 = new ActionMock(MockBehavior.Loose);
            var action3 = new ActionMock(MockBehavior.Loose);

            action1
                .When(x => x.Duration)
                .Return(TimeSpan.FromSeconds(13));

            action2
                .When(x => x.Duration)
                .Return(TimeSpan.FromSeconds(10));

            action3
                .When(x => x.Duration)
                .Return(TimeSpan.FromSeconds(5));

            action1
                .When(x => x.ExecuteAsync(It.IsAny<ExecutionContext>()))
                .Throw();

            action2
                .When(x => x.ExecuteAsync(It.IsAny<ExecutionContext>()))
                .Throw();

            var sut = new ExerciseProgramBuilder()
                .AddExercise(new ExerciseBuilder()
                    .WithBeforeExerciseAction(action1))
                .AddExercise(new ExerciseBuilder()
                    .WithBeforeExerciseAction(action2))
                .AddExercise(new ExerciseBuilder()
                    .WithBeforeExerciseAction(action3))
                .Build();

            using (var executionContext = new ExecutionContext(TimeSpan.FromSeconds(23)))
            {
                sut.ExecuteAsync(executionContext);

                action3
                    .Verify(x => x.ExecuteAsync(executionContext))
                    .WasCalledExactlyOnce();
            }
        }