public string Compile(string source, string language, string[] input, string[] output, int timelimit, int memorylimit) { source = HttpUtility.UrlDecode(source); var settings = new Settings { TestingDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()), Compilers = new List<Compiler> { Compiler.VC8Compiler, Compiler.DotNet3Compiler, Compiler.Delphi7Compiler, Compiler.Java6Compiler } }; var p = new Program {Source = source, MemoryLimit = memorylimit, TimeLimit = timelimit}; var tester = new CompilationTester(settings); Result testResult; switch (language) { case "CPP": p.Language = Language.VC8; break; case "CS": p.Language = Language.CSharp3; break; case "Delphi": p.Language = Language.Delphi7; break; case "Java": p.Language = Language.Java6; break; default: return "Unsupported language"; } var compileResult = tester.Compile(p.Source, p.Language); if (!compileResult.Compiled) { testResult = new Result { ProgramStatus = Status.CompilationError, Output = compileResult.StandartOutput }; return Enum.GetName(typeof(Status), testResult.ProgramStatus).Trim(); } for (var i = 0; i < input.Length; i++) { p.InputTest = input[i]; p.OutputTest = output[i]; var result = tester.TestProgram(p); if (result.ProgramStatus != Status.Accepted) { return (Enum.GetName(typeof(Status), result.ProgramStatus) + " Test: " + i).Trim(); } } return "Accepted"; }
public static Settings CreateDefaultSetting() { var settings = new Settings { TestingDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()), Compilers = new List<Compiler> { Compiler.VC8Compiler, Compiler.DotNet3Compiler, Compiler.Delphi7Compiler, Compiler.Java6Compiler } }; return settings; }
/// <summary> /// Creates new instance of <see cref="Tester"/> class. /// </summary> /// /// <param name="settings"> /// Settings of this component. /// </param> public CompilationTester(Settings settings) { ProjectHelper.ValidateNotNull(settings, "settings"); Settings = settings; }
public void CompilationTesterConstructorTest() { Settings settings = new Settings() { TestingDirectory = "Some path", Compilers = new List<Compiler>() }; CompilationTester tester = new CompilationTester(settings); Assert.AreEqual(settings, tester.Settings); try { settings = null; tester = new CompilationTester(settings); Assert.AreEqual(false, true); } catch (Exception) { Assert.AreEqual(true,true); } }
public static CompilationTester CreateCompilationTester(Settings settings) { var tester = new CompilationTester(settings); return tester; }