Exemple #1
0
            public void WHEN_CatchTheBallPlayedPerfectlyInAllRounds_THEN_SubscoreOf100IsObtained()
            {
                Setup();

                TimeToContact.catchTheBallData = new CatchTheBallStorage
                {
                    TargetRadius = DUMMY_TARGET_RADIUS,
                    Rounds       = new List <CatchTheBallStorage.BallRound>
                    {
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 3.5F,
                            PredictedTimeToContact = 3.5F
                        },
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 5.6F,
                            PredictedTimeToContact = 5.6F
                        },
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 8.3F,
                            PredictedTimeToContact = 8.3F
                        },
                    }
                };

                TimeToContact.EvaluateCatchTheBallScore();

                Assert.AreEqual(100, TimeToContact.GetSubScoreForCatchTheBall().Score);
            }
Exemple #2
0
            public void JudgeTheBallSubScoreCalculatedAsAccuracyAverageBetweenRounds()
            {
                Setup();

                TimeToContact.judgeTheBallData = new JudgeTheBallStorage
                {
                    TargetRadius = DUMMY_TARGET_RADIUS,
                    Rounds       = new List <JudgeTheBallStorage.BallRound>
                    {
                        new JudgeTheBallStorage.BallRound
                        {
                            PlayerBallActualTimeToContact = 3.5F,
                            PredictedTimeToContact        = 5F
                        },
                        new JudgeTheBallStorage.BallRound
                        {
                            PlayerBallActualTimeToContact = 5.6F,
                            PredictedTimeToContact        = 5
                        },
                        new JudgeTheBallStorage.BallRound
                        {
                            PlayerBallActualTimeToContact = 9F,
                            PredictedTimeToContact        = 8.3F
                        },
                    }
                };

                TimeToContact.EvaluateJudgeTheBallScore();

                // FLOOR(1/3 * ((100 - |1 - 5/3.5|*100) + (100 - |1 - 5/5.6|*100) + (100 - |1 - 8.3/9|*100))) = 79

                Assert.AreEqual(79, TimeToContact.GetSubScoreForJudgeTheBall().Score);
            }
        //Helper functions start
        //---------------------------------------------------------
        //---------------------------------------------------------

        /// <summary>
        /// MeasureAllGames is called when all games end. It will call methods of
        /// evaluating scores for all abilities.
        /// </summary>
        private static void MeasureAllGames()
        {
            // Measure abilities for Balloons
            // If the game has been played, do the measurement; else don't do the measurement
            if (!notYetPlayBalloons)
            {
                PointingMeasure.EvaluateBalloonsScore();
                SelectiveVisualMeasure.EvaluateBalloonsScore();
                InhibitionMeasure.EvaluateBalloonsScore();
            }

            // Measure abilities for Squares
            // If the game has been played, do the measurement; else don't do the measurement
            if (!notYetPlaySquares)
            {
                SelectiveVisualMeasure.EvaluateSquaresScore();
                VisuospatialSketchpadMeasure.EvaluateSquaresScore();
            }

            // Measure abilities for Catch The Thief
            // If the game has been played, do the measurement; else don't do the measurement
            if (!notYetPlayCTF)
            {
                InhibitionMeasure.EvaluateCTFScore();
                SelectiveVisualMeasure.EvaluateCTFScore();
            }

            // Measure abilities for ImageHit
            // If the game has been played, do the measurement; else don't do the measurement
            if (!notYetPlayImageHit)
            {
                ObjectRecognitionMeasure.EvaluateImageHitScore();
                InhibitionMeasure.EvaluateImageHitScore();
                SelectiveVisualMeasure.EvaluateImageHitScore();
            }

            // Measure abilities for Catch The Ball
            // If the game has been played, do the measurement; else don't do the measurement
            if (!notYetCatchTheBall)
            {
                TimeToContact.EvaluateCatchTheBallScore();
            }

            // Measure abilities for Save One Ball
            // If the game has been played, do the measurement; else don't do the measurement
            if (!notYetSaveOneBall)
            {
                TimeToContact.EvaluateSaveOneBallScore();
            }

            // Measure abilities for Judge The Ball
            // If the game has been played, do the measurement; else don't do the measurement
            if (!notYetJudgeTheBall)
            {
                TimeToContact.EvaluateJudgeTheBallScore();
            }
        }
