Skip to content

Commit cc8a217

Browse files
Vigilansjdneo
authored andcommitted
Refactor test & submit output format (#20)
1 parent ad2e01c commit cc8a217

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

Diff for: lib/commands/submit.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict';
22
var util = require('util');
3+
var lodash = require('lodash');
34

45
var h = require('../helper');
56
var file = require('../file');
@@ -29,7 +30,7 @@ function printResult(actual, k) {
2930
const v = actual[k] || '';
3031
const lines = Array.isArray(v) ? v : [v];
3132
for (let line of lines) {
32-
if (k !== 'state') line = k + ': ' + line;
33+
if (k !== 'state') line = lodash.startCase(k) + ': ' + line;
3334
log.info(' ' + h.prettyText(' ' + line, actual.ok));
3435
}
3536
}
@@ -98,6 +99,7 @@ cmd.handler = function(argv) {
9899
// ratio.toFixed(2), lang);
99100
// });
100101
} else {
102+
result.testcase = result.testcase.slice(1, -1).replace(/\\n/g, '\n');
101103
printResult(result, 'error');
102104
printResult(result, 'testcase');
103105
printResult(result, 'answer');

Diff for: lib/commands/test.js

+18-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22
var _ = require('underscore');
3+
var lodash = require('lodash');
4+
var util = require('util');
35

46
var h = require('../helper');
57
var file = require('../file');
@@ -36,18 +38,18 @@ const cmd = {
3638
}
3739
};
3840

39-
function printResult(actual, expect, k) {
41+
function printResult(actual, extra, k) {
4042
if (!actual.hasOwnProperty(k)) return;
4143
// HACk: leetcode still return 'Accepted' even the answer is wrong!!
4244
const v = actual[k] || '';
4345
if (k === 'state' && v === 'Accepted') return;
4446

4547
let ok = actual.ok;
46-
if (expect && !_.isEqual(actual[k], expect[k])) ok = false;
4748

4849
const lines = Array.isArray(v) ? v : [v];
4950
for (let line of lines) {
50-
if (k !== 'state') line = k + ': ' + line;
51+
const extraInfo = extra ? ` (${extra})` : '';
52+
if (k !== 'state') line = lodash.startCase(k) + extraInfo + ': ' + line;
5153
log.info(' ' + h.prettyText(' ' + line, ok));
5254
}
5355
}
@@ -73,23 +75,23 @@ function runTest(argv) {
7375
problem.file = argv.filename;
7476
problem.lang = meta.lang;
7577

76-
log.info('\nInput data:');
77-
log.info(problem.testcase);
78-
7978
core.testProblem(problem, function(e, results) {
8079
if (e) return log.fail(e);
8180

8281
results = _.sortBy(results, x => x.type);
83-
for (let i = 0; i < results.length; ++i) {
84-
log.info();
85-
log.info(chalk.yellow(results[i].type));
86-
87-
printResult(results[i], null, 'state');
88-
printResult(results[i], null, 'runtime');
89-
printResult(results[i], results[i + 1], 'answer');
90-
printResult(results[i], results[i + 1], 'stdout');
91-
printResult(results[i], null, 'error');
92-
}
82+
if (results[0].state === 'Accepted')
83+
results[0].state = 'Finished';
84+
printResult(results[0], null, 'state');
85+
printResult(results[0], null, 'error');
86+
87+
results[0].your_input = problem.testcase;
88+
results[0].output = results[0].answer;
89+
results[1].expected = results[1].answer;
90+
results[0].stdout = results[0].stdout.slice(1, -1).replace(/\\n/g, '\n');
91+
printResult(results[0], null, 'your_input');
92+
printResult(results[0], results[0].runtime, 'output');
93+
printResult(results[1], results[1].runtime, 'expected');
94+
printResult(results[0], null, 'stdout');
9395
});
9496
});
9597
}

0 commit comments

Comments
 (0)