public void ObjectsAreSemanticallyEquivalent()
            {
                CatchTheBallStorage storage1 = new CatchTheBallStorage
                {
                    TargetRadius = DUMMY_TARGET_RADIUS,
                    Rounds       = new List <CatchTheBallStorage.BallRound>
                    {
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 5.3F,
                            InitialBallRadius      = 3.9F,
                            PredictedTimeToContact = 6.8F
                        },
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 6.3F,
                            InitialBallRadius      = 7.4F,
                            PredictedTimeToContact = 6.2F
                        },
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 9.2F,
                            InitialBallRadius      = 4,
                            PredictedTimeToContact = 9.2F
                        },
                    }
                };

                CatchTheBallStorage storage2 = new CatchTheBallStorage
                {
                    TargetRadius = DUMMY_TARGET_RADIUS,
                    Rounds       = new List <CatchTheBallStorage.BallRound>
                    {
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 5.3F,
                            InitialBallRadius      = 3.9F,
                            PredictedTimeToContact = 6.8F
                        },
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 6.3F,
                            InitialBallRadius      = 7.4F,
                            PredictedTimeToContact = 6.2F
                        },
                        new CatchTheBallStorage.BallRound
                        {
                            ActualTimeToContact    = 9.2F,
                            InitialBallRadius      = 4,
                            PredictedTimeToContact = 9.2F
                        },
                    }
                };

                Assert.AreEqual(storage1, storage2);
            }
        /// <summary>
        /// FillAllGameData is to update game data objects with corresponding raw gameplay data.
        /// It will only get gameplay data for the games that have been played.
        /// </summary>
        public void FillAllGameData()
        {
            // Get gameplay data for Balloons
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetPlayBalloons)
            {
                balloonsData = Balloons.GetGameplayData();
            }

            // Get gameplay data for Squares
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetPlaySquares)
            {
                squaresData = Squares.GetGameplayData();
            }


            // Get gameplay data for Catch The Thief
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetPlayCTF)
            {
                ctfData = CatchTheThief.GetGameplayData();
            }

            // Get gameplay data for ImageHit
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetPlayImageHit)
            {
                imageHitData = ImageHit.GetGameplayData();
            }

            // Get gameplay data for Catch The Ball
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetCatchTheBall)
            {
                catchTheBallData = CatchTheBall.GetGameplayData();
            }

            // Get gameplay data for Save One Ball
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetSaveOneBall)
            {
                saveOneBallData = SaveOneBall.GetGameplayData();
            }

            // Get gameplay data for Judge The Ball
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetJudgeTheBall)
            {
                judgeTheBallData = JudgeTheBall.GetGameplayData();
            }
        }