No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

90 líneas
1.9 KiB

  1. ;( function() {
  2. SVG.bench = {
  3. // Initalize test store
  4. _chain: []
  5. , _before: function() {}
  6. , _after: function() {}
  7. , draw: SVG('draw')
  8. , snap: Snap(100, 100)
  9. , raw: document.getElementById('native')
  10. // Add descriptor
  11. , describe: function(name, closure) {
  12. this._chain.push({
  13. name: name
  14. , run: closure
  15. })
  16. return this
  17. }
  18. // Add test
  19. , test: function(name, run) {
  20. // run test
  21. var start = ( new Date ).getTime()
  22. run()
  23. this.write( name, ( new Date ).getTime() - start )
  24. // clear everything
  25. this.clear()
  26. }
  27. // Skip test
  28. , skip: function(name, run) {
  29. this.write( name, false )
  30. }
  31. // Run tests
  32. , run: function() {
  33. this.pad()
  34. for (var h, i = 0, il = this._chain.length; i < il; i++) {
  35. var h = document.createElement('h1')
  36. h.innerHTML = this._chain[i].name
  37. this.pad().appendChild(h)
  38. this._chain[i].run(this)
  39. }
  40. }
  41. // Write result
  42. , write: function(name, ms) {
  43. var test = document.createElement('div')
  44. if (typeof ms === 'number') {
  45. test.className = 'test'
  46. test.innerHTML = '<span class="name">' + name + '</span> completed in <span class="ms">' + ms + 'ms</span>'
  47. } else {
  48. test.className = 'test skipped'
  49. test.innerHTML = name + ' (skipped)'
  50. }
  51. this.pad().appendChild(test)
  52. return this
  53. }
  54. // Reference writable element
  55. , pad: function() {
  56. var pad = document.getElementById('pad')
  57. if (!pad) {
  58. pad = document.createElement('div')
  59. document.getElementsByTagName('body')[0].appendChild(pad)
  60. }
  61. return pad
  62. }
  63. // Clear canvasses
  64. , clear: function() {
  65. while(this.raw.hasChildNodes())
  66. this.raw.removeChild(this.raw.lastChild)
  67. this.draw.clear()
  68. this.snap.clear()
  69. }
  70. }
  71. })();