Exemple #4
0
            public void WHEN_EvaluateJudgeTheBallScoreCalledWithNoData_THEN_ScoreOfNegative1IsObtained()
            {
                Setup();

                TimeToContact.EvaluateJudgeTheBallScore();
                SubscoreStorage subscore = TimeToContact.GetSubScoreForJudgeTheBall();

                Assert.AreEqual(-1, subscore.Score);
            }
Exemple #5
0
            public void SaveOneBallSubScoreCalculatedAsAccuracyAverageBetweenRounds()
            {
                Setup();

                TimeToContact.saveOneBallData = new SaveOneBallStorage
                {
                    TargetRadius = DUMMY_TARGET_RADIUS,
                    Rounds       = new List <SaveOneBallStorage.BallRound>
                    {
                        new SaveOneBallStorage.BallRound
                        {
                            LeftActualTimeToContact     = 3.5F,
                            RightActualTimeToContact    = 3.5F,
                            PredictedTimeToContact      = 5F,
                            DidPredictFirstArrivingBall = true,
                        },
                        new SaveOneBallStorage.BallRound
                        {
                            LeftActualTimeToContact     = 5.6F,
                            RightActualTimeToContact    = 5.6F,
                            PredictedTimeToContact      = 5,
                            DidPredictFirstArrivingBall = false
                        },
                        new SaveOneBallStorage.BallRound
                        {
                            LeftActualTimeToContact     = 9F,
                            RightActualTimeToContact    = 9F,
                            PredictedTimeToContact      = 8.3F,
                            DidPredictFirstArrivingBall = true
                        },
                    }
                };

                TimeToContact.EvaluateSaveOneBallScore();

                // FLOOR(1/3 * ((100 - |1 - 5/3.5|*100) + 0 + (100 - |1 - 8.3/9|*100))) = 49

                Assert.AreEqual(49, TimeToContact.GetSubScoreForSaveOneBall().Score);
            }
