public PracticeRoutineRecorder GetPracticeRoutineRecorder(int id) { try { PracticeRoutine practiceRoutine = Get(id); var exerciseRecorderRecords = Connection.Query <PracticeRoutineExerciseRecorderRecord>("sp_GetPracticeRoutineExerciseRecordersByRoutineId", param: new { _practiceRoutineId = id }, commandType: CommandType.StoredProcedure); List <TimeSlotExerciseRecorder> exerciseRecorders = new List <TimeSlotExerciseRecorder>(); foreach (var rec in exerciseRecorderRecords) { var speedProgress = new SpeedProgress(rec.InitialRecordedSpeed, rec.LastRecordedSpeed, rec.TargetMetronomeSpeed, rec.SpeedProgressWeighting); var timeProgress = new PracticeTimeProgress(rec.TotalPracticeTime, rec.TargetPracticeTime, rec.PracticeTimeProgressWeighting); var manualProgress = new ManualProgress(rec.LastRecordedManualProgress, rec.ManualProgressWeighting); exerciseRecorders.Add(new TimeSlotExerciseRecorder(new Recorder(), rec.ExerciseId, $"{rec.TimeSlotTitle} : {rec.ExerciseTitle}", speedProgress, timeProgress, manualProgress, rec.AssignedPracticeTime)); } var practiceRoutineRecorder = new PracticeRoutineRecorder(practiceRoutine.Id, practiceRoutine.Title, exerciseRecorders); return(practiceRoutineRecorder); } catch (InvalidOperationException ex) { throw new DatabaseEntityNotFoundException($"Database entity does not exist for id: {id}", ex); } }
public static ExerciseRecorder CreateManualProgressExerciseRecorder(int value) { var recorder = new Recorder(); var speedProgress = new SpeedProgress(0, 0, 0, 0); var practiceTimeProgress = new PracticeTimeProgress(0, 0, 0); var manualProgress = new ManualProgress(value, 100); return(new ExerciseRecorder(recorder, 1, "Time Exercise", speedProgress, practiceTimeProgress, manualProgress)); }
public static TimeSlotExerciseRecorder CreateSpeedProgressTimeSlotExerciseRecorder(int initialSpeed, int currentSpeed, int targetSpeed, int assignedTime) { var recorder = new Recorder(); var speedProgress = new SpeedProgress(initialSpeed, currentSpeed, targetSpeed, 100); var practiceTimeProgress = new PracticeTimeProgress(0, 0, 0); var manualProgress = new ManualProgress(0, 0); return(new TimeSlotExerciseRecorder(recorder, 1, "Speed Exercise", speedProgress, practiceTimeProgress, manualProgress, assignedTime)); }
public static TimeSlotExerciseRecorder CreateManualProgressTimeSlotExerciseRecorder(int value, int assignedTime) { var recorder = new Recorder(); var speedProgress = new SpeedProgress(0, 0, 0, 0); var practiceTimeProgress = new PracticeTimeProgress(0, 0, 0); var manualProgress = new ManualProgress(value, 100); return(new TimeSlotExerciseRecorder(recorder, 1, "Time Exercise", speedProgress, practiceTimeProgress, manualProgress, assignedTime)); }
public static TimeSlotExerciseRecorder CreateTimeSlotExerciseRecorder(int assignedTime) { var recorder = new Recorder(); var manualProgress = new ManualProgress(0, 50); var speedProgress = new SpeedProgress(0, 0, 120, 50); var practiceTimeProgress = new PracticeTimeProgress(0, 600, 50); return(new TimeSlotExerciseRecorder(recorder, 1, "Exercise Title", speedProgress, practiceTimeProgress, manualProgress, assignedTime)); }
public void When_CurrentSpeed_IsBelow_InitialSpeed_Always_Return_0_Percent() { var speedProgress = new SpeedProgress( initialSpeed: 60, currentSpeed: 50, targetSpeed: 100, weighting: 100 ); Assert.That(speedProgress.CalculateProgress(), Is.EqualTo(0)); }
public void No_TargetSpeed_Always_Has_100_Percent_Complete() { var speedProgress = new SpeedProgress( initialSpeed: 60, currentSpeed: 80, targetSpeed: 0, weighting: 100 ); Assert.That(speedProgress.CalculateProgress(), Is.EqualTo(100)); }
public void No_InitialSpeed_But_Has_TargetSpeed_Calcs_Correctly() { var speedProgress = new SpeedProgress( initialSpeed: 0, currentSpeed: 35, targetSpeed: 100, weighting: 100 ); Assert.That(speedProgress.CalculateProgress(), Is.EqualTo(35)); }
public void Quarter_Way_Between_Initial_And_Target_Speeds_Means_Quarter_Progress() { var speedProgress = new SpeedProgress( initialSpeed: 10, currentSpeed: 35, targetSpeed: 110, weighting: 100 ); Assert.That(speedProgress.CalculateProgress(), Is.EqualTo(25)); }
public void Half_Way_Between_Initial_And_Target_Speeds_Means_Fifty_Percent_Progress() { var speedProgress = new SpeedProgress( initialSpeed: 10, currentSpeed: 60, targetSpeed: 110, weighting: 100 ); Assert.That(speedProgress.CalculateProgress(), Is.EqualTo(50)); }
public void Percentage_Progress_With_No_Weightings_Allocated_To_Speed_Returns_0() { var recorder = new Recorder(); var manualProgress = new ManualProgress(0, 0); var speedProgress = new SpeedProgress(0, 0, 120, 0); var practiceTimeProgress = new PracticeTimeProgress(0, 600, 0); using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress, practiceTimeProgress, manualProgress)) { Assert.That(exerciseRecorder.SpeedProgressPercentageAllocation, Is.EqualTo(0)); } }
public void Percentage_Progress_Allocation_To_Manual_ShowsCorrect_Percentage() { var recorder = new Recorder(); var manualProgress = new ManualProgress(0, 500); var speedProgress = new SpeedProgress(0, 0, 120, 500); var practiceTimeProgress = new PracticeTimeProgress(0, 600, 1000); using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress, practiceTimeProgress, manualProgress)) { Assert.That(exerciseRecorder.ManualProgressPercentageAllocation, Is.EqualTo(25)); } }
public void When_Ticks_Subtracted_GoBelowZero_CalculateProgress_Works_As_Expected() { var speedProgress = new SpeedProgress( initialSpeed: 100, currentSpeed: 125, targetSpeed: 200, weighting: 100 ); var newSpeedProgress = speedProgress.SubtractTicks(150); Assert.That(newSpeedProgress.CalculateProgress(), Is.EqualTo(0)); }
public void When_Ticks_OverTargetSpeed_Added_CalculateProgress_Works_As_Expected() { var speedProgress = new SpeedProgress( initialSpeed: 100, currentSpeed: 125, targetSpeed: 200, weighting: 100 ); var newSpeedProgress = speedProgress.AddTicks(100); Assert.That(newSpeedProgress.CalculateProgress(), Is.EqualTo(100)); }
public void TimeSlotTimer_RemainingTime_Negative_Returns_0() { int recordedTime = 601; int assignedTime = 600; var recorder = new TestRecorder(recordedTime); var manualProgress = new ManualProgress(0, 50); var speedProgress = new SpeedProgress(0, 0, 120, 50); var practiceTimeProgress = new PracticeTimeProgress(0, 600, 50); var exerciseRecorder = new TimeSlotExerciseRecorder(recorder, 1, "Exercise Title", speedProgress, practiceTimeProgress, manualProgress, assignedTime); Assert.That(exerciseRecorder.RemainingSeconds, Is.EqualTo(0)); }
public void When_Ticks_Subtracted_CalculateProgress_Works_As_Expected() { var speedProgress = new SpeedProgress( initialSpeed: 100, currentSpeed: 150, targetSpeed: 200, weighting: 100 ); var newSpeedProgress = speedProgress.SubtractTicks(25); Assert.AreEqual(125, newSpeedProgress.CurrentSpeed); Assert.That(newSpeedProgress.CalculateProgress(), Is.EqualTo(25)); }
public void Ensure_That_All_Properties_Set_When_Initialized() { var speedProgress = new SpeedProgress( initialSpeed: 10, currentSpeed: 60, targetSpeed: 110, weighting: 100 ); Assert.That(speedProgress.Weighting, Is.EqualTo(100)); Assert.That(speedProgress.InitialSpeed, Is.EqualTo(10)); Assert.That(speedProgress.CurrentSpeed, Is.EqualTo(60)); Assert.That(speedProgress.TargetSpeed, Is.EqualTo(110)); }
public void When_SpeedRecorded_Changes_Current_Speed_Negatively_SpeedProgress_Reflects_This_Correctly() { var recorder = new Mock <IRecorder>(); var manualProgress = new Mock <IManualProgress>(); var practiceTimeProgress = new Mock <IPracticeTimeProgress>(); var speedProgress = new SpeedProgress(50, 100, 150, 100); using (var exerciseRecorder = new ExerciseRecorder(recorder.Object, 1, "Exercise Title", speedProgress, practiceTimeProgress.Object, manualProgress.Object)) { exerciseRecorder.DecrementSpeed(25); Assert.AreEqual(75, exerciseRecorder.CurrentSpeed); Assert.That(exerciseRecorder.CurrentSpeedProgress, Is.EqualTo(25)); } }
public void Adding_Speed_Changes_Current_OverallProgress_When_Applicably_Weighted() { var recorder = new Recorder(); var manualProgress = new ManualProgress(0, 50); var speedProgress = new SpeedProgress(0, 0, 120, 50); var practiceTimeProgress = new PracticeTimeProgress(0, 600, 50); using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress, practiceTimeProgress, manualProgress)) { var progressBefore = exerciseRecorder.CurrentOverAllProgress; exerciseRecorder.IncrementSpeed(120); var progressAfter = exerciseRecorder.CurrentOverAllProgress; Assert.That(progressBefore, Is.LessThan(progressAfter)); Assert.That(progressAfter, Is.EqualTo(33)); } }
public IExerciseRecorder GetExerciseRecorder(int id) { try { var exercise = Get(id); var rec = Connection.QuerySingle <ExerciseRecorderRecord>("sp_GetExerciseRecorderByExerciseId", param: new { _exerciseId = id }, commandType: CommandType.StoredProcedure); var speedProgress = new SpeedProgress(rec.InitialRecordedSpeed, rec.LastRecordedSpeed, rec.TargetMetronomeSpeed, rec.SpeedProgressWeighting); var timeProgress = new PracticeTimeProgress(rec.TotalPracticeTime, rec.TargetPracticeTime, rec.PracticeTimeProgressWeighting); var manualProgress = new ManualProgress(rec.LastRecordedManualProgress, rec.ManualProgressWeighting); var exerciseRecorder = new ExerciseRecorder(new Recorder(), rec.ExerciseId, rec.ExerciseTitle, speedProgress, timeProgress, manualProgress); return(exerciseRecorder); } catch (InvalidOperationException ex) { throw new DatabaseEntityNotFoundException($"Database entity does not exist for id: {id}", ex); } }