public async Task <OjResult> PendCode(string uuid, string code, OjTestCaseSet ojTestCaseSet) { try { var a = await _compiler.Compile(uuid, code); var instance = a.CreateInstanceByClassName("Solution"); var method = a.GetMethodByNames("Solution", ojTestCaseSet.MethodName); var successes = await _executor.Execute(new ExecutableData { Instance = instance, Method = method, ExpectedResults = ojTestCaseSet.CastExpectedReturnValues(), Params = ojTestCaseSet.CastParamsToObjects(), }); var cases = ojTestCaseSet.Params.Length; var pass = cases == successes; var successRate = 100 * successes * 1.0 / cases; return(new OjResult { Pass = pass, Pending = false, SuccessRate = successRate, Failed = false, }); } catch (Exception e) { return(new OjResult { Pass = false, Failed = true, Pending = false, Info = e.Message }); } finally { _compiler.UnloadAssembly(uuid); } }
public async Task <bool> UploadOj(OjTestCaseSet ojTestCaseSet) { if (!ojTestCaseSet.IsValidTestSet()) { return(false); } var question = new OjQuestion { Content = ojTestCaseSet.Content, CreateTime = DateTime.Now, Difficulty = ojTestCaseSet.Difficulty, Title = ojTestCaseSet.Title, Code = ojTestCaseSet.OjCode }; var testCaseTable = new OjTestCaseTable { TestCaseSetJson = JsonConvert.SerializeObject(ojTestCaseSet) }; await ojDao.UploadOj(question, testCaseTable); return(true); }
public async Task <bool> UploadOj([FromBody] OjTestCaseSet ojTestCaseSet) { return(await uploadService.UploadOj(ojTestCaseSet)); }