Esempio n. 1
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));
            }
        }
Esempio n. 2
0
        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));
            }
        }
Esempio n. 3
0
        public void RecorderViewModel_TimeProgressPercentageAllocation_Displayed_Correctly()
        {
            var exerciseService  = new Mock <IExerciseService>();
            var exerciseRecorder = new ExerciseRecorder(new Recorder(), 1, "Exercise Title",
                                                        new SpeedProgress(85, 85, 120, 500),
                                                        new PracticeTimeProgress(300, 600, 500),
                                                        new ManualProgress(0, 1000));

            var viewModel = new ExerciseRecorderViewModel(exerciseService.Object, exerciseRecorder);

            Assert.That(viewModel.TimeProgressPercentageAllocation, Is.EqualTo("25%"));
        }
Esempio n. 4
0
        public void RecorderViewModel_Initialized_RecordingStatus_Is_Not_Recording()
        {
            var exerciseService  = new Mock <IExerciseService>();
            var exerciseRecorder = new ExerciseRecorder(new Recorder(), 1, "Exercise Title",
                                                        new SpeedProgress(85, 85, 120, 10),
                                                        new PracticeTimeProgress(300, 600, 10),
                                                        new ManualProgress(0, 100));

            var viewModel = new ExerciseRecorderViewModel(exerciseService.Object, exerciseRecorder);

            Assert.That(viewModel.Status, Is.EqualTo(""));
        }
Esempio n. 5
0
        public void Disposing_Calls_Dispose_On_Recorder()
        {
            var recorder             = new Mock <IRecorder>();
            var recorderMock         = recorder.Object;
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorderMock, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object)) { /* some operation */ }

            recorder.Verify(mock => mock.Dispose(), Times.Once());
        }
Esempio n. 6
0
        public void When_30_Sec_Add_0_Minute_Remains_Unchanged()
        {
            var recorder             = new TestRecorder(30);
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                exerciseRecorder.AddMinutes(0);
                Assert.AreEqual(30, exerciseRecorder.RecordedSeconds);
            }
        }
Esempio n. 7
0
        public void When_30_Sec_Add_Minute_Goes_To_Next_Exact_Minute()
        {
            var recorder             = new TestRecorder(30);
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                exerciseRecorder.AddMinutes(1);
                Assert.AreEqual(60, exerciseRecorder.RecordedSeconds);
            }
        }
Esempio n. 8
0
        public void When_Added_And_SecondsAreFraction_Removes_Fraction_InIncrement()
        {
            var recorder             = new TestRecorder(110.3);
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                exerciseRecorder.AddMinutes(2);
                Assert.AreEqual(180, exerciseRecorder.RecordedSeconds);
            }
        }
Esempio n. 9
0
        public void When_Is_5Min40sec_Subtract_3Min_Minute_Is_3_Minutes()
        {
            var recorder             = new TestRecorder(340);
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                exerciseRecorder.SubtractMinutes(3);
                Assert.AreEqual(180, exerciseRecorder.RecordedSeconds);
            }
        }
Esempio n. 10
0
        public void When_Time_Recorded_CurrentTotalSeconds_Reflects_TimeRecorded_And_Previous_PracticeTime()
        {
            var speedProgress  = new Mock <ISpeedProgress>();
            var manualProgress = new Mock <IManualProgress>();

            var recorder             = new TestRecorder(300);
            var practiceTimeProgress = new PracticeTimeProgress(300, 900, 100);

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress, manualProgress.Object))
            {
                Assert.AreEqual(600, exerciseRecorder.CurrentTotalSeconds);
                Assert.That(exerciseRecorder.CurrentTimeProgress, Is.EqualTo(67));
            }
        }
Esempio n. 11
0
        public void Displays_Correct_TotalSecondsDisplay()
        {
            var recorder       = new TestRecorder(300);
            var manualProgress = new Mock <IManualProgress>();
            var speedProgress  = new Mock <ISpeedProgress>();

            var practiceTimeProgress = new PracticeTimeProgress(600, 1000, 100);

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress, manualProgress.Object))
            {
                Assert.That(exerciseRecorder.TotalSecondsDisplay, Is.EqualTo("00:15:00"));
                Assert.That(exerciseRecorder.RecordedSecondsDisplay, Is.EqualTo("00:05:00"));
            }
        }
