Created
February 14, 2024 11:50
-
-
Save denisdemaisbr/3d220dcd040213fa21074b567e324617 to your computer and use it in GitHub Desktop.
duktape test unit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// MINCTEST - Minimal Duktape Test Library | |
// This is based on minctest.h (https://codeplea.com/minctest) | |
// | |
/* | |
feel to free to improve | |
you will need implement a module loading OR embed 'all-in-one' | |
checkout: https://wiki.duktape.org/howtomodules | |
main.js | |
function sum(x,y) { | |
return x+y; | |
} | |
var tu = require('./test.js') | |
var lok = tu.ok | |
var lrun = tu.run | |
var lresults = tu.results | |
var lequal = tu.equal | |
var lfequal = tu.fequal | |
lrun('sum', function() { | |
lok(1==11) | |
lequal( 1, 1 ) | |
lequal( 1, '1' ) | |
lfequal( 1, 1.001 ) | |
}); | |
lresults() | |
// EOF // | |
output: | |
$ /cygdrive/x/test.exe main.js | |
sum | |
[anon] (hello.test.js:35) | |
pass:3 fail:1 | |
SOME TESTS FAILED (3/4) | |
*/ | |
var LTEST_FLOAT_TOLERANCE = 0.001; | |
var ltests = 0; | |
var lfails = 0; | |
// https://duktape.org/guide#errorobjects | |
var caller = function() { | |
var st = new Error().stack; | |
st = st.split(/\r?\n/)[3]; | |
st = st.substr(st.indexOf("at ") + 3); | |
return st; | |
}; | |
var lok = function(test) { | |
ltests += 1; | |
if (!test) { | |
lfails += 1; | |
console.log("\t" + caller() + "\n"); | |
} | |
}; | |
var lequal = function(a, b) { | |
ltests += 1; | |
if (a != b) { | |
lfails += 1; | |
console.log("\t (" + a + " != " + b + ")\n"); | |
} | |
}; | |
var lfequal = function(a, b) { | |
ltests += 1; | |
if (Math.abs(a - b) > LTEST_FLOAT_TOLERANCE) { | |
lfails += 1; | |
console.log("\t (" + a + " != " + b + ")\n"); | |
} | |
}; | |
var lrun = function(name, testfunc) { | |
var ts = ltests; | |
var fs = lfails; | |
console.log(name); | |
testfunc(); | |
console.log("\tpass:" + ((ltests-ts)-(lfails-fs)) + " fail:" + (lfails-fs) + "\n"); | |
}; | |
var lresults = function() { | |
if (lfails === 0) { | |
console.log("ALL TESTS PASSED (" + ltests + "/" + ltests + ")"); | |
} else { | |
console.log("SOME TESTS FAILED (" + (ltests-lfails) + "/" + ltests + ")"); | |
} | |
return lfails !== 0; | |
}; | |
exports.ok = lok; | |
exports.run = lrun; | |
exports.results = lresults; | |
exports.equal = lequal; | |
exports.fequal = lfequal; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment