Skip to content

Instantly share code, notes, and snippets.

@denisdemaisbr
Created February 14, 2024 11:50
Show Gist options
  • Save denisdemaisbr/3d220dcd040213fa21074b567e324617 to your computer and use it in GitHub Desktop.
Save denisdemaisbr/3d220dcd040213fa21074b567e324617 to your computer and use it in GitHub Desktop.
duktape test unit
//
// 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