public void duration_is_zero_if_there_are_no_exercises() { var sut = new ExerciseProgramBuilder() .Build(); Assert.Equal(TimeSpan.Zero, sut.Duration); }
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_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 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 execute_async_throws_if_the_context_is_null() { var sut = new ExerciseProgramBuilder() .Build(); Assert.Throws<ArgumentNullException>(() => sut.ExecuteAsync(null)); }
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(); } }