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); }
// 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); }