Example #1
0
        public static AbstractExercise GetExerciseGivenPath(string path, ExerciseAlbum album)
        {
            if (null == path)
            {
                return(null);
            }

            Queue <string> dirs = new Queue <string>();

            string[] path_split = path.Split('/');
            foreach (string p in path_split)
            {
                dirs.Enqueue(p);
            }
            AbstractExercise iAe = album;

            while (dirs.Count > 0)
            {
                string name = dirs.Dequeue();
                if (iAe is ExerciseAlbum a)
                {
                    iAe = a.GetExercise(name);
                }

                // check result
                if (iAe == null)
                {
                    return(null);
                }
                else if (iAe is ExerciseSingle single &&
                         dirs.Count > 0)
                {
                    return(null);
                }
Example #2
0
        // generate a root test album and serailize it
        static void GenerateTestRootAlbum()
        {
            ExerciseAlbum album = new ExerciseAlbum("Root Album");

            // add: print list reversely
            string          filepath = @"..\..\..\ProgramTestInput\ExerciseTexts\PrintListReversely.txt";
            ExerciseProblem problem  =
                ExerciseProblem.GetExerciseProblem(filepath);
            ExerciseSingle single = new ExerciseSingle(problem);

            album.AddExercise(single);

            // add: quicksort
            filepath = @"..\..\..\ProgramTestInput\ExerciseTexts\quicksort.txt";
            problem  =
                ExerciseProblem.GetExerciseProblem(filepath);
            single = new ExerciseSingle(problem);
            album.AddExercise(single);

            // serialize the root album
            AbstractExercise.WriteExerciseToXml(album, rootAlbumPath);
        }