test_helper.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. var runTests = function(testFuncs, testNum) {
  2. var failed = false;
  3. var successCount = 0;
  4. window.fail = function() {
  5. failed = true;
  6. document.getElementById('success').style.display = 'none';
  7. document.getElementById('failed').style.display = 'block';
  8. document.getElementById('running').style.display = 'none';
  9. console.error(new Error());
  10. };
  11. window.failCallback = function() {
  12. var err = new Error();
  13. return function() {
  14. console.error(err);
  15. window.fail();
  16. };
  17. };
  18. window.success = function() {
  19. if (!failed && ++successCount == (typeof testNum !== 'undefined' ? 1 : testFuncs.length)) {
  20. document.getElementById('success').style.display = 'block';
  21. document.getElementById('running').style.display = 'none';
  22. }
  23. };
  24. window.testNotInjected = function(id) {
  25. };
  26. window.testInjected = function(id) {
  27. };
  28. window.isEqualElseFail = function(count, num, callback) {
  29. if (count === num) {
  30. callback && callback();
  31. return true;
  32. } else if (count > num) {
  33. window.fail();
  34. return false;
  35. }
  36. };
  37. for (var i = 0; i < testFuncs.length; ++i) {
  38. if (typeof testNum !== 'undefined') {
  39. // testing only one test
  40. if (i === testNum) {
  41. testFuncs[i]();
  42. } else {
  43. // set dummy function
  44. window['SVGInject' + (i + 1)] = function() {};
  45. window['SVGInject' + (i + 1)].err = function() {};
  46. }
  47. } else {
  48. testFuncs[i]();
  49. }
  50. }
  51. };
  52. var domReady = function(callback) {
  53. var ready = false;
  54. var detach = function() {
  55. if(document.addEventListener) {
  56. document.removeEventListener("DOMContentLoaded", completed);
  57. window.removeEventListener("load", completed);
  58. } else {
  59. document.detachEvent("onreadystatechange", completed);
  60. window.detachEvent("onload", completed);
  61. }
  62. };
  63. var completed = function() {
  64. if(!ready && (document.addEventListener || event.type === "load" || document.readyState === "complete")) {
  65. ready = true;
  66. detach();
  67. callback();
  68. }
  69. };
  70. if(document.readyState === "complete") {
  71. callback();
  72. } else if(document.addEventListener) {
  73. document.addEventListener("DOMContentLoaded", completed);
  74. window.addEventListener("load", completed);
  75. } else {
  76. document.attachEvent("onreadystatechange", completed);
  77. window.attachEvent("onload", completed);
  78. var top = false;
  79. try {
  80. top = window.frameElement === null && document.documentElement;
  81. } catch(e) {}
  82. if(top && top.doScroll) {
  83. (function scrollCheck() {
  84. if(ready) return;
  85. try {
  86. top.doScroll("left");
  87. } catch(e) {
  88. return setTimeout(scrollCheck, 50);
  89. }
  90. ready = true;
  91. detach();
  92. callback();
  93. })();
  94. }
  95. }
  96. };