public void PositiveExamples(IKjuExample example) { var diag = new Mock <IDiagnostics>(); Compiler.RunOnInputReader(example.Program, diag.Object); MockDiagnostics.Verify(diag, example.ExpectedMagicStrings.ToArray()); }
public void NegativeExamples(IKjuExample example) { var diag = new Mock <IDiagnostics>(); Assert.ThrowsException <CompilerException>(() => Compiler.RunOnInputReader(example.Program, diag.Object)); MockDiagnostics.Verify(diag, example.ExpectedMagicStrings.ToArray()); }
public void NegativeDisabledExamples(IKjuExample example) { Assert.Inconclusive("unknown"); }
public void ExecutableExamples(IKjuExample example) { var options = new Program.Options { GenExe = true }; var exeName = $"{TestsDirectory}/{example.SimpleName}"; var query = new CompilationQuery(example.Program, exeName); var diag = new Mock <IDiagnostics>(); Program.GenerateArtifacts(options, Compiler, query, diag.Object); var process = new System.Diagnostics.Process { StartInfo = { FileName = exeName, Arguments = string.Empty, UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden, CreateNoWindow = true } }; process.Start(); using (var writer = process.StandardInput) { writer.Write(example.Input); } if (!process.WaitForExit(example.Timeout)) { process.Kill(); if (example.Ends) { Assert.Fail($"Process has not ended before timeout ({example.Timeout})."); } } else { var exitCode = process.ExitCode; if (!example.Ends) { Assert.Fail($"Should not end but ended with exit code {exitCode}."); } Assert.AreEqual( example.ExpectedExitCode, exitCode, $"Process returned with wrong exit code."); } var processOutput = process.StandardOutput.ReadToEnd(); var outputCheckResult = example.OutputChecker.CheckOutput(processOutput); outputCheckResult.Notes.ForEach(Console.WriteLine); if (outputCheckResult is OutputCheckResult.Wrong) { Assert.Fail("Output is wrong."); } MockDiagnostics.Verify(diag, example.ExpectedMagicStrings.ToArray()); }
public void NotExecutableExamples(IKjuExample example) { Assert.Inconclusive("unknown"); }