169 lines
3.4 KiB
JavaScript
169 lines
3.4 KiB
JavaScript
'use strict'
|
|
const log = require('../lib/log')('mscript-tests')
|
|
const mscript = require('../lib/mscript')
|
|
//TODO: rewrite for mocha
|
|
|
|
const tests = function tests () {
|
|
log.info('Running mscript tests')
|
|
console.time('Tests took')
|
|
|
|
mscript.alts_unique(); //perform check only during tests
|
|
var fail = function (script, obj) {
|
|
log.error('...Failed :(')
|
|
log.error('script', script)
|
|
log.error('err', obj)
|
|
process.exit(1)
|
|
}
|
|
let script =
|
|
`CF
|
|
PF
|
|
CB
|
|
PB
|
|
BF
|
|
BB`
|
|
log.info('Basic function test...');
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 0
|
|
&& obj.proj === 0
|
|
&& obj.arr.length === 6) {
|
|
log.info('...Passed!')
|
|
} else {
|
|
fail(script, obj)
|
|
}
|
|
})
|
|
|
|
script =
|
|
`CF
|
|
PF
|
|
CB
|
|
PB
|
|
BF
|
|
BB`
|
|
log.info('Functions with integers test...')
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 0
|
|
&& obj.proj === 0
|
|
&& obj.arr.length === 6) {
|
|
log.info('...Passed!')
|
|
} else {
|
|
fail(script, obj)
|
|
}
|
|
})
|
|
|
|
script =
|
|
`CF 1000
|
|
CB 1000
|
|
SET PROJ 200
|
|
PB 200`
|
|
log.info('Basic state test...')
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 0
|
|
&& obj.proj === 0) {
|
|
log.info('...Passed!')
|
|
} else {
|
|
fail(script, obj)
|
|
}
|
|
})
|
|
|
|
script =
|
|
`LOOP 10
|
|
CF 3
|
|
PF 1
|
|
END LOOP`
|
|
log.info('Basic loop test...')
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 30
|
|
&& obj.proj === 10
|
|
&& obj.arr.length === 40) {
|
|
log.info('...Passed!')
|
|
} else {
|
|
fail(script, obj)
|
|
}
|
|
});
|
|
|
|
script = `LOOP 4\nLOOP 4\nPF\nBF\nEND LOOP\nEND LOOP`
|
|
log.info('Recursive loop test...');
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 16
|
|
&& obj.proj === 16
|
|
&& obj.arr.length === 32) {
|
|
log.info('...Passed!');
|
|
} else {
|
|
fail(script, obj);
|
|
}
|
|
});
|
|
|
|
//Lighting tests
|
|
script = `L 255,255,255\nCF\nPF`
|
|
log.info('Basic light test...');
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 1
|
|
&& obj.proj === 1
|
|
&& obj.arr.length === 2
|
|
&& obj.light.length === 2
|
|
&& obj.light[0] === '255,255,255'
|
|
&& obj.light[1] === '') {
|
|
log.info('...Passed!');
|
|
} else {
|
|
fail(script, obj);
|
|
}
|
|
});
|
|
script = 'L 255,255,255\nCF\nPF\nBF';
|
|
log.info('Basic black test...');
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 2
|
|
&& obj.proj === 1
|
|
&& obj.arr.length === 3
|
|
&& obj.light.length === 3
|
|
&& obj.light[0] === '255,255,255'
|
|
&& obj.light[1] === ''
|
|
&& obj.light[2] === mscript.black) {
|
|
log.info('...Passed!');
|
|
} else {
|
|
fail(script, obj);
|
|
}
|
|
});
|
|
script = 'LOOP 2\nL 1,1,1\nCF\nL 2,2,2\nCF\nEND';
|
|
log.info('Basic light loop test...');
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 4
|
|
&& obj.proj === 0
|
|
&& obj.arr.length === 4
|
|
&& obj.light.length === 4
|
|
&& obj.light[0] === '1,1,1'
|
|
&& obj.light[3] === '2,2,2') {
|
|
log.info('...Passed!');
|
|
} else {
|
|
fail(script, obj);
|
|
}
|
|
});
|
|
|
|
//LOOP W/ CAM and PROJ
|
|
script = 'LOOP 2\nCAM 4\nPROJ 4\nEND';
|
|
log.info('Basic cam/proj loop test...');
|
|
mscript.interpret(script, function (obj) {
|
|
if (obj.success === true
|
|
&& obj.cam === 8
|
|
&& obj.proj === 8
|
|
&& obj.arr.length === 16
|
|
&& obj.light.length === 16
|
|
&& obj.light[0] === mscript.black) {
|
|
log.info('...Passed!');
|
|
} else {
|
|
fail(script, obj);
|
|
}
|
|
});
|
|
|
|
log.info('All tests completed');
|
|
console.timeEnd('Tests took');
|
|
}
|
|
|
|
tests() |