;( function() { SVG.bench = { // Initalize test store _tests: [] , _before: function() {} , _after: function() {} , draw: SVG('draw') , snap: Snap(100, 100) , raw: document.getElementById('native') // Add test , test: function(name, closure) { this._tests.push({ name: name , test: closure }) return this } // Set before runner , before: function(closure) { this._before = closure return this } // Set after runner , after: function(closure) { this._after = closure return this } // Run tests , run: function() { this.pad(true) for (var s, i = 0, il = this._tests.length; i < il; i++) { // run before this._before(this._tests[i]) // run test s = ( new Date ).getTime() this._tests[i].test() this.write( this._tests[i].name, ( new Date ).getTime() - s ) // run after this._after(this._tests[i]) // clear everything this.clear() } } // Write result , write: function(name, ms) { var test = document.createElement('div') test.className = 'test' test.innerHTML = 'Completed ' + name + ' in ' + ms + 'ms' this.pad().appendChild(test) return this } // Reference writable element , pad: function(regenerate) { var pad = document.getElementById('pad') if (regenerate || !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() } } })();