public static StudentsAnswers OfDirPath(string dirPath, InputOutput[] inputOutputPath, LogFile logFile) { logFile.WriteLine("Checking " + dirPath); logFile.IncorporateTab(); try { var cFilePath = GetcFile(dirPath, logFile); if (cFilePath != null) { var ids = ExtractIds(cFilePath, logFile); var exeFile = CompilingOperation.Compile(cFilePath, logFile); var runningResults = CheckingOperation.RunTests(exeFile, inputOutputPath); logFile.WriteLine("Ended checking"); var didCompile = (exeFile != null).AsString(); return(new StudentsAnswers(cFilePath, didCompile, ids, runningResults)); } return(null); } finally { logFile.UncorporateTab(); } }
private void RunButton_OnClick(object sender, RoutedEventArgs e) { using (var logFile = LogFile.CreateAt(DesktopPath)) { logFile.WriteLine("Automatic Hw Checker, " + DateTime.Now.ToLongDateString()); logFile.WriteLine(); logFile.WriteLine("Input-Output Files:"); logFile.IncorporateTab(); logFile.WriteLine("Directory: " + InputOutputDirectoryPath); var inputOutputPairs = InputOutput.ParseOfDirectory(InputOutputDirectoryPath); inputOutputPairs.Select(x => x.AsString()).ForEach(logFile.WriteLine); logFile.UncorporateTab(); logFile.WriteLine(); RenameToEnglish(HomeworkSolutionsDirectoryPath); logFile.WriteLine("Checking Files:"); logFile.IncorporateTab(); var studentsResults = CheckingOperation.CheckHw(HomeworkSolutionsDirectoryPath, inputOutputPairs, logFile); logFile.UncorporateTab(); logFile.WriteLine("Publishing CSV result at: " + CsvResultPath); File.WriteAllLines(CsvResultPath, StudentsAnswers.ToCsvLines(studentsResults, inputOutputPairs)); Process.Start(CsvResultPath); var cFilesDir = Path.Combine(DesktopPath, "cFiles"); Directory.CreateDirectory(cFilesDir); var rnd = new Random(); studentsResults.Where(r => r.cFilePath != null) .Select(r => r.cFilePath).ForEach(sourcePath => { var resultPath = Path.Combine(cFilesDir, Path.GetFileNameWithoutExtension(sourcePath) + "_" + rnd.Next() + ".c"); File.Copy(sourcePath, resultPath); }); logFile.WriteLine(); logFile.WriteLine("Finished Successfully"); } }