Consolidated ASP Classic MVC framework from best components
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123 行
3.6KB

  1. <%
  2. Class ASPUnitJSONResponder
  3. Private _
  4. m_Serializer
  5. Private Sub Class_Initialize()
  6. Set m_Serializer = New ASPUnitScenarioSerializer
  7. End Sub
  8. Private Sub Class_Terminate()
  9. Set m_Serializer = Nothing
  10. End Sub
  11. Public Property Set Serializer(objValue)
  12. Set m_Serializer = objValue
  13. End Property
  14. Public Sub Respond(objModules)
  15. Response.ContentType = "application/json"
  16. Response.Write m_Serializer.ToJSON(objModules)
  17. End Sub
  18. End Class
  19. ' Private Classes
  20. Class ASPUnitScenarioSerializer
  21. Function ToJSON(objScenario)
  22. Dim objStream, _
  23. objModule, _
  24. objTest, _
  25. i, j, _
  26. strReturn
  27. Set objStream = Server.CreateObject("ADODB.Stream")
  28. objStream.Type = 2 ' adTypeText
  29. objStream.Mode = 3 ' adModeReadWrite
  30. objStream.Open
  31. Call objStream.WriteText("{")
  32. Call objStream.WriteText(JSONNumberPair("testCount", objScenario.TestCount) & ",")
  33. Call objStream.WriteText(JSONNumberPair("passCount", objScenario.PassCount) & ",")
  34. Call objStream.WriteText(JSONBooleanPair("passed", objScenario.Passed) & ",")
  35. Call objStream.WriteText(JSONString("modules") & ":[")
  36. For i = 0 To (objScenario.Modules.Count - 1)
  37. Set objModule = objScenario.Modules.Item(i)
  38. Call objStream.WriteText("{")
  39. Call objStream.WriteText(JSONStringPair("name", objModule.Name) & ",")
  40. Call objStream.WriteText(JSONNumberPair("testCount", objModule.TestCount) & ",")
  41. Call objStream.WriteText(JSONNumberPair("passCount", objModule.PassCount) & ",")
  42. Call objStream.WriteText(JSONNumberPair("failCount", (objModule.FailCount)) & ",")
  43. Call objStream.WriteText(JSONBooleanPair("passed", objModule.Passed) & ",")
  44. Call objStream.WriteText(JSONNumberPair("duration", objModule.Duration) & ",")
  45. Call objStream.WriteText(JSONString("tests") & ":[")
  46. For j = 0 To (objModule.Tests.Count - 1)
  47. Set objTest = objModule.Tests.Item(j)
  48. Call objStream.WriteText("{")
  49. Call objStream.WriteText(JSONStringPair("name", objTest.Name) & ",")
  50. Call objStream.WriteText(JSONBooleanPair("passed", objTest.Passed) & ",")
  51. Call objStream.WriteText(JSONStringPair("description", objTest.Description))
  52. Call objStream.WriteText("}")
  53. If j < (objModule.Tests.Count - 1) Then
  54. Call objStream.WriteText(",")
  55. End If
  56. Set objTest = Nothing
  57. Next
  58. Call objStream.WriteText("]")
  59. Call objStream.WriteText("}")
  60. If i < (objScenario.Modules.Count - 1) Then
  61. Call objStream.WriteText(",")
  62. End If
  63. Set objModule = Nothing
  64. Next
  65. Call objStream.WriteText("]")
  66. Call objStream.WriteText("}")
  67. objStream.Position = 0
  68. strReturn = objStream.ReadText()
  69. objStream.Close
  70. Set objStream = Nothing
  71. ToJSON = strReturn
  72. End Function
  73. Private Function JSONString(strValue)
  74. JSONString = """" & JSONStringEscape(strValue) & """"
  75. End Function
  76. Private Function JSONStringPair(strName, strValue)
  77. JSONStringPair = JSONString(strName) & ":" & JSONString(strValue)
  78. End Function
  79. Private Function JSONNumberPair(strName, varValue)
  80. JSONNumberPair = JSONString(strName) & ":" & varValue
  81. End Function
  82. Private Function JSONBooleanPair(strName, blnValue)
  83. JSONBooleanPair = JSONString(strName) & ":" & LCase(blnValue)
  84. End Function
  85. Private Function JSONStringEscape(strValue)
  86. Dim strReturn
  87. strReturn = strValue
  88. strReturn = Replace(strReturn, "\", "\\")
  89. strReturn = Replace(strReturn, """", "\""")
  90. strReturn = Replace(strReturn, vbLf, "\n")
  91. strReturn = Replace(strReturn, vbCr, "\n")
  92. strReturn = Replace(strReturn, vbCrLf, "\n")
  93. strReturn = Replace(strReturn, vbTab, "\t")
  94. JSONStringEscape = strReturn
  95. End Function
  96. End Class
  97. %>

Powered by TurnKey Linux.