public OutputVerificationResult Verify(OutputVerificationInfo info) { StringBuilder argBuilder = new StringBuilder(); foreach (VerifierArgumentType arg in Arguments) { argBuilder.Append($" \"{GetVerifierArgument(info, arg)}\""); } ProcessRunResult checkerRun = ConsoleApplicationRunner.Instance.Run( ConsoleApplication, TimeSpan.FromSeconds(60), GetVerifierArgument(info, Stdin), argBuilder.ToString().TrimEnd() ); ; if (checkerRun.ExitType == ProcessExitType.Crashed) { return(new OutputVerificationResult( OutputVerificationResultType.CheckerCrashed, 0 )); } OutputVerificationResult result = null; foreach (IVerifierResultBinder binding in Bindings) { if (binding.TryBind(checkerRun, out result)) { break; } } if (result == null) { result = new OutputVerificationResult( OutputVerificationResultType.CouldNotBind, 0 ); } return(result); }
public OutputVerificationResult Verify(OutputVerificationInfo info) { IEnumerable <string> output = Normalize(info.StandardOutput.StringValue); IEnumerable <string> solution = Normalize(info.ExpectedOutput.StringValue); if (Enumerable.SequenceEqual(output, solution)) { return(new OutputVerificationResult( OutputVerificationResultType.CorrectAnswer, scoreMultiplier: 1 )); } else { return(new OutputVerificationResult( OutputVerificationResultType.WrongAnswer, 0 )); } }
private StringOrFile GetVerifierArgument(OutputVerificationInfo info, VerifierArgumentType thing) { switch (thing) { case VerifierArgumentType.ExitCode: return(StringOrFile.FromText(info.ExitCode.ToString())); case VerifierArgumentType.FileSolution: return(StringOrFile.FromText(info.ExpectedOutput.FilePath)); case VerifierArgumentType.FileStderr: return(StringOrFile.FromText(info.StandardError.FilePath)); case VerifierArgumentType.FileStdin: return(StringOrFile.FromText(info.StandardInput.FilePath)); case VerifierArgumentType.FileStdout: return(StringOrFile.FromText(info.StandardOutput.FilePath)); case VerifierArgumentType.Solution: return(info.ExpectedOutput); case VerifierArgumentType.Stderr: return(info.StandardError); case VerifierArgumentType.Stdin: return(info.StandardInput); case VerifierArgumentType.Stdout: return(info.StandardOutput); default: case VerifierArgumentType.None: return(StringOrFile.FromText(string.Empty)); } }