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) + ' ' +...