diff --git a/lib/commands/submit.js b/lib/commands/submit.js index 123c121a..2209249b 100644 --- a/lib/commands/submit.js +++ b/lib/commands/submit.js @@ -1,5 +1,6 @@ 'use strict'; var util = require('util'); +var lodash = require('lodash'); var h = require('../helper'); var file = require('../file'); @@ -29,7 +30,7 @@ function printResult(actual, k) { const v = actual[k] || ''; const lines = Array.isArray(v) ? v : [v]; for (let line of lines) { - if (k !== 'state') line = k + ': ' + line; + if (k !== 'state') line = lodash.startCase(k) + ': ' + line; log.info(' ' + h.prettyText(' ' + line, actual.ok)); } } @@ -98,6 +99,7 @@ cmd.handler = function(argv) { // ratio.toFixed(2), lang); // }); } else { + result.testcase = result.testcase.slice(1, -1).replace(/\\n/g, '\n'); printResult(result, 'error'); printResult(result, 'testcase'); printResult(result, 'answer'); diff --git a/lib/commands/test.js b/lib/commands/test.js index 21c4a4eb..cd1ad4d9 100644 --- a/lib/commands/test.js +++ b/lib/commands/test.js @@ -1,5 +1,7 @@ 'use strict'; var _ = require('underscore'); +var lodash = require('lodash'); +var util = require('util'); var h = require('../helper'); var file = require('../file'); @@ -36,18 +38,18 @@ const cmd = { } }; -function printResult(actual, expect, k) { +function printResult(actual, extra, k) { if (!actual.hasOwnProperty(k)) return; // HACk: leetcode still return 'Accepted' even the answer is wrong!! const v = actual[k] || ''; if (k === 'state' && v === 'Accepted') return; let ok = actual.ok; - if (expect && !_.isEqual(actual[k], expect[k])) ok = false; const lines = Array.isArray(v) ? v : [v]; for (let line of lines) { - if (k !== 'state') line = k + ': ' + line; + const extraInfo = extra ? ` (${extra})` : ''; + if (k !== 'state') line = lodash.startCase(k) + extraInfo + ': ' + line; log.info(' ' + h.prettyText(' ' + line, ok)); } } @@ -73,23 +75,23 @@ function runTest(argv) { problem.file = argv.filename; problem.lang = meta.lang; - log.info('\nInput data:'); - log.info(problem.testcase); - core.testProblem(problem, function(e, results) { if (e) return log.fail(e); results = _.sortBy(results, x => x.type); - for (let i = 0; i < results.length; ++i) { - log.info(); - log.info(chalk.yellow(results[i].type)); - - printResult(results[i], null, 'state'); - printResult(results[i], null, 'runtime'); - printResult(results[i], results[i + 1], 'answer'); - printResult(results[i], results[i + 1], 'stdout'); - printResult(results[i], null, 'error'); - } + if (results[0].state === 'Accepted') + results[0].state = 'Finished'; + printResult(results[0], null, 'state'); + printResult(results[0], null, 'error'); + + results[0].your_input = problem.testcase; + results[0].output = results[0].answer; + results[1].expected = results[1].answer; + results[0].stdout = results[0].stdout.slice(1, -1).replace(/\\n/g, '\n'); + printResult(results[0], null, 'your_input'); + printResult(results[0], results[0].runtime, 'output'); + printResult(results[1], results[1].runtime, 'expected'); + printResult(results[0], null, 'stdout'); }); }); }