Consolidated ASP Classic MVC framework from best components
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

174 řádky
3.9KB

  1. <%
  2. Class ASPUnitRunner
  3. Private _
  4. m_Theme, _
  5. m_Pages
  6. Private Sub Class_Initialize()
  7. Set m_Theme = New ASPUnitUIModern
  8. Set m_Pages = Server.CreateObject("System.Collections.ArrayList")
  9. End Sub
  10. Private Sub Class_Terminate()
  11. Set m_Pages = Nothing
  12. Set m_Theme = Nothing
  13. End Sub
  14. Public Property Set Theme(ByRef objValue)
  15. Set m_Theme = objValue
  16. End Property
  17. Public Property Get Pages
  18. Set Pages = m_Pages
  19. End Property
  20. ' Public methods to specify test pages
  21. Public Sub AddPage(strPage)
  22. Call m_Pages.Add(strPage)
  23. End Sub
  24. Public Sub AddPages(arrPages)
  25. Dim i
  26. For i = 0 To UBound(arrPages)
  27. Call AddPage(arrPages(i))
  28. Next
  29. End Sub
  30. ' Method to run UI
  31. Public Sub Run()
  32. If m_Pages.Count = 0 Then
  33. Call AddCurrentPage()
  34. End If
  35. Call m_Theme.Render(Me)
  36. End Sub
  37. Private Sub AddCurrentPage()
  38. Call AddPage(Request.ServerVariables("URL"))
  39. End Sub
  40. Public Sub RenderJSLib() %>
  41. <script>
  42. var ASPUnit = function() {
  43. 'use strict';
  44. var config = {
  45. pages: [],
  46. callbacks: {
  47. onStart: [],
  48. onStop: [],
  49. onPageStart: [],
  50. onPageSuccess: [],
  51. onPageFail: [],
  52. onPageFinish: [],
  53. onFinish: [],
  54. }
  55. }
  56. var getPageTimeout = null,
  57. getPageXHR = null;
  58. var status = {
  59. pageIndex: 0,
  60. pageCount: 0,
  61. testCount: 0,
  62. passCount: 0
  63. };
  64. function registerCallback(key, callback) {
  65. config.callbacks[key].push(callback);
  66. }
  67. function callback(key, args) {
  68. var callbacks = config.callbacks[key];
  69. for (var i = 0, len = callbacks.length; i < len; i++) {
  70. callbacks[i].call({}, args);
  71. }
  72. }
  73. function getPage(page) {
  74. callback('onPageStart', {page: page});
  75. getPageXHR = $.getJSON(page + '?task=test')
  76. .done(function(data) {
  77. status.pageDoneCount++;
  78. status.testCount += data.testCount;
  79. status.passCount += data.passCount;
  80. callback('onPageSuccess', $.extend({page: page}, data));
  81. })
  82. .fail(function(jqXHR, textStatus, errorThrown) {
  83. callback('onPageFail', {
  84. page: page,
  85. error: errorThrown,
  86. description: (jqXHR.status != 404) ? jqXHR.responseText : ''
  87. });
  88. })
  89. .always(function() {
  90. callback('onPageFinish', {
  91. page: page,
  92. status: status
  93. });
  94. if (status.pageIndex < (config.pages.length - 1)) {
  95. getPageTimeout = setTimeout(function() {
  96. getPage(config.pages[++status.pageIndex]);
  97. }, 100);
  98. } else {
  99. callback('onFinish');
  100. }
  101. });
  102. }
  103. return {
  104. load: function(pages) {
  105. config.pages = pages;
  106. status.pageCount = config.pages.length;
  107. this.start();
  108. },
  109. start: function() {
  110. callback('onStart');
  111. getPage(config.pages[status.pageIndex]);
  112. },
  113. stop: function() {
  114. getPageXHR.abort();
  115. clearTimeout(getPageTimeout);
  116. callback('onStop');
  117. },
  118. onStart: function(callback) { registerCallback('onStart', callback); },
  119. onPageStart: function(callback) { registerCallback('onPageStart', callback); },
  120. onPageSuccess: function(callback) { registerCallback('onPageSuccess', callback); },
  121. onPageFail: function(callback) { registerCallback('onPageFail', callback); },
  122. onPageFinish: function(callback) { registerCallback('onPageFinish', callback); },
  123. onFinish: function(callback) { registerCallback('onFinish', callback); }
  124. };
  125. }();
  126. </script> <%
  127. End Sub
  128. Public Sub RenderJSInit() %>
  129. <script>$(function(){ASPUnit.load([<%= GetPagesAsJSString() %>])});</script> <%
  130. End Sub
  131. Private Function GetPagesAsJSString()
  132. Dim strReturn, _
  133. i
  134. strReturn = ""
  135. For i = 0 To (m_Pages.Count - 1)
  136. strReturn = strReturn & "'" & m_Pages.Item(i) & "'"
  137. If i < (m_Pages.Count - 1) Then
  138. strReturn = strReturn & ", "
  139. End If
  140. Next
  141. GetPagesAsJSString = strReturn
  142. End Function
  143. End Class
  144. %>

Powered by TurnKey Linux.