|
- <%
- Class ASPUnitJSONResponder
- Private _
- m_Serializer
-
- Private Sub Class_Initialize()
- Set m_Serializer = New ASPUnitScenarioSerializer
- End Sub
-
- Private Sub Class_Terminate()
- Set m_Serializer = Nothing
- End Sub
-
- Public Property Set Serializer(objValue)
- Set m_Serializer = objValue
- End Property
-
- Public Sub Respond(objModules)
- Response.ContentType = "application/json"
- Response.Write m_Serializer.ToJSON(objModules)
- End Sub
- End Class
-
- ' Private Classes
-
- Class ASPUnitScenarioSerializer
- Function ToJSON(objScenario)
- Dim objStream, _
- objModule, _
- objTest, _
- i, j, _
- strReturn
-
- Set objStream = Server.CreateObject("ADODB.Stream")
-
- objStream.Type = 2 ' adTypeText
- objStream.Mode = 3 ' adModeReadWrite
- objStream.Open
-
- Call objStream.WriteText("{")
- Call objStream.WriteText(JSONNumberPair("testCount", objScenario.TestCount) & ",")
- Call objStream.WriteText(JSONNumberPair("passCount", objScenario.PassCount) & ",")
- Call objStream.WriteText(JSONBooleanPair("passed", objScenario.Passed) & ",")
- Call objStream.WriteText(JSONString("modules") & ":[")
- For i = 0 To (objScenario.Modules.Count - 1)
- Set objModule = objScenario.Modules.Item(i)
-
- Call objStream.WriteText("{")
- Call objStream.WriteText(JSONStringPair("name", objModule.Name) & ",")
- Call objStream.WriteText(JSONNumberPair("testCount", objModule.TestCount) & ",")
- Call objStream.WriteText(JSONNumberPair("passCount", objModule.PassCount) & ",")
- Call objStream.WriteText(JSONNumberPair("failCount", (objModule.FailCount)) & ",")
- Call objStream.WriteText(JSONBooleanPair("passed", objModule.Passed) & ",")
- Call objStream.WriteText(JSONNumberPair("duration", objModule.Duration) & ",")
- Call objStream.WriteText(JSONString("tests") & ":[")
- For j = 0 To (objModule.Tests.Count - 1)
- Set objTest = objModule.Tests.Item(j)
- Call objStream.WriteText("{")
- Call objStream.WriteText(JSONStringPair("name", objTest.Name) & ",")
- Call objStream.WriteText(JSONBooleanPair("passed", objTest.Passed) & ",")
- Call objStream.WriteText(JSONStringPair("description", objTest.Description))
- Call objStream.WriteText("}")
-
- If j < (objModule.Tests.Count - 1) Then
- Call objStream.WriteText(",")
- End If
-
- Set objTest = Nothing
- Next
- Call objStream.WriteText("]")
- Call objStream.WriteText("}")
-
- If i < (objScenario.Modules.Count - 1) Then
- Call objStream.WriteText(",")
- End If
-
- Set objModule = Nothing
- Next
- Call objStream.WriteText("]")
- Call objStream.WriteText("}")
-
- objStream.Position = 0
-
- strReturn = objStream.ReadText()
-
- objStream.Close
- Set objStream = Nothing
-
- ToJSON = strReturn
- End Function
-
- Private Function JSONString(strValue)
- JSONString = """" & JSONStringEscape(strValue) & """"
- End Function
-
- Private Function JSONStringPair(strName, strValue)
- JSONStringPair = JSONString(strName) & ":" & JSONString(strValue)
- End Function
-
- Private Function JSONNumberPair(strName, varValue)
- JSONNumberPair = JSONString(strName) & ":" & varValue
- End Function
-
- Private Function JSONBooleanPair(strName, blnValue)
- JSONBooleanPair = JSONString(strName) & ":" & LCase(blnValue)
- End Function
-
- Private Function JSONStringEscape(strValue)
- Dim strReturn
-
- strReturn = strValue
-
- strReturn = Replace(strReturn, "\", "\\")
- strReturn = Replace(strReturn, """", "\""")
- strReturn = Replace(strReturn, vbLf, "\n")
- strReturn = Replace(strReturn, vbCr, "\n")
- strReturn = Replace(strReturn, vbCrLf, "\n")
- strReturn = Replace(strReturn, vbTab, "\t")
-
- JSONStringEscape = strReturn
- End Function
- End Class
- %>
|