Esempio n. 12
0
        public void RecorderViewModel_RecordingStatus_Gets_Value_From_ExerciseRecorder()
        {
            var exerciseService  = new Mock <IExerciseService>();
            var exerciseRecorder = new ExerciseRecorder(new Recorder(), 1, "Exercise Title",
                                                        new SpeedProgress(85, 85, 120, 10),
                                                        new PracticeTimeProgress(300, 600, 10),
                                                        new ManualProgress(0, 100));

            var viewModel = new ExerciseRecorderViewModel(exerciseService.Object, exerciseRecorder);

            exerciseRecorder.Resume();

            Assert.That(viewModel.Status, Is.EqualTo("RECORDING..."));
        }
Esempio n. 13
0
        public void When_ManualProgress_Changes_Current_Progress_Negatively_ManualProgress_Reflects_This_Correctly()
        {
            var recorder             = new Mock <IRecorder>();
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();

            var manualProgress = new ManualProgress(100, 100);

            using (var exerciseRecorder = new ExerciseRecorder(recorder.Object, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress))
            {
                exerciseRecorder.DecrementManualProgress(25);

                Assert.That(exerciseRecorder.CurrentManualProgress, Is.EqualTo(75));
            }
        }
Esempio n. 14
0
        public void Attempt_Subtract_Minutes_When_Recording_Does_Nothing()
        {
            var recorder             = new TestRecorder(110);
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                exerciseRecorder.Resume();
                exerciseRecorder.SubtractMinutes(2);
                exerciseRecorder.Pause();

                Assert.That(exerciseRecorder.RecordedSeconds, Is.InRange(110, 112));
            }
        }
Esempio n. 15
0
        public void When_SpeedRecorded_Changes_Current_Speed_Positively_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.IncrementSpeed(25);

                Assert.AreEqual(125, exerciseRecorder.CurrentSpeed);
                Assert.That(exerciseRecorder.CurrentSpeedProgress, Is.EqualTo(75));
            }
        }
Esempio n. 16
0
        public void RecorderViewModel_Initial_State_Is_Correct()
        {
            var exerciseService  = new Mock <IExerciseService>();
            var exerciseRecorder = new ExerciseRecorder(new Recorder(), 1, "Exercise Title",
                                                        new SpeedProgress(85, 85, 120, 10),
                                                        new PracticeTimeProgress(300, 600, 10),
                                                        new ManualProgress(0, 100));

            var viewModel = new ExerciseRecorderViewModel(exerciseService.Object, exerciseRecorder);

            Assert.AreEqual(TimeFuncs.ZeroTimeDisplay, viewModel.RecordingTimeDisplay);
            Assert.AreEqual(false, viewModel.Recording);
            Assert.AreEqual(0, viewModel.Seconds);
            Assert.AreEqual("", viewModel.Status);
            Assert.AreEqual("Exercise Title", viewModel.Title);
        }
Esempio n. 17
0
        public void RecordingStatusChanged_Event_Fired_On_Pause()
        {
            var called               = false;
            var recorder             = new TestRecorder(110);
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                exerciseRecorder.Resume();
                exerciseRecorder.RecordingStatusChanged += (sender, args) => called = true;
                exerciseRecorder.Pause();

                Assert.IsTrue(called);
            }
        }
Esempio n. 18
0
        public void Exercise_PracticeTimeProgress_Properties_Are_Reflected_Correctly_On_Initialization()
        {
            var recorder       = new TestRecorder(0);
            var manualProgress = new Mock <IManualProgress>();
            var speedProgress  = new Mock <ISpeedProgress>();

            var practiceTimeProgress = new PracticeTimeProgress(300, 600, 100);

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title",
                                                               speedProgress.Object, practiceTimeProgress, manualProgress.Object
                                                               ))
            {
                Assert.That(exerciseRecorder.Title, Is.EqualTo("Exercise Title"));
                Assert.That(exerciseRecorder.CurrentTotalSeconds, Is.EqualTo(300));
                Assert.That(exerciseRecorder.CurrentTimeProgress, Is.EqualTo(50));
            }
        }
Esempio n. 19
0
        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));
            }
        }
