test framework
by edgardleal
HTML
<div id="testResults"></div>
<div id="consoleLog"></div>
<input type="hidden" id="message" value="Teste" />
CSS
.fail{
color : red;
}
.pass{
color : green;
}
#testResults{
border : solid 2px;
background : #FFFFCC;
padding : 5px;
}
#consoleLog{
background-color : black;
color : #00ff00;
overflow : scroll;
height : 55px;
}
JavaScript
var doc = document;
var results;
function formatedTime(){
var date = new Date();
return date.getHours() + ':' + date.getMinutes() +
':' + date.getSeconds();
}
var debug = function(message){
if(!message) return;
message = formatedTime() + ' ' + message;
var consoleHtml = doc.querySelector('#consoleLog');
if(consoleHtml)
consoleHtml.innerHTML = message + "<br>" +
consoleHtml.innerHTML;
else
if(console && console.log)
console.log(message);
else alert(message);
}
var assert = function assert(value, desc) {
if(!results)
results = document.getElementById("testResults");
if(!results) return false;
var li = document.createElement("li");
li.className = value ? "pass" : "fail";
li.appendChild(document.createTextNode(desc));
if (!value) {
var d = doc.createElement('del');
d.appendChild(li);
results.appendChild(d);
li.parentNode.parentNode.className = "fail";
}else{
results.appendChild(li);
}
return li;
};
var test = function test(name, fn) {
results = doc.getElementById("testResults");
if(!results) return false;
results = assert(true, name).appendChild(
doc.createElement("ul"));
fn();
};
function DateFormater(){
var self = this;
var normalize = function(number){
return (number< 10?'0':'') + number;
};
this.formatTime = function(date){
return normalize(date.getHours()) + ':' +
normalize(date.getMinutes()) +
':' +
normalize(date.getSeconds());
};
this.formatDate = function(date){
day = date.getDate();
day = (day < 10?'0':'') + day;
month = date.getMonth() + 1;
year = date.getFullYear();
month = (month < 10 ? '0':'')+ month;
debug(day);
return day + '/' + month + '/' + year;
};
this.formatDateTime = function(date){
return self.formatDate(date) + ' ' +...