Consolidated ASP Classic MVC framework from best components
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

174 lignes
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.