Esempio n. 20
0
        public void Correctly_Reflects_Current_Recorder_State()
        {
            var recorder             = new Mock <IRecorder>();
            var recorderMock         = recorder.Object;
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            recorder.Setup(mock => mock.Recording).Returns(true);
            recorder.Setup(mock => mock.PreciseSeconds).Returns(300);
            recorder.Setup(mock => mock.DisplayTime).Returns("00:05:00");

            using (var exerciseRecorder = new ExerciseRecorder(recorderMock, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                Assert.That(exerciseRecorder.Recording, Is.EqualTo(recorderMock.Recording));
                Assert.That(exerciseRecorder.RecordedSeconds, Is.EqualTo(recorderMock.PreciseSeconds));
                Assert.That(exerciseRecorder.RecordedSecondsDisplay, Is.EqualTo(recorderMock.DisplayTime));
            }
        }
Esempio n. 21
0
        public void TickActionCallBack_Called_After_Adding_Minutes()
        {
            bool fired = false;

            void action() => fired = true;

            var recorder             = new TestRecorder(110);
            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                exerciseRecorder.TickActionCallBack = action;
                exerciseRecorder.AddMinutes(2);

                Assert.IsTrue(fired);
            }
        }
Esempio n. 22
0
        public void Exercise_ManualProgress_Properties_Are_Reflected_Correctly_On_Initialization()
        {
            var recorder = new Mock <IRecorder>();

            var speedProgress        = new Mock <ISpeedProgress>();
            var practiceTimeProgress = new Mock <IPracticeTimeProgress>();

            var manualProgress = new Mock <IManualProgress>();

            manualProgress.Setup(obj => obj.CalculateProgress()).Returns(50);

            using (var exerciseRecorder = new ExerciseRecorder(recorder.Object, 1, "Exercise Title",
                                                               speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object
                                                               ))
            {
                Assert.That(exerciseRecorder.Title, Is.EqualTo("Exercise Title"));
                Assert.That(exerciseRecorder.CurrentManualProgress, Is.EqualTo(50));
            }
        }
Esempio n. 23
0
        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);
            }
        }
Esempio n. 24
0
        public void WeightedProgressCalculator_CalculateTotalProgress_Test_1()
        {
            var recorder = new TestRecorder(300);

            var speedProgress = new Mock <ISpeedProgress>();

            speedProgress.Setup(obj => obj.CalculateProgress()).Returns(25);
            speedProgress.Setup(obj => obj.Weighting).Returns(6000);

            var practiceTimeProgress = new PracticeTimeProgress(300, 300, 6000);

            var manualProgress = new Mock <IManualProgress>();

            manualProgress.Setup(obj => obj.CalculateProgress()).Returns(60);
            manualProgress.Setup(obj => obj.Weighting).Returns(12000);

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress, manualProgress.Object))
            {
                Assert.That(exerciseRecorder.CurrentOverAllProgress, Is.EqualTo(61));
            }
        }
Esempio n. 25
0
        public void RecorderViewModel_Recording_Reflects_Model_Recording()
        {
            var exerciseService  = new Mock <IExerciseService>();
            var exerciseRecorder = new ExerciseRecorder(new Recorder(), 1, "Exercise Title",
                                                        new SpeedProgress(85, 85, 120, 10),
                                                        new PracticeTimeProgress(300, 600, 10),
                                                        new ManualProgress(0, 100));

            var viewModel = new ExerciseRecorderViewModel(exerciseService.Object, exerciseRecorder);

            exerciseRecorder.Resume();
            var recording = exerciseRecorder.Recording && viewModel.Recording;

            exerciseRecorder.Pause();
            var paused = !exerciseRecorder.Recording && !viewModel.Recording;

            exerciseRecorder.Resume();
            exerciseRecorder.Reset();
            var reset = !exerciseRecorder.Recording && !viewModel.Recording;

            Assert.IsTrue(recording);
            Assert.IsTrue(paused);
            Assert.IsTrue(reset);
        }
Esempio n. 26
0
        public void Correctly_Changes_Recording_State_With_Recorder()
        {
            Recorder recorder             = new Recorder();
            var      speedProgress        = new Mock <ISpeedProgress>();
            var      practiceTimeProgress = new Mock <IPracticeTimeProgress>();
            var      manualProgress       = new Mock <IManualProgress>();

            using (var exerciseRecorder = new ExerciseRecorder(recorder, 1, "Exercise Title", speedProgress.Object, practiceTimeProgress.Object, manualProgress.Object))
            {
                recorder.Resume();
                var isRecording = exerciseRecorder.Recording;

                recorder.Pause();
                var isPaused = !exerciseRecorder.Recording;

                recorder.Resume();
                recorder.Reset();
                var isReset = !exerciseRecorder.Recording;

                Assert.IsTrue(isRecording);
                Assert.IsTrue(isPaused);
                Assert.IsTrue(isReset);
            }
        }