Exemple #6
0
            public void WHEN_SaveOneBallPlayedPerfectlyInAllRounds_THEN_SubscoreOf100IsObtained()
            {
                Setup();

                TimeToContact.saveOneBallData = new SaveOneBallStorage
                {
                    TargetRadius = DUMMY_TARGET_RADIUS,
                    Rounds       = new List <SaveOneBallStorage.BallRound>
                    {
                        new SaveOneBallStorage.BallRound
                        {
                            LeftActualTimeToContact     = 3.5F,
                            RightActualTimeToContact    = 3.5F,
                            PredictedTimeToContact      = 3.5F,
                            DidPredictFirstArrivingBall = true
                        },
                        new SaveOneBallStorage.BallRound
                        {
                            LeftActualTimeToContact     = 5.6F,
                            RightActualTimeToContact    = 5.6F,
                            PredictedTimeToContact      = 5.6F,
                            DidPredictFirstArrivingBall = true
                        },
                        new SaveOneBallStorage.BallRound
                        {
                            LeftActualTimeToContact     = 8.3F,
                            RightActualTimeToContact    = 8.3F,
                            PredictedTimeToContact      = 8.3F,
                            DidPredictFirstArrivingBall = true
                        },
                    }
                };

                TimeToContact.EvaluateSaveOneBallScore();

                Assert.AreEqual(100, TimeToContact.GetSubScoreForSaveOneBall().Score);
            }
        /// <summary>
        /// UpdateSubScoreSeq is to derive all subscore records and
        /// add these records to the subScoreSeq.
        /// </summary>
        private static void UpdateSubScoreSeq()
        {
            // Update subscores of abilities tested by Balloons and add them to sequence
            // If the game has been played, update the score
            if (!notYetPlayBalloons)
            {
                //get subscore for (Flicking, Balloons)
                SubscoreStorage flicking_balloons = PointingMeasure.GetSubScoreForBalloons();
                //get subscore for (Inhibition, Balloons)
                SubscoreStorage inhibition_balloons = InhibitionMeasure.GetSubScoreForBalloons();
                //get subscore for (Selective Visual, Balloons)
                SubscoreStorage selectiveVisual_balloons = SelectiveVisualMeasure.GetSubScoreForBalloons();

                //add subScore to subScoreSeq
                subScoreSeq.Add(flicking_balloons);
                subScoreSeq.Add(inhibition_balloons);
                subScoreSeq.Add(selectiveVisual_balloons);
            }

            // Update subscores of abilities tested by Squares and add them to sequence
            // If the game has been played, update the score
            if (!notYetPlaySquares)
            {
                //get subscore for (Selective Visual, Squares)
                SubscoreStorage selectiveVisual_squares = SelectiveVisualMeasure.GetSubScoreForSquares();
                //get subscore for (Visuospatial Sketchpad, Squares)
                SubscoreStorage visuospatialSketchpad_squares = VisuospatialSketchpadMeasure.GetSubScoreForSquares();

                //add subScore to subScoreSeq
                subScoreSeq.Add(selectiveVisual_squares);
                subScoreSeq.Add(visuospatialSketchpad_squares);
            }

            // Update subscores of abilities tested by Catch The Thief and add them to sequence
            // If the game has been played, update the score
            if (!notYetPlayCTF)
            {
                //get subscore for (Inhibition, Catch The Thief)
                SubscoreStorage inhibition_ctf = InhibitionMeasure.GetSubScoreForCTF();
                //get subscore for  (Selective Visual, Catch The Thief)
                SubscoreStorage selectiveVisual_ctf = SelectiveVisualMeasure.GetSubScoreForCTF();

                //add subScore to subScoreSeq
                subScoreSeq.Add(inhibition_ctf);
                subScoreSeq.Add(selectiveVisual_ctf);
            }

            // Update subscores of abilities tested by ImageHit and add them to sequence
            // If the game has been played, update the score
            if (!notYetPlayImageHit)
            {
                //get subscore for (Object Recognition, ImageHit)
                SubscoreStorage objectRecognition_imageHit = ObjectRecognitionMeasure.GetSubScoreForImageHit();
                //get subscore for (Inhibition, ImageHit)
                SubscoreStorage inhibition_imageHit = InhibitionMeasure.GetSubScoreForImageHit();
                //get subscore for  (Selective Visual, ImageHit)
                SubscoreStorage selectiveVisual_imageHit = SelectiveVisualMeasure.GetSubScoreForImageHit();

                //add subScore to subScoreSeq
                subScoreSeq.Add(objectRecognition_imageHit);
                subScoreSeq.Add(inhibition_imageHit);
                subScoreSeq.Add(selectiveVisual_imageHit);
            }

            // Update subscores of abilities tested by Catch The Ball and add them to sequence
            // If the game has been played, update the score
            if (!notYetCatchTheBall)
            {
                //get subscore for (Time To Contact, Catch The Ball)
                SubscoreStorage timeToContact_catchTheBall = TimeToContact.GetSubScoreForCatchTheBall();

                //add subScore to subScoreSeq
                subScoreSeq.Add(timeToContact_catchTheBall);
            }

            // Update subscores of abilities tested by Save One Ball and add them to sequence
            // If the game has been played, update the score
            if (!notYetSaveOneBall)
            {
                //get subscore for (Time To Contact, Save One Ball)
                SubscoreStorage timeToContact_saveOneBall = TimeToContact.GetSubScoreForSaveOneBall();

                //add subScore to subScoreSeq
                subScoreSeq.Add(timeToContact_saveOneBall);
            }

            // Update subscores of abilities tested by Judge The Ball and add them to sequence
            // If the game has been played, update the score
            if (!notYetJudgeTheBall)
            {
                //get subscore for (Time To Contact, Judge The Ball)
                SubscoreStorage timeToContact_judgeTheBall = TimeToContact.GetSubScoreForJudgeTheBall();

                //add subScore to subScoreSeq
                subScoreSeq.Add(timeToContact_judgeTheBall);
            }
        }