;( function() { SVG.bench = { // Initalize test store _chain: [] , _before: function() {} , _after: function() {} , draw: SVG('draw') , snap: Snap(100, 100) , raw: document.getElementById('native') // Add descriptor , describe: function(name, closure) { this._chain.push({ name: name , run: closure }) return this } // Add test , test: function(name, run) { // run test var start = ( new Date ).getTime() run() this.write( name, ( new Date ).getTime() - start ) // clear everything this.clear() } // Skip test , skip: function(name, run) { this.write( name, false ) } // Run tests , run: function() { this.pad() for (var h, i = 0, il = this._chain.length; i < il; i++) { var h = document.createElement('h1') h.innerHTML = this._chain[i].name this.pad().appendChild(h) this._chain[i].run(this) } } // Write result , write: function(name, ms) { var test = document.createElement('div') if (typeof ms === 'number') { test.className = 'test' test.innerHTML = '' + name + ' completed in ' + ms + 'ms' } else { test.className = 'test skipped' test.innerHTML = name + ' (skipped)' } this.pad().appendChild(test) return this } // Reference writable element , pad: function() { var pad = document.getElementById('pad') if (!pad) { pad = document.createElement('div') document.getElementsByTagName('body')[0].appendChild(pad) } return pad } // Clear canvasses , clear: function() { while(this.raw.hasChildNodes()) this.raw.removeChild(this.raw.lastChild) this.draw.clear() this.snap.clear() } } })();