1
0
Fork 0
mirror of https://github.com/codedread/bitjs synced 2025-10-03 17:49:16 +02:00

Add support for asynchronous tests to test harness

This commit is contained in:
codedread 2017-02-19 09:23:24 -08:00
parent 9305f4e11b
commit 0061459c95
2 changed files with 34 additions and 22 deletions

View file

@ -14,33 +14,33 @@
setUp: function() { setUp: function() {
buffer = new bitjs.io.ByteBuffer(10); buffer = new bitjs.io.ByteBuffer(10);
}, },
tests: [ tests: {
function testWriteNumberThenRead() { testWriteNumberThenRead: function() {
buffer.writeNumber(1234, 4); buffer.writeNumber(1234, 4);
var stream = new bitjs.io.ByteStream(buffer.data); var stream = new bitjs.io.ByteStream(buffer.data);
muther.assertEquals(1234, stream.peekNumber(4)); muther.assertEquals(1234, stream.peekNumber(4));
}, },
function testWriteUnsignedByteThenRead() { testWriteUnsignedByteThenRead: function() {
buffer.writeNumber(192, 1); buffer.writeNumber(192, 1);
var stream = new bitjs.io.ByteStream(buffer.data); var stream = new bitjs.io.ByteStream(buffer.data);
muther.assertEquals(192, stream.readNumber(1)); muther.assertEquals(192, stream.readNumber(1));
}, },
function testWriteSignedByteThenRead() { testWriteSignedByteThenRead: function() {
buffer.writeSignedNumber(-120, 1); buffer.writeSignedNumber(-120, 1);
var stream = new bitjs.io.ByteStream(buffer.data); var stream = new bitjs.io.ByteStream(buffer.data);
muther.assertEquals(-120, stream.readSignedNumber(1)); muther.assertEquals(-120, stream.readSignedNumber(1));
}, },
function testWriteSignedPositiveNumberThenRead() { testWriteSignedPositiveNumberThenRead: function() {
buffer.writeSignedNumber(1234, 4); buffer.writeSignedNumber(1234, 4);
var stream = new bitjs.io.ByteStream(buffer.data); var stream = new bitjs.io.ByteStream(buffer.data);
muther.assertEquals(1234, stream.readSignedNumber(4)); muther.assertEquals(1234, stream.readSignedNumber(4));
}, },
function testWriteSignedNegativeNumberThenRead() { testWriteSignedNegativeNumberThenRead: function() {
buffer.writeSignedNumber(-128, 1); buffer.writeSignedNumber(-128, 1);
var stream = new bitjs.io.ByteStream(buffer.data); var stream = new bitjs.io.ByteStream(buffer.data);
muther.assertEquals(-128, stream.readSignedNumber(1)); muther.assertEquals(-128, stream.readSignedNumber(1));
}, },
function testWriteOverflowUnsigned() { testWriteOverflowUnsigned: function() {
var passed = false; var passed = false;
try { try {
buffer.writeNumber(256, 1); buffer.writeNumber(256, 1);
@ -49,7 +49,7 @@
} }
muther.assert(passed); muther.assert(passed);
}, },
function testWriteOverflowSignedPositive() { testWriteOverflowSignedPositive: function() {
var passed = false; var passed = false;
try { try {
buffer.writeSignedNumber(128, 1); buffer.writeSignedNumber(128, 1);
@ -58,7 +58,7 @@
} }
muther.assert(passed); muther.assert(passed);
}, },
function testWriteOverflowSignedNegative() { testWriteOverflowSignedNegative: function() {
var passed = false; var passed = false;
try { try {
buffer.writeSignedNumber(-129, 1); buffer.writeSignedNumber(-129, 1);
@ -66,8 +66,8 @@
passed = true; passed = true;
} }
muther.assert(passed); muther.assert(passed);
} },
] },
}); });
</script> </script>
</body> </body>

View file

@ -6,23 +6,35 @@
*/ */
var muther = muther || {}; var muther = muther || {};
var $ = function(s) { return document.querySelector(s) || {}; }
muther.assert = function(cond, err) { if (!cond) { throw err; } }; muther.assert = function(cond, err) { if (!cond) { throw err; } };
muther.assertEquals = function(a, b, err) { muther.assert(a === b, err); }; muther.assertEquals = function(a, b, err) { muther.assert(a === b, err); };
muther.addResult_ = function(innerHTML, pass) { muther.set_ = function(id, style, innerHTML) {
document.body.innerHTML += '<div style="' + $('#' + id).innerHTML = '';
(pass ? 'color:#090' : 'color:#900') + '">' + innerHTML + '</div>'; document.body.innerHTML += '<div id="' + id + '" style="' + style + '">' + innerHTML + '</div>';
}; };
muther.go = function(spec) { muther.go = function(spec) {
Object.keys(spec['tests']).forEach(function(testName) {
var test = spec['tests'][testName];
if (test instanceof Promise) {
muther.set_(testName, 'color:#F90', 'RUNNING: ' + testName);
// TODO: What if we want setup() and tearDown()?
test.then(function() {
muther.set_(testName, 'color:#090', 'PASS: ' + testName);
}, function(err) {
muther.set_(testName, 'color:#900', 'FAIL: ' + testName + ': ' + err);
});
} else if (test instanceof Function) {
var setup = spec['setUp'] || function(){}; var setup = spec['setUp'] || function(){};
var tearDown = spec['tearDown'] || function(){}; var tearDown = spec['tearDown'] || function(){};
spec['tests'].forEach(function(test) {
try { try {
setup(); test(); tearDown(); setup(); test(); tearDown();
muther.addResult_('PASS: ' + test.name, true); muther.set_(testName, 'color:#090', 'PASS: ' + testName);
} catch(e) { } catch (err) {
muther.addResult_('FAIL: ' + test.name + ': ' + e, false); muther.set_(testName, 'color:#900', 'FAIL: ' + testName + ': ' + err);
}
} }
}); });
}; };