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:
parent
9305f4e11b
commit
0061459c95
2 changed files with 34 additions and 22 deletions
|
@ -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>
|
||||||
|
|
26
muther.js
26
muther.js
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue