scratch-judge
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

scratch-judge

A custom scratch-vm used to watch program status and output result about the program.

Usage (English)

By Bash:

npm i -g scratch-judge
scj -h
scj src/index.js -p test/test.sb3 -d test/ -o 3
# Do your own :D 

By NodeJS:

const judge = require('scratch-judge')
judge({
    projectFile: 'path/to/your/scratch/project/file',
    fileNameFormat: '#{n}',
    testFolder: 'path/to/your/test/folder',
    testpoints: 10,
    time: 1000,
    mem: 40960,
    turbo: true,
    format: false
}).then((evt) => {
    evt.on('point', (result) => {
        // Emit when a point is finished its test.
    }).on('error', (err) => {
        // Emit when a point occurs an error.
    }).once('end', (results) => {
        // Emit when all the points are finished their test.
        // Result is an array contains all the result.
    })
})

CLI Description

Run scj -h to check usage.

API Description

Promise judge(Object options) Start a test.

If runs as command, it will output the testing result to stdout.

Or if be invoke as module, it will return a Promise and resolve the result types of JSON.

Here is a list of available options:

  • String projectFile Path to the scratch project which is supported by the Scratch 3.0 and needs to be tested.
  • String fileNameFormat Optional. The format of the file name. Will replace #{n} to the testing point number. Such as P1000-#{n} will be translated to P1000-1.in and P1000-1.out . Default is #{n}.
  • String testFolder Path to your test folder which is included your input file like 1.in 1.out in order.
  • Number testpoints Optional. The amount of testing points will be run. Default is 10.
  • Number time Optional. Time that each testing points can use. The unit is milliseconds. Default is 1000.
  • Number mem Optional. Memory that each testing points can use. The unit is kilobytes. Default is 25600 (25MB) if traceFullMemory is true , or it's 40960 (4MB).
  • Boolean turbo Optional. Using turbo mode to test. Default is true.
  • Boolean debug Optional. Output debug message to stdout. Default is false.
  • Boolean format Optional. Output formatted json result after test. Only be used in cli. Default is false, output unformatted result.
  • Boolean traceFullMemory Optional. Trace memory of the NodeJS runtime. Or it will subtract from the memory scratch-vm running to the memory before start testing. Default is true.

Then it will return a promise will reslove with a JudgeEvent extends on EventEmitter, it will emit these events while testing:

  • point JudgeTestingPointResult Emit when a point is finished its test. It will return a value contain the result.
  • end JudgeTestingPointResult[] Emit when all points are finished their tests. It will return a array contains all result each testing point.
  • error Error Emit when a point occurred an error. But the other testing points will not stop and continue running.

JudgeTestingPointResult struct:

  • number id Point number.
  • string status Result of the test. Such as AC, RE, TLE, MLE, WA.
  • string details Detail of result, it will contain error string if status is RE, or line number of wrong answer if status is WA.
  • Error error An error object if status is RE.
  • number usedTime Time that testing point has used. In milliseconds.
  • number usedMemory Memory that testing point has used. In kilobytes.
  • string[] answer An array of project output if status is WA.

Like this project?

Feel free to give tips to me! Chinese link. (I don't have patreon sry ;-;)

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.0
    3
    • latest

Version History

Package Sidebar

Install

npm i scratch-judge

Weekly Downloads

3

Version

1.1.0

License

MIT

Unpacked Size

22.7 kB

Total Files

17

Last publish

Collaborators

  • steve